所有工作流程定义都包括由 FileNet® P8 提供的若干系统图:“工作流程”、“终止”和“故障”。
在执行标准处理或异常处理过程中,工作流程系统将根据需要来执行系统图。请注意,没有供所有工作流程定义共享的每个系统图的单个版本 - 然而,每个工作流程定义具有它自己的系统图副本。
“工作流程”系统图
每个工作流程定义中的主图名为“工作流程”。当您创建或打开工作流程定义时,“流程设计器”会自动启动并显示“工作流程”图。当工作流程启动时,将从执行工作项的工作流程定义中的“工作流程”图的“启动”步骤开始处理。
在决定如何组织“工作流程”图和任何子图中的步骤时,您必须决定想要如何使用特定工作流程定义:如果该工作流程实质上是一个单独的流程,那么可以将所有步骤或者主要的步骤序列(如果您正在使用子图)放在“工作流程”图中。但是,如果工作流程定义实际上是将在各种工作流程中继承的子图的容器,那么您应当只具有“工作流程”图上最低限度的步骤,这是因为在每个派生(继承)的工作流程中都将覆盖“工作流程”图。
“终止”和“故障”系统图
通常,不需要知道这些系统图,这是因为工作流程系统将根据需要执行这些图。缺省“终止”图和“故障”图以图形方式显示在“流程设计器”中,但它们是只读的。如果您想要改变在任一图中定义的处理以满足系统的特定要求,那么可以通过在工作流程定义中创建与您想要覆盖的系统图同名的子图来实现。
要点: 覆盖这些系统图时要谨慎。即使您覆盖系统图,工作流程系统执行这些系统图时应满足的条件也不会更改。从根本上来说,更改系统图的定义会导致后续处理中产生意外结果。例如,如果您修改“终止”系统图以将工作项发送至工作队列而不是除去这些工作项,那么您将删除从系统中除去已完成的工作项的主要机制。
下面是关于“终止”和“故障”系统图的概述。
- 终止
- 在“工作流程”图结束时会自动调用此图。(有关此规则的例外情况,请参阅本段后面的说明。)缺省情况下,“终止”图没有任何步骤;它只是从系统中除去工作项。您可以通过
TerminateProcess 系统函数或者通过在管理控制台中终止工作项来手动执行“终止”图。
注: 当父代工作项终止时,就会执行“终止”系统图。当子代工作项到达其“工作流程”图末尾时,会自动从系统中除去此工作项,但是不会调用“终止”系统图。在正在运行的工作流程中,为有多个参与者的步骤的每个参与者都创建了子代工作项,并且为同时从具有多个出局路由的步骤中获取的每个路由都创建了子代工作项。
- 故障
- 在执行工作流程期间发生错误时就会执行此图。工作流程系统将在发生特定错误(例如,除以 0、日期/时间掩码无效或者参与者无效)时调用“故障”系统图。此外,软件开发者可以定义定制步骤处理器或者其他应用程序,以在发生特定错误时调用“故障”系统图。
缺省情况下,“故障”图会将工作项移至“管理者”系统队列以供管理员复查。当管理员完成适当的纠正操作时,工作项将返回到调用图并处于下列其中一种状态:
- 调用“故障”图时它所处的状态(重复)
- 下一种状态(跳过)
启用一致返回运行时选项确定它执行这些操作中的哪些操作。您还可以通过将 Return 系统函数添加至“故障”图以及根据需要设置布尔表达式来覆盖此设置。
- 请注意,当工作流程系统执行“故障”系统图时,它将对工作项禁用所有计时器。
提示: 虽然您无法改变工作流程系统执行“故障”系统图时所处的情况,但是您可以创建自己的异常处理工作流程图,并在业务流程中根据需要调用这些工作流程图。例如,在定制步骤处理器的代码中,软件开发者可以在其中包括一个调用,以便在步骤处理器运行时发生某个错误的情况下执行用户定义的图。