Публичное пространство
Сохранение xml-копий загружаемых данных
Товары
Сохранение копий сообщений товаров
Чтобы, сохранять xml-копию импортируемых товаров через веб-сервис, включите настройку goods.catalog.imported.directory в файле, убрав #:
При импорте товаров из Set ESB на сервере Centrum и Retail при включении параметра goods.catalog.imported.directory будет происходить получение из топиков файлов XML с товарами.
https://crystals.atlassian.net/browse/SRTS-2544
https://crystals.atlassian.net/browse/CR-11154
10.4.2.0
Windows: {Disk}\Папка_SetRetail10\standalone\configuration\modules\erp-integration\Products.properties
Linux: /var/lib/jboss/standalone/configuration/modules/erp-integration/Products.properties
goods.catalog.interval=60000
goods.catalog.import.plugin.read=ERPFileReader
goods.catalog.import.plugin.prepare=InputStreamPrepare
goods.sending.interval=10000
#goods.catalog.imported.directory=E:\\reports\\importedGC
goods.catalog.export.file.prefix=goods-catalog
goods.catalog.package=ru.crystals.setretailx.products.catalogТаким образом при импорте данных через веб-сервис E:\reports\importedGC (каталог можно изменять):
Linux: \var\lib\jboss\reports\importedGC.
Windows: {Disk}:\Reports\importedGC.
Управление сроками хранения данных в папке сохранения сообщений (очистка папки)
https://crystals.atlassian.net/browse/SRTS-1393
https://crystals.atlassian.net/browse/CR-7779
10.3.22.0
Настройки позволяют управлять хранением файлов сообщений в папке.
goods.catalog.imported.directory.clean.days- срок хранения файлов в днях.goods.catalog.imported.directory.clean.time- время выполнения подрезки файлов.
Логика работы
При выполнении задачи удаления более 1 часа, она останавливается с записью об этом в лог сервера, что сработал таймаут.
Если параметры закомментированы символом #? значит, они никак не действуют.
Если указана только дата или только время подрезки, или значения указаны некорректно (например, случайные символы, буквы, пробелы) подрезка не сработает. При чтении некорректных отправляется сообщение об этом в лог сервера при каждом его запуске (после запуска).
При успешном выполнении подрезки сохраняется запись об этом в лог сервера с указанием, сколько файлов было удалено и из какого каталога.
При неуспешном выполнении подрезки должна сохраняется в лог с указанием причины (нет прав на каталог, отсутствуют файлы для подрезки, сработал таймаут).
Примеры записи событий в логе
Успешное удаление
04.04 11:02:17 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner started successfully,days to clean after 1, first time 2023-04-04 11:09:00
04.04 11:09:00 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner onTimeout started! 2023-04-04 11:09:00
04.04 11:09:00 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner: onTimeout: going to delete 7 files!
04.04 11:09:00 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner: onTimeout: deleted 7files!
04.04 11:09:00 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner onTimeout finished! 2023-04-04 11:09:00Пустые значения параметров
04.04 11:27:06 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner not started because "goods.catalog.imported.directory" is empty!
04.04 11:27:06 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner not started because "goods.catalog.imported.directory.clean.days" is empty!
04.04 11:27:06 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner not started because "goods.catalog.imported.directory.clean.time" is empty or can't be parsed!
Удаление с ошибкой
04.04 13:37:01 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner started successfully, days to clean after 1, first time 2023-04-04 13:40:00
04.04 13:40:00 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner onTimeout started! 2023-04-04 13:40:00
04.04 13:40:00 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner: onTimeout: going to delete 3 files!
04.04 13:40:00 WARN [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner: onTimeout: can't delete goods-catalog_04-04-2023_10-46-28_1.xml, error - [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner.onTimeout(ImportedGoodCatalogCleaner.java:108), sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method), sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62), sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43), java.lang.reflect.Method.invoke(Method.java:498), org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374), org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127), org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:137), org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:34), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53), org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:34), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374), org.jboss.as.ejb3.concurrency.ContainerManagedConcurrencyInterceptor.processInvocation(ContainerManagedConcurrencyInterceptor.java:104), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:101), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61), org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.component.singleton.SingletonComponentInstanceAssociationInterceptor.processInvocation(SingletonComponentInstanceAssociationInterceptor.java:53), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228), org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304), org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:76), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61), org.jboss.as.ejb3.timerservice.TimedObjectInvokerImpl.callTimeout(TimedObjectInvokerImpl.java:104), org.jboss.as.ejb3.timerservice.TimedObjectInvokerImpl.callTimeout(TimedObjectInvokerImpl.java:114), org.jboss.as.ejb3.timerservice.task.TimerTask.callTimeout(TimerTask.java:177), org.jboss.as.ejb3.timerservice.task.TimerTask.run(TimerTask.java:149), java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511), java.util.concurrent.FutureTask.run(FutureTask.java:266), java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149), java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624), java.lang.Thread.run(Thread.java:750), org.jboss.threads.JBossThread.run(JBossThread.java:122)]!
04.04 13:40:00 WARN [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner: onTimeout: can't delete goods-catalog_04-04-2023_11-06-03.xml, error - [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner.onTimeout(ImportedGoodCatalogCleaner.java:108), sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method), sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62), sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43), java.lang.reflect.Method.invoke(Method.java:498), org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374), org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:127), org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:137), org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:34), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53), org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:34), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374), org.jboss.as.ejb3.concurrency.ContainerManagedConcurrencyInterceptor.processInvocation(ContainerManagedConcurrencyInterceptor.java:104), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:101), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61), org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.component.singleton.SingletonComponentInstanceAssociationInterceptor.processInvocation(SingletonComponentInstanceAssociationInterceptor.java:53), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228), org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304), org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:76), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45), org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288), org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61), org.jboss.as.ejb3.timerservice.TimedObjectInvokerImpl.callTimeout(TimedObjectInvokerImpl.java:104), org.jboss.as.ejb3.timerservice.TimedObjectInvokerImpl.callTimeout(TimedObjectInvokerImpl.java:114), org.jboss.as.ejb3.timerservice.task.TimerTask.callTimeout(TimerTask.java:177), org.jboss.as.ejb3.timerservice.task.TimerTask.run(TimerTask.java:149), java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511), java.util.concurrent.FutureTask.run(FutureTask.java:266), java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149), java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624), java.lang.Thread.run(Thread.java:750), org.jboss.threads.JBossThread.run(JBossThread.java:122)]!
04.04 13:40:00 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner: onTimeout: deleted 1 files!
04.04 13:40:00 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner onTimeout finished! 2023-04-04 13:40:00 Примеры неправильного выставления времени
goods.catalog.imported.directory.clean.time=13
04.04 14:09:04 WARN [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner: the property "goods.catalog.imported.directory.clean.time" is not a time!
04.04 14:09:04 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner not started because "goods.catalog.imported.directory.clean.time" is empty or can't be parsed!goods.catalog.imported.directory.clean.time=SIX O'CLOCK
04.04 14:16:26 WARN [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner: the property "goods.catalog.imported.directory.clean.time" is not valid!
04.04 14:16:26 DEBUG [ru.crystals.ERPIntegration.ejb.ImportedGoodCatalogCleaner] ImportedGoodCatalogCleaner not started because "goods.catalog.imported.directory.clean.time" is empty or can't be parsed!
Рекламные акции
1. Чтобы, сохранять xml-копию импортируемых товаров через веб-сервис, добавьте настройку import.actions.save-to.dir в файле:
Windows: {Disk}\Папка_SetRetail10\standalone\configuration\modules\erp-integration\Discounts.properties
Linux: /var/lib/jboss/standalone/configuration/modules/erp-integration/Discounts.properties
2. Откройте на редактирование Discounts.properties и добавьте строку с папкой для сохранения копий web-сообщений
import.actions.save-to.dir=<путь к папке>
3. Перезапустите службу сервера SetRetail.
4. Произведите импорт рекламных акций и проверьте результат: