Personalización del contenido y el acceso a la información > 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 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, la acción no se completa 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 borrado, 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 alguna parte de la validación falla, la acción completa no se realiza correctamente.
Si se completa una operación de creación, actualización o borrado, 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.
Ejemplo
Por ejemplo, los servicios anteriores y posteriores a la acción de definición de trabajo funcionan del modo siguiente:
En la cosa de 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 una de ellas tiene un estado de ejecución no válido especificado, la acción completa no se realiza correctamente. Defina el Nivel de registro en Depurar para ver los detalles de los servicios de validación y los errores de Supervisión > ScriptLog. Consulte el servicio EnumerationValidation para obtener un ejemplo de cómo producir una excepción cuando falla una validación.
En la cosa de 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.
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.
Action: 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 la 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. Este parámetro de entrada 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.