Bloques de creación > Bloques de creación comunes > Bloque de creación de conexión de base de datos > Envío y validación de eventos anteriores y posteriores a la acción y eventos al realizar la acción
Envío y validación de eventos anteriores y posteriores a la acción y eventos al realizar 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.DBConnection.PreActionValidator) antes de que se actualice la base de datos. Si la validación se realiza correctamente, la base de datos se actualiza y se llama a la cosa del procesador al realizar la acción (PTC.DBConnection.OnActionProcessor). Tras una actualización correcta de la base de datos, se llama a la cosa del controlador posterior a la acción (PTC.DBConnection.PostActionHandler) en otro subproceso, sin que afecte a la ejecución de la acción.
El siguiente diagrama muestra el diseño de alto nivel del validador anterior a la acción, del procesador al realizar la acción y del controlador posterior a la acción:
Diagrama del diseño de nivel superior del validador previo a la acción y del controlador posterior a la acción.
El siguiente diagrama muestra la secuencia del remitente para el validador anterior a la acción, el procesador al realizar la acción y el controlador posterior a la acción cuando la validación anterior a la acción se lleva a cabo correctamente.
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.
Diagrama en el que se muestra la secuencia del remitente cuando la validación anterior a la acción falla.
La cosa del validador anterior a la acción (PTC.DBConnection.PreActionValidator) hereda la plantilla de cosa del validador anterior a la acción (PTC.DBConnection.PreActionValidator_TT). La cosa del procesador al realizar la acción (PTC.DBConnection.OnActionProcessor) hereda la plantilla de cosa del procesador al realizar la acción (PTC.DBConnection.OnActionProcessor_TT). De forma similar, la cosa del controlador posterior a la acción (PTC.DBConnection.PostActionHandler) hereda la plantilla de cosa del controlador posterior a la acción (PTC.DBConnection.PostActionHandler_TT). 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 y los eventos al realizar 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 la validación anterior a la acción se realiza correctamente, la base de datos se actualiza y los servicios al realizar la acción se activan (OnCreateAction, OnDeleteAction, OnUpdateAction). A continuación, el servicio al realizar la acción ejecuta el servicio CallServices, que lee la configuración del procesador al realizar la acción. Si se ha configurado un servicio para la definición de datos y la acción, se envía ese servicio al realizar la acción.
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 una planta. Puede utilizar estas implementaciones como modelos para implementar sus propios servicios anteriores y posteriores a la acción.
Ejemplo de servicios anteriores a la acción
En esta sección se describe el funcionamiento de los servicios anteriores a la acción mediante acciones de órdenes de trabajo como ejemplo.
En la cosa PTC.JobOrderImpl.Manager se encuentran los siguientes servicios: JobOrderPreCreate, JobOrderPreUpdate, ValidateDispatchStatus y ValidateJobOrderSite.
Cuando se crea o actualiza una orden 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 JobOrderPreCreate o JobOrderPreUpdate se llama según la acción que se esté realizando. A su vez, esta acción llama a los servicios ValidateDispatchStatus y ValidateJobOrderSite. Si se están creando o actualizando varias órdenes 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 ValidateJobOrderSite para obtener un ejemplo de cómo producir una excepción cuando falla una validación.
Ejemplo de servicios al realizar la acción
En la cosa PTC.JobOrderImpl.Manager se encuentran los siguientes servicios: OnCreateJobOrder, OnUpdateJobOrder, y UpdateJobOrderExecutionResponsesForJobOrders.
Al crear o actualizar una orden de trabajo, se llama al servicio OnCreateJobOrder o OnUpdateJobOrder en función de la acción que se esté realizando. A su vez, esta acción llama al servicio UpdateJobOrderExecutionResponsesForJobOrders.
Ejemplo de servicios posteriores a la acción
En la cosa PTC.SCA.SCO.DefaultProductionOrderManager se encuentran los siguientes servicios: WorkDefinitionPostCreate, WorkDefinitionPostUpdate, y 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 y servicios al realizar la acción
Las cosas PTC.DBConnection.PreActionValidator, PTC.DBConnection.OnActionProcessor y PTC.DBConnection.PostActionHandler no son editables.
Procedimiento para añadir servicios anteriores y posteriores a la acción y servicios al realizar la acción adicionales:
1. Para servicios adicionales anteriores a la acción, duplique la cosa PTC.DBConnection.PreActionValidator. Para servicios al realizar la acción adicionales, duplique PTC.DBConnection.OnActionProcessor. Para servicios de controlador posteriores a la acción adicionales, duplique la cosa PTC.DBConnection.PostActionHandler. Para este procedimiento, se hará referencia a estas cosas duplicadas como las cosas PTC.DBConnection.PreActionValidator_Duplicate, PTC.DBConnection.OnActionProcessor_Duplicate y PTC.DBConnection.PostActionHandler_Duplicate, respectivamente. Para obtener más información, consulte Duplicación de entidades del bloque de creación.
2. Cree los servicios anteriores y posteriores a la acción y servicios al realizar la acción en la cosa del administrador del bloque de creación al que pertenece la definición de datos. Por ejemplo, cree servicios anteriores y posteriores a la acción y servicios al realizar la acción para órdenes de trabajo en la cosa PTC.JobOrderImpl.Manager.
3. Añada una nueva entrada a la tabla de configuración ActionConfigurationSettings en la página Configuración de la cosa PTC.DBConnection.PreActionValidator_Duplicate, PTC.DBConnection.OnActionProcessor_Duplicate o PTC.DBConnection.PostActionHandler_Duplicate, según corresponda:
DataShapeName: permite buscar y seleccionar el nombre de la definición de datos a la cual se aplica este servicio anterior o posterior a la acción o este servicio al realizar 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: permite buscar y seleccionar el nombre de la cosa del administrador en la que reside el servicio, como PTC.JobOrderImpl.Manager.
ServiceName: introduzca el nombre del servicio que CallServices va a enviar. 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.DBConnection.DataChange.
4. Pulse en Añadir y a continuación pulse en Guardar para guardar los cambios en la configuración.
5. Navegue hasta la cosa de base de datos configurada para el sistema, como PTC.DBConnection.MSSQLDatabase.
* 
La cosa de base de datos configurada para el sistema se puede encontrar en la tabla de configuración DefaultDatabaseConfiguration de la página Configuración de PTC.DBConnection.Manager.
6. En la página Configuración de la cosa de base de datos, en DatabaseValidationConfigurationTable, actualice los campos PreActionValidator, PostActionHandler y OnActionProcessor 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.
¿Fue esto útil?