可以修改工作流以记录计时事件来支持工作流报告(工作流报告)。标准审计事件仅记录已发生的事件;而计时审计事件记录事件的开始和停止时间,以便可以执行时间计算。除了计时事件数据以外,还会存储标准审计事件所记录的大部分信息。有关详细信息,请参见计时审计事件存储哪些信息?。
要记录计时审计事件,必须先为要审计的每种工作流类型激活工作流审计。
对于可以在管理员界面中使用任务模板配置的工作流,请先启用与要审计的工作流对应的任务模板。有关说明,请参见启用任务模板。
然后,选中“审计整个工作流”复选框以启用工作流审计。有关说明,请参见配置“审计”选项卡。
对于没有任务模板的工作流,应定义一个名为 auditWorkflow 的变量,并将其值设置为 true。
请注意,审计工作流将使性能下降。
示例 10–3 显示了创建计时审计事件所需的代码。要记录计时审计事件,必须将 op 参数设置为 auditWorkflow。
还需要 action 参数,并且必须将其设置为以下值之一:
StartWorkflow
EndWorkflow
StartProcess
EndProcess
StartActivity
EndActivity
可以在 auditconfig.xml 中定义其他 action 参数。
示例 10–3 展示了如何在工作流中启用计时审计事件。要对工作流进行程序校验,应在工作流、进程和活动的开头和结尾添加 auditWorkflow 事件。
auditWorkflow 操作是在 com.waveset.session.WorkflowServices 中定义的。有关详细信息,请参见com.waveset.session.WorkflowServices 应用程序。
<Action application=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’auditWorkflow’/> <Argument name=’action’ value=’StartWorkflow’/> </Action> |
要在工作流中停止记录计时审计事件,请将示例 10–4 中的代码添加到工作流末尾附近的 pre-end 活动中。请注意,在对工作流或进程进行程序校验时,不允许在 end 活动中添加任何内容。必须创建 pre-end 活动以执行最终 auditWorkflow 事件,然后无条件地转换到 end 事件。
<Action application=’com.waveset.session.WorkflowServices’> <Argument name=’op’ value=’auditWorkflow’/> <Argument name=’action’ value=’EndWorkflow’/> </Action> |
默认情况下,计时审计事件记录常规审计事件存储的大部分信息,其中包括以下属性:
属性 |
描述 |
---|---|
WORKFLOW |
所执行的工作流的名称 |
PROCESS |
所执行的当前进程的名称 |
INSTANCEID |
所执行的工作流的唯一实例 ID |
ACTIVITY |
记录事件的活动 |
MATCH |
工作流实例中的唯一标识符 |
上面的属性存储在 logattr 表中,它们来自于 auditableAttributesList。Identity Manager 还会检查是否定义了 workflowAuditAttrConds 属性。
可以在进程或工作流的单个实例中调用某些活动若干次。为了匹配特定活动实例的审计事件,Identity Manager 将工作流实例中的唯一标识符存储在 logattr 表中。
要在 logattr 表中为工作流存储其他属性,必须定义 workflowAuditAttrConds 列表,该列表被视为 GenericObjects 列表。如果在 workflowAuditAttrConds 列表中定义 attrName 属性,Identity Manager 将通过以下方法从代码内的对象中提取 attrName:先将 attrName 作为键,然后存储 attrName 值。所有键和值都是以大写值形式存储的。