Общие компоновочные блоки > Компоновочный блок подключения базы данных > Диспетчеризация и проверка события перед началом действия, во время действия и после его завершения
Диспетчеризация и проверка события перед началом действия, во время действия и после его завершения
Каждый раз при инициировании действия создания, обновления или удаления перед проверкой базы данных вызывается вещь предварительного валидатора (PTC.DBConnection.PreActionValidator). Если проверка выполнена успешно, то база данных обновляется, и вызывается вещь обработчика выполняемого действия (PTC.DBConnection.OnActionProcessor). После успешного обновления базы данных, в другом потоке вызывается вещь последующего обработчика (PTC.DBConnection.PostActionHandler). Это не влияет на выполнение действия.
На следующей схеме показана высокоуровневая конструкция предварительного валидатора, обработчика выполняемого действия и последующего обработчика:
Схема предварительного валидатора и последующего обработчика высокого уровня разработки.
На следующей схеме показана последовательность действий диспетчера предварительного валидатора, обработчика выполняемого действия и последующего обработчика в случае успешной предварительной проверки.
Схема, показывающая последовательность действий диспетчера предварительного валидатора и последующего обработчика в случае успешной предварительной проверки.
Если не удалось выполнить проверку, действие не завершается, и база данных не обновляется. На следующей схеме показана последовательность действий диспетчера при сбое предварительной проверки.
Схема, показывающая последовательность действий при сбое проверки предварительного валидатора.
Вещь предварительного валидатора по умолчанию (PTC.DBConnection.PreActionValidator) наследует шаблон вещи предварительного валидатора (PTC.DBConnection.PreActionValidator_TT). Вещь обработчика выполняемого действия (PTC.DBConnection.OnActionProcessor) наследует шаблон вещи обработчика выполняемого действия по умолчанию (PTC.DBConnection.OnActionProcessor_TT). Таким же образом вещь последующего обработчика (PTC.DBConnection.PostActionHandler) наследует шаблон вещи последующего обработчика (PTC.DBConnection.PostActionHandler_TT). Эти шаблоны вещей реализуют необходимые профили вещей для инициирования предварительных событий, событий во время действия и после его завершения в диспетчере.
При инициации таких действий, как создание, обновление или удаление, запускается соответствующий сервис предварительной проверки в предварительном валидаторе (PreCreateAction, PreUpdateAction, PreDeleteAction). Служба предварительного действия в свою очередь запускает сервис CallServices, который проверяет изменения данных и считывает конфигурацию с предварительного валидатора. Если есть служба, настроенная для этого действия и профиля данных, то CallServices производит диспетчеризацию надлежащих служб проверки. Если не удалось выполнить часть проверки, то действие не выполняется.
Если предварительная проверка прошла успешно, то база данных обновится и запустятся службы, выполняемые во время действия (OnCreateAction, OnDeleteAction, OnUpdateAction). Во время действия выполняется сервис CallServices, считывающий конфигурацию в обработчике выполняемого действия. Если сервис настроен на этот профиль данных и действие, то такой сервис выполняемого действия является диспетчерезованным.
Если такие действия, как создание, обновление или удаление завершены, то происходит инициация последующего обработчика (PostCreateAction, PostUpdateAction, PostDeleteAction). Служба последующего действия выполняет сервис CallServices, который считывает конфигурацию в последующем обработчике по умолчанию. Если сервис настроен для этого действия и профиля данных, то происходит диспетчеризация службы последующего действия.
Сервисы предоставляются на валидаторе до действия и на обработчике после действия, которые запускаются всякий раз при создании или обновлении определения работы, смены или сайта. Эти реализации можно использовать в качестве моделей для внедрения ваших собственных сервисов перед началом действия и после его окончания.
Пример предварительного сервиса
В этом разделе описано, как работают предварительные сервисы на примере действий порядка работы.
Следующие сервисы находятся в вещи PTC.JobOrderImpl.Manager: JobOrderPreCreate, JobOrderPreUpdate, ValidateDispatchStatus и ValidateJobOrderSite.
После создания или обновления порядка работы, а также указания состояния выполнения, состояние выполнения проверяется перед тем, как продолжить действие. В зависимости от выполняемого действия вызывается служба JobOrderPreCreate или JobOrderPreUpdate. Это действие, в свою очередь, вызывает сервисы ValidateDispatchStatus и ValidateJobOrderSite. Если создание или обновление нескольких порядков работы происходит в одно действие, и у одного из порядков есть недопустимое состояние выполнения, то действие не может быть выполнено. Установите Уровень журнала на Отладка, чтобы просматривать сведения сервисов проверки и ошибки в Мониторинг > ScriptLog. Обратитесь к сервису ValidateJobOrderSite для просмотра примера того, как выводится ошибка при сбое проверки.
Пример сервисов выполняемого действия
Следующие сервисы находятся в вещи PTC.JobOrderImpl.Manager: OnCreateJobOrder, OnUpdateJobOrder и UpdateJobOrderExecutionResponsesForJobOrders.
После того, как порядок работы успешно создан или обновлен, в зависимости от выполняемого действия, вызывается сервис OnCreateJobOrder или OnUpdateJobOrder. Это действие в свою очередь вызывает сервис UpdateJobOrderExecutionResponsesForJobOrders.
Пример последующих сервисов
Следующие сервисы находятся в вещи PTC.SCA.SCO.DefaultProductionOrderManager: WorkDefinitionPostCreate, WorkDefinitionPostUpdate и LogWorkDefinitionExecutionStatusChange.
После того, как определение работы успешно создано или обновлено, в зависимости от выполняемого действия, вызывается служба WorkDefinitionPostCreate или WorkDefinitionPostUpdate. Это действие, в свою очередь, вызывает службу LogWorkDefinitionExecutionStatusChange, которая вносит в журнал следующие сведения о действии: агент, ответственный за действие, созданный или обновленный UID определения работы, а также значение и UID для состояния выполнения. Эти сведения можно просмотреть в Мониторинг > ScriptLog, после того, как для Уровень журнала установлено состояние Отладка.
Добавление сервисов предварительных, выполняемых и последующих действий:
Вещи PTC.DBConnection.PreActionValidator и PTC.DBConnection.OnActionProcessor PTC.DBConnection.PostActionHandler не редактируются.
Чтобы добавить дополнительные сервисы предварительных, выполняемых и последующих действий:
1. Для дополнительных предварительных сервисов продублируйте вещь PTC.DBConnection.PreActionValidator. Для дополнительных сервисов выполняемых действий сделайте дубликат PTC.DBConnection.OnActionProcessor. Для дополнительных сервисов последующего обработчика продублируйте вещь PTC.DBConnection.PostActionHandler. Для данной процедуры эти дублированные вещи будут называться соответственно PTC.DBConnection.PreActionValidator_Duplicate, PTC.DBConnection.OnActionProcessor_Duplicate и PTC.DBConnection.PostActionHandler_Duplicate. Дополнительные сведения см. в разделе Дублирование сущностей компоновочных блоков.
2. Создайте сервисы предварительных, выполняемых и последующих действий в вещи диспетчера для компоновочного блока, к которому принадлежит профиль данных. Например, создайте сервисы предварительных, выполняемых и последующих действий для порядка работы в вещи PTC.JobOrderImpl.Manager.
3. При необходимости добавьте запись в таблицу конфигурации ActionConfigurationSettings на странице Конфигурация для вещи PTC.DBConnection.PreActionValidator_Duplicate, вещи PTC.DBConnection.OnActionProcessor_Duplicate или вещи PTC.DBConnection.PostActionHandler_Duplicate соответственно:
DataShapeName: найдите и выберите наименование профиля данных, для которого применяются службы предварительного выполняемого и последующего действия.
Action: введите действие: Создать, Обновить или Удалить. Данное значение чувствительно к регистру, оно должно быть записано точно так, как представлено здесь.
ThingName: найдите и выберите наименование вещи диспетчера, в которой находится сервис, например PTC.JobOrderImpl.Manager.
ServiceName: введите наименование службы, которая должна будет пройти диспетчеризацию CallServices. Если реализация выполняется несколькими службами, укажите первую службу, которая вызывает все остальные. Данное значение чувствительно к регистру, оно должно точно соответствовать наименованию службы.
* 
В то время, как реализация может включать в себя серии служб, указанные в таблице конфигураций ActionConfigurationSettings и прошедшие диспетчирезацию CallServices службы должны включать в себя входной параметр с именем DataChanges. Этот входной параметр является таблицей данных профиля PTC.DBConnection.DataChange.
4. Нажмите Добавить, затем нажмите Сохранить, чтобы сохранить изменения конфигурации.
5. Перейдите к вещи базы данных, настроенной для вашей системы, например, PTC.DBConnection.MSSQLDatabase.
* 
Вещь базы данных, настроенную для вашей системы, можно найти в таблице конфигурации DefaultDatabaseConfiguration на странице Конфигурация в PTC.DBConnection.Manager.
6. На странице Конфигурация для вещи базы данных DatabaseValidationConfigurationTable обновите поля PreActionValidator, PostActionHandler и OnActionProcessor, чтобы указать дубликаты вещей, созданных в шаге 1.
7. Нажмите Сохранить, чтобы сохранить изменения конфигурации элемента базы данных.
Было ли это полезно?