默认情况下,仅对批准工作流进行程序校验以生成审计记录。本节介绍了如何使用 com.waveset.session.WorkflowServices 应用程序通过任何工作流进程生成额外的审计事件。
如果需要报告自定义工作流,则可能需要其他审计事件。有关将审计事件添加到工作流中的信息,请参见修改工作流以记录标准审计事件。
也可以在工作流中添加特殊审计事件以支持工作流报告(工作流报告)。工作流报告将报告完成工作流所需的时间。需要使用特殊审计事件来存储时间计算所需的数据。有关将计时审计事件添加到工作流中的信息,请参见修改工作流以记录计时审计事件。
com.waveset.session.WorkflowServices 应用程序可通过任何工作流进程生成审计事件。表 10–1 介绍了可用于此应用程序的参数。
表 10–1 com.waveset.session.WorkflowServices 的参数
参数 |
类型 |
描述 |
---|---|---|
op |
字符串 |
对 WorkflowServices 执行的操作。必须设置为 audit 或 auditWorkflow。audit 用于标准工作流审计。auditWorkflow 用于存储时间计算所需的计时审计事件。该参数是必需的。 |
type |
字符串 |
正在进行审计的对象类型名称。表 B–5 中列出了可审计的对象类型。这是记录标准审计事件所需的参数。 |
action |
字符串 |
执行的操作的名称。表 B–6 中列出了可审计的操作。该参数是必需的。 |
status |
字符串 |
指定操作的状态名称。表 B–7 中列出了状态(在“结果”列中)。这是记录标准审计事件所需的参数。 |
name |
字符串 |
受指定操作影响的对象的名称。这是记录标准审计事件所需的参数。 |
resource |
字符串 |
(可选)进行更改的对象所在资源的名称。 |
accountId |
字符串 |
(可选)正在修改的帐户 ID。它应是本机资源帐户名称。 |
error |
字符串 |
(可选)伴随任何故障的本地化错误字符串。 |
reason |
字符串 |
(可选)ReasonDenied 对象的名称,此名称将映射到描述一般故障原因的国际化消息。 |
attributes |
映射 |
(可选)已添加或已修改的属性名称和值的映射。 |
parameters |
映射 |
(可选)最多映射五个与事件相关的附加名称或值。 |
organizations |
列表 |
(可选)放置该事件的组织名称或 ID 列表。它用于审计日志的组织范围限定。如果不存在,则处理程序将尝试根据类型和名称来解析组织。如果无法解析组织,则将事件置于“顶级”(组织分层结构的最高级别)。 |
originalAttributes |
映射 |
(可选)旧属性值的映射。名称应与属性参数中列出的名称相匹配。这些值是您要在审计日志中保存的任何先前的值。 |
要在工作流中创建标准审计事件,请将以下 <Activity> 元素添加到工作流中:
<Activity name=’createEvent’>
然后,将引用 com.waveset.session.WorkflowServices 应用程序的 <Action> 元素嵌套在 <Activity> 元素中:
<Action class=’com.waveset.session.WorkflowServices’>
将必需和可选的 <Argument> 元素嵌套在 <Action> 元素中。有关这些参数的列表,请参见表 10–1。
要记录标准审计事件,必须将 op 参数设置为 audit。
工作流示例显示了创建标准审计事件所需的最少代码。
以下示例展示了简单的工作流活动,并显示了事件的生成,该事件将记录由 ResourceAdministrator 执行的名为 ADSIResource1 的资源删除活动。
<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> |
下一个示例展示了如何将特定属性添加到工作流,该工作流将跟踪由每个用户在批准进程中根据细化级别应用的更改。通常,此添加将遵循从用户请求输入的 ManualAction。
ACTUAL_APPROVER 是根据实际执行批准的人员,在表单和工作流中(如果从批准表中批准)设置的。APPROVER 将标识分配了 APPROVER 的人员。
<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> |
可以修改工作流以记录计时事件来支持工作流报告(工作流报告)。标准审计事件仅记录已发生的事件;而计时审计事件记录事件的开始和停止时间,以便可以执行时间计算。除了计时事件数据以外,还会存储标准审计事件所记录的大部分信息。有关详细信息,请参见计时审计事件存储哪些信息?。
要记录计时审计事件,必须先为要审计的每种工作流类型激活工作流审计。
对于可以在管理员界面中使用任务模板配置的工作流,请先启用与要审计的工作流对应的任务模板。有关说明,请参见启用任务模板。
然后,选中“审计整个工作流”复选框以启用工作流审计。有关说明,请参见配置“审计”选项卡。
对于没有任务模板的工作流,应定义一个名为 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 值。所有键和值都是以大写值形式存储的。