Envío y validación de eventos anteriores y posteriores a la acción
Envío y validación de eventos anteriores y posteriores a la acción
Cada vez que se inicia una acción de crear, actualizar o borrar, se llama a la cosa del validador anterior a la acción (PTC.SCA.SCO.PreActionValidator) antes de que se actualice la base de datos. Si la validación se realiza correctamente, la base de datos se actualiza y la acción se completa. Tras una actualización correcta de la base de datos, se llama a la cosa del controlador posterior a la acción (PTC.SCA.SCO.PostActionHandler) en otro subproceso, sin que ello afecte a la ejecución de la acción. El siguiente diagrama muestra la secuencia del remitente para el validador anterior a la acción y el controlador posterior a la acción cuando la validación anterior a la acción se lleva a cabo con éxito.
Si la validación falla, no se puede completar la acción y la base de datos no se actualiza. El siguiente diagrama muestra la secuencia de remitente cuando se produce un fallo en la validación anterior a la acción.
La cosa del validador anterior a la acción (PTC.SCA.SCO.PreActionValidator) hereda la plantilla de cosa del validador anterior a la acción (PTC.SCA.SCO.PreActionValidatorThingTemplate). De forma similar, la cosa del controlador posterior a la acción (PTC.SCA.SCO.PostActionHandler) hereda la plantilla de cosa del controlador posterior a la acción (PTC.SCA.SCO.PostActionHandlerThingTemplate). Estas plantillas de cosa implementan las definiciones de cosa necesarias para desencadenar el envío de los eventos anteriores y posteriores a la acción.
Cuando se inicia una operación de creación, actualización o eliminación, se desencadena el servicio anterior a la acción adecuado en el validador anterior a la acción (PreCreateAction, PreUpdateAction o PreDeleteAction). El servicio anterior a la acción ejecuta a su vez el servicio CallServices, que revisa los cambios en los datos y lee la configuración del validador anterior a la acción. Si hay un servicio configurado para esa acción y esa definición de datos, CallServices remite los servicios de validación adecuados. Si cualquier parte de la validación falla, se impide que la acción se complete.
Si se completa una operación de creación, actualización o eliminación, se desencadena el controlador posterior a la acción (PostCreateAction, PostUpdateAction o PostDeleteAction). A continuación, el servicio posterior a la acción ejecuta el servicio CallServices, que lee la configuración en el controlador posterior a la acción por defecto. Si un servicio está configurado para esa definición de datos y esa acción, se remitirá dicho servicio posterior a la acción.
Los servicios se proporcionan en el validador previo a la acción y en el controlador posterior a la acción, que se ejecutan cada vez que se crea o se actualiza una definición de trabajo, un turno o un sitio. Puede utilizar estas implementaciones como modelos para implementar sus propios servicios anteriores y posteriores a la acción.
Por ejemplo, los servicios anteriores y posteriores a la acción de definición de trabajo funcionan del modo siguiente:
En la cosa del validador anterior a la acción: WorkDefinitionPreCreate, WorkDefinitionPreUpdate, ValidateWorkDefinitionExecutionStatus y EnumerationValidation
Cuando se crea o actualiza una definición de trabajo, y se especifica un estado de ejecución, dicho estado se valida antes de permitir que la acción continúe. El servicio WorkDefinitionPreCreate o WorkDefinitionPreUpdate se llama según la acción que se esté realizando. Esa acción llama a su vez al servicio ValidateWorkDefinitionExecutionStatus, que llama al servicio EnumerationValidation. Si se están creando o actualizando varias definiciones de trabajo en una única acción y cualquiera de ellas tiene un estado de ejecución no válido especificado, la acción no se puede completar. Se pueden ver los detalles de los servicios de validación y los errores en Supervisión > ScriptLog, después de definir el Nivel de registro en Depurar. Consulte el servicio EnumerationValidation para obtener un ejemplo de cómo producir una excepción cuando falla una validación.
En la cosa del controlador posterior a la acción por defecto: WorkDefinitionPostCreate, WorkDefinitionPostUpdate, LogWorkDefinitionExecutionStatusChange
Tras crear o actualizar correctamente una definición de trabajo, se llama el servicio WorkDefinitionPostCreate o WorkDefinitionPostUpdate en función de la acción que se esté realizando. Esta acción llama a su vez al servicio LogWorkDefinitionExecutionStatusChange, que registra los siguientes detalles acerca de la acción: el agente responsable de la acción, el UID de la definición de trabajo que se ha creado o actualizado, y el UID y el valor del estado de ejecución. Estos detalles pueden verse en Supervisión > ScriptLog, después de definir el Nivel de registro en Depurar.
Adición de servicios anteriores y posteriores a la acción
Las cosas PTC.SCA.SCO.PreActionValidator y PTC.SCA.SCO.PostActionHandler no son editables. Para añadir nuevos servicios anteriores y posteriores a la acción, duplique la cosa correspondiente, añada los nuevos servicios en la cosa duplicada y actualice la configuración de la cosa de base de datos para que el sistema haga referencia a la cosa duplicada.
Procedimiento para añadir servicios anteriores o posteriores a la acción adicionales:
1. Para servicios adicionales anteriores a la acción, duplique la cosa PTC.SCA.SCO.PreActionValidator. Para servicios de controlador posteriores a la acción, duplique la cosa PTC.SCA.SCO.PostActionHandler. Para este procedimiento, se hará referencia a estas cosas duplicadas como PTC.SCA.SCO.PreActionValidator_Duplicate y PTC.SCA.SCO.PostActionHandler_Duplicate, respectivamente.
2. Cree los servicios anteriores a la acción en la cosa PTC.SCA.SCO.PreActionValidator_Duplicate. Cree los servicios posteriores a la acción en la cosa PTC.SCA.SCO.PostActionHandler_Duplicate.
3. Añada una nueva entrada a la tabla de configuración ActionConfigurationSettings en la página Configuración de la cosa PTC.SCA.SCO.PreActionValidator_Duplicate o la cosa PTC.SCA.SCO.PostActionHandler_Duplicate, según corresponda:
DataShapeName: busque y seleccione el nombre de la definición de datos a la cual se aplica esta acción anterior o posterior a la acción.
Acción: introduzca la acción: Create, Update o Delete. El valor distingue entre mayúsculas y minúsculas y debe introducirse exactamente tal como se presenta aquí.
ThingName: busque y seleccione el nombre de la cosa en la que reside el servicio, por ejemplo PTC.SCA.SCO.PreActionValidator_Duplicate o PTC.SCA.SCO.PostActionHandler_Duplicate.
ServiceName: introduzca el nombre del servicio que CallServices va a remitir. Si su implementación consta de múltiples servicios, introduzca el servicio inicial que llama a los demás. El valor distingue entre mayúsculas y minúsculas y debe coincidir exactamente con el nombre del servicio.
* 
Aunque su implementación puede incluir una serie de servicios, el servicio especificado en la tabla de configuración ActionConfigurationSettings y enviado por CallServices debe incluir un parámetro de entrada denominado DataChanges, que es una infotable de la definición de datos PTC.SCA.SCO.DataChange.
4. Pulse en Añadir y a continuación pulse en Guardar para guardar los cambios en la configuración.
5. Vaya hasta la cosa de base de datas configurada para el sistema, por ejemplo PTC.SCA.SCO.PostgresDatabase o PTC.SCA.SCO.MSSQLDatabase.
* 
La cosa de base de datos configurada para el sistema se encuentra en la página Configuración de la cosa de configuración del punto de inicio (PTC.Factory.C_LaunchPointConfigurationThing_[versión]).
6. En la página Configuración de la cosa de base de datos, en DatabaseValidationConfigurationTable, actualice los campos PreActionValidator y PostActionHandler para que apunten a las cosas duplicadas creadas en el paso 1.
7. Pulse en Guardar para guardar los cambios en la configuración de la cosa de base de datos.