De manera predeterminada, sólo los flujos de trabajo de aprobación se instrumentan para generar registros de auditoría. En esta sección se explica cómo utilizar la aplicación com.waveset.session.WorkflowServices para generar eventos de auditoría adicionales a partir de cualquier proceso de flujo de trabajo.
Quizá necesite más eventos de auditoría si debe producir informes sobre los flujos de trabajo personalizados. En Modificación de flujos de trabajo para registrar eventos de auditoría estándar se explica cómo agregar eventos de auditoría a los flujos de trabajo.
También es posible agregar eventos de auditoría especiales a los flujos de trabajo para los informes de flujo de trabajo (Informes de flujo de trabajo). Los informes de flujo de trabajo indican cuánto tiempo duran los flujos de trabajo completos. Para almacenar los datos que se utilizan en los cálculos de tiempo se necesitan eventos de auditoría especiales. En Modificación de flujos de trabajo para registrar eventos de auditoría de temporización se explica cómo agregar eventos de auditoría de temporización a los flujos de trabajo.
La aplicación com.waveset.session.WorkflowServices genera eventos de auditoría a partir de cualquier proceso de flujo de trabajo. En la Tabla 10–1 se describen los argumentos disponibles para esta aplicación.
Tabla 10–1 Argumentos para com.waveset.session.WorkflowServices
Argumento |
Tipo |
Descripción |
---|---|---|
op |
Cadena |
Operación para WorkflowServices. Debe configurarse en audit o auditWorkflow. Use audit para la auditoría de flujos de trabajo estándar. Use auditWorkflow para almacenar los eventos de auditoría de temporización que se utilizan en los cálculos de tiempo. Requerido. |
type |
Cadena |
Nombre del tipo de objeto que se audita. Los tipos de objeto auditables se indican en la Tabla B–5. Se necesita para registrar eventos de auditoría estándar. |
action |
Cadena |
Nombre de la acción realizada. Las acciones auditables se indican en la Tabla B–6. Requerido. |
status |
Cadena |
Nombre del estado de la acción especificada. El estado se indica en la Tabla B–7 (dentro de la columna Resultados). Se necesita para registrar eventos de auditoría estándar. |
name |
Cadena |
Nombre del objeto al que afecta la acción especificada. Se necesita para registrar eventos de auditoría estándar. |
resource |
Cadena |
(Opcional) Nombre del recurso donde reside el objeto que se va a modificar. |
accountId |
Cadena |
(Opcional) ID de cuenta que se va a modificar. Debe ser un nombre de cuenta de recurso nativo. |
error |
Cadena |
(Opcional) Cadena de error localizada que se adjunta a los fallos. |
reason |
Cadena |
(Opcional) Nombre del objeto ReasonDenied, que se asigna a un mensaje internacional descriptivo de las causas de fallo habituales. |
attributes |
Asignación |
(Opcional) Asignación de nombres de atributo y valores que se han añadido o modificado. |
parameters |
Asignación |
(Opcional) Asigna hasta cinco nombres o valores adicionales relevantes para un evento. |
organizations |
Lista |
(Opcional) Lista de los nombres o ID de las organizaciones donde se situará este evento. Sirve para establecer el ámbito organizativo del registro de auditoría. Si falta, el controlador intenta averiguar la organización basándose en el tipo y el nombre. Si no consigue averiguar la organización, el evento se incluye en la organización superior, que ocupa el máximo nivel de la jerarquía organizativa. |
originalAttributes |
Asignación |
(Opcional) Asignación de antiguos valores de atributo. Los nombres deben coincidir con los indicados en el argumento attributes. Servirá cualquier valor anterior que quiera guardar en el registro de auditoría. |
Para crear un evento de auditoría estándar en un flujo de trabajo, agréguele el siguiente elemento <Activity>:
<Activity name=’createEvent’>
A continuación, anide en <Activity> un elemento <Action> que referencie la aplicación com.waveset.session.WorkflowServices:
<Action class=’com.waveset.session.WorkflowServices’>
Anide en <Action> los elementos <Argument> requeridos y opcionales. La Tabla 10–1 contiene la lista de argumentos.
Para registrar eventos de auditoría estándar, el argumento op debe configurarse en audit.
Ejemplos de flujo de trabajo contiene el código mínimo requerido hasta para crear un evento de auditoría.
El ejemplo siguiente muestra una actividad de flujo de trabajo sencilla y la generación de un evento que generará una actividad de eliminación de recursos denominada ADSIResource1, realizada por ResourceAdministrator.
<Activity name=’createEvent’> <Action class=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’audit’/> <Argument name=’type’ value=’Resource’/> <Argument name=’action’ value=’Delete’/> <Argument name=’status’ value=’Success’/> <Argument name=’subject’ value=’ResourceAdministrator’/> <Argument name=’name’ value=’ADSIResource1’/> </Action> <Transition to=’end’/> </Activity> |
El siguiente ejemplo muestra cómo agregar atributos específicos a un flujo de trabajo que rastrea los cambios aplicados por cada usuario en un proceso de aprobación hasta un nivel detallado. Esta adición suele seguir a una acción ManualAction que solicita entrada al usuario.
ACTUAL_APPROVER se configura en el formulario y en el flujo de trabajo (en caso de aprobar desde la tabla de aprobaciones) en función de la persona que realmente ha dado la aprobación. APPROVER identifica la persona a la que se había asignado.
<Action name=’Audit the Approval’ application=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’audit’/> <Argument name=’type’ value=’User’/> <Argument name=’name’ value=’$(CUSTOM_DESCRIPTION)’/> <Argument name=’action’ value=’approve’/> <Argument name=’accountId’ value=’$(accountId)’/> <Argument name=’status’ value=’success’/> <Argument name=’resource’ value=’$(RESOURCE_IF_APPLICABLE)’/> <Argument name=’loginApplication’ value=’$(loginApplication)’/> <Argument name=’attributes’> <map> <s>fullname</s><ref>user.accounts[Lighthouse].fullname</ref> <s>jobTitle</s><ref>user.accounts[Lighthouse].jobTitle</ref> <s>location</s><ref>user.accounts[Lighthouse].location</ref> <s>team</s><ref>user.waveset.organization</ref> <s>agency</s> <ref>user.accounts[Lighthouse].agency</ref> </map> </Argument> <Argument name=’originalAttributes’> <map> <s>fullname</s> <s>User’s previous fullname</s> <s>jobTitle</s> <s>User’s previous job title</s> <s>location</s> <s>User’s previous location</s> <s>team</s> <s>User’s previous team</s> <s>agency</s> <s>User’s previous agency</s> </map> </Argument> <Argument name=’attributes’> <map> <s>firstname</s> <s>Joe</s> <s>lastname</s> <s>New</s> </map> </Argument> <Argument name=’subject’> <or> <ref>ACTUAL_APPROVER</ref> <ref>APPROVER</ref> </or> </Argument> <Argument name=’approver’ value=’$(APPROVER)’/> </Action> |
Es posible modificar los flujos de trabajo para registrar eventos de temporización que sirvan para los informes de flujo de trabajo (Informes de flujo de trabajo). Los eventos de auditoría estándar sólo registran que se ha producido un evento, mientras que los eventos de auditoría de temporización registran cuándo ha comenzado y terminado el evento, lo que permite efectuar cálculos de tiempo. Además de los datos del evento de temporización, también se almacena la mayoría de la información registrada por los eventos de auditoría estándar. Encontrará más información en ¿Qué información almacenan los eventos de auditoría de temporización?.
Para registrar eventos de auditoría de temporización, antes debe activar la auditoría del flujo de trabajo para cada tipo de flujo sobre el que quiera informar.
En el caso de los flujos de trabajo que se pueden configurar en la interfaz de administración mediante plantillas de tarea, habilite primero la plantilla de tarea correspondiente al flujo de trabajo que desea auditar. Consulte las instrucciones en Habilitación de las plantillas de tarea.
A continuación, active la auditoría del flujo de trabajo marcando la casilla de verificación Auditar todo el flujo de trabajo. Consulte las instrucciones en Configuración de la ficha Auditoría.
Si son flujos de trabajo carentes de plantillas de tarea, defina una variable llamada auditWorkflow y configure su valor en true .
Tenga en cuenta que la auditoría del flujo de trabajo baja el rendimiento.
El Ejemplo 10–3 ilustra el código necesario para crear eventos de auditoría de temporización. Para registrar eventos de auditoría de temporización, el argumento op debe configurarse en auditWorkflow.
El argumento action también es obligatorio y debe definirse en uno de estos valores:
StartWorkflow
EndWorkflow
StartProcess
EndProcess
StartActivity
EndActivity
En el archivo auditconfig.xml se pueden definir otros argumentos de acción.
El Ejemplo 10–3 ilustra la habilitación de eventos de auditoría de temporización en un flujo de trabajo. Para instrumentar un flujo de trabajo, se deben agregar eventos auditWorkflow al principio y al final de los flujos de trabajo, procesos y actividades.
La operación auditWorkflow se define en com.waveset.session.WorkflowServices . Consulte La aplicación com.waveset.session.WorkflowServices para obtener más información.
<Action application=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’auditWorkflow’/> <Argument name=’action’ value=’StartWorkflow’/> </Action> |
Para detener el registro de eventos de auditoría de temporización en un flujo de trabajo, incluya el código del Ejemplo 10–4 en una actividad pre-end cerca del final del flujo de trabajo. Observe que, al instrumentar un proceso o flujo de trabajo, no se permite incluir nada en una actividad end. Hay que crear una actividad pre-end que lleve a cabo el evento auditWorkflow final y después realizar una transición incondicional al evento end.
<Action application=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’auditWorkflow’/> <Argument name=’action’ value=’EndWorkflow’/> </Action> |
De manera predeterminada, los eventos de auditoría de temporización registran la mayoría de la información almacenada por los eventos de auditoría estándar, incluidos los atributos siguientes:
Atributo |
Descripción |
---|---|
WORKFLOW |
Nombre del flujo de trabajo ejecutado. |
PROCESS |
Nombre del proceso actualmente en ejecución. |
INSTANCEID |
ID de instancia único del flujo de trabajo ejecutado. |
ACTIVITY |
Actividad en la que se registra el evento, |
MATCH |
Identificador único dentro de una instancia de flujo de trabajo. |
Los atributos anteriores se almacenan en la tabla logattr y proceden de auditableAttributesList. Identity Manager también verifica si está definido el atributo workflowAuditAttrConds.
Es posible llamar algunas actividades varias veces dentro de una misma instancia de un proceso o un flujo de trabajo. Para lograr la coincidencia de los eventos de auditoría en una determinada instancia de actividad, Identity Manager almacena un identificador único dentro de una instancia de flujo de trabajo en la tabla logattr.
Si quiere almacenar otros atributos en la tabla logattr para un flujo de trabajo, debe definir una lista workflowAuditAttrConds, que se considera una lista de objetos genéricos (GenericObjects). Si define un atributo attrName dentro de la lista workflowAuditAttrConds , Identity Manager extrae attrName del objeto dentro del código, utilizando primero attrName como clave y almacenando después el valor attrName. Todas las claves y valores se almacenan como valores en mayúsculas.