创建工作流任务
状态机工作流通过生成任务与相应的用户交互,并根据用户所选择的操作决定下一个状态是什么。因此,我们需要为状态“待审批”和“处理中”分别创建任务并赋予相应的用户。这个教程主要介绍如何在状态中创建任务和配置任务的相关参数。
创建“审批”任务
“待审批”状态中的StateInitialization活动是工作流进入该状态时执行的第一个活动。因而我们要在StateInitialization活动中创建工作流任务。“待审批”状态中StateFinalization活动是工作流离开状态时执行的最后一个活动。我们将在StateFinalization注销工作流任务。具体步骤如下:
- 点击“待审批”状态中的“StateInitialization”活动,在“属性”选项卡将它的名称改为“待审批状态初始化” (为了便于识别活动)。
- 点击“待审批”状态中的“StateFinalization”活动,在“属性”选项卡将它的名称改为“待审批状态终止化” (见下图)。
接下来,我们要为“待审批”状态创建一个工作流任务。具体步骤如下:
鼠标双击“待审批状态初始化”活动,展开“待审批状态初始化”活动,可以看到已经存在了一个名为“CreateTask1”的活动。这是因为我们创建的状态是CompositeStateActivity,自动在初始化活动中包含了一个CreateTaskActivity活动。见下图:
点击“CreateTask1”活动:
- 将其名称更改为“创建审批任务”。
- 输入“任务摘要”的文字为:请审批新提交的事务
- 输入“任务描述”的文字为:{提交人}于{提交日期}提交了关于{主题}的事务
接下来需要指定任务执行人。点击“静态分配”下的“角色” => 从弹出的窗口中选择“Manager”角色 => 单击“确定”(见下图)。表示该任务赋予具有经理(Manager)角色的用户。
审批该任务的操作有两个,一个是指定事务的处理人,另一个是退回事务。我们可以让用户在表单上通过修改事务的状态值来执行操作。但是用户并不一定很清楚应该选择哪个状态来执行指定处理人或退回事务的操作。为了简化用户与任务的交互操作,我们可以为该任务创建两个定制操作。定制操作需要定义简单的代码并会以按键的形式显示在用户界面上。用户只需点击某个定制操作的按键,就会自动执行代码来设置事务的状态。
假设,我们要创建的两个定制操作名称是“完成指定”和“退回”。首先,我们创建“完成指定”操作,步骤如下:
- 点击“定制操作”右边的文本框 => 弹出“定义定制操作”窗口;
- 在窗口的左下方的文本框中输入文字“完成指定” => 点击“添加”按键。
- 将“表单操作”设置为“SubmitAndClose”,表示点击这个定制操作的按键将提交并关闭任务表单;
- 将下面的代码复制粘贴到“内嵌操作程序”的弹出代码窗口中;
this.Instance.SetValue("状态","已指定");
“完成指定”定制操作配置结果如下图所示:
在“定义定制操作”窗口中,添加“退回”定制操作:
- 在窗口的左下方的文本框中输入文字“退回” => 点击“添加”按键。
- 将“表单操作”设置为“SubmitAndClose”;
- 将下面的代码复制粘贴到“内嵌操作程序”的弹出代码窗口中;
- 点击“确认”按键,完成定制操作的创建步骤
this.Instance.SetValue("状态","退回");
“退回”定制操作配置结果如下图所示:
接下来,点击左上角的“事务跟踪管理流程”返回显示流程状态的流程图(见下图)。
注销“审批”任务
状态初始化活动中创建的工作流任务需要在工作流离开该状态时注销,否则它一直会出现在用户的任务列表界面上。通常要在状态终止化活动中注销任务。
鼠标双击流程图的“待审批”状态中的“待审批状态终止化”活动,展开“待审批状态终止化”活动,可以看到已经存在了一个名为“CloseTask”的活动。这是因为我们创建的状态是CompositeStateActivity,自动在终止化活动中包含了一个CloseTaskActivity活动。见下图:
点击“CloseTask”活动:
- 将其名称更改为“注销审批任务”。
- 从下拉菜单中将“任务名”选择为“创建审批任务”,指定注销的任务;
结果如下图所示:
接下来,点击左上角的“事务跟踪管理流程”返回显示流程状态的流程图。
创建“处理事务”任务
- 点击“处理中”状态中的“stateInitializationActivity1”活动,在“属性”选项卡将它的名称改为“处理中状态初始化”。
- 点击“处理中”状态中的“stateFinalizationActivity1”活动,在“属性”选项卡将它的名称改为“待审批状态终止化” (见下图)。
下一步是为“处理中”状态创建一个工作流任务。具体步骤如下:
鼠标双击“处理中状态初始化”活动,展开这个活动,可以看到已经存在了一个名为“CreateTaskActivity1”的活动。见下图:
点击“CreateTaskActivity1”活动:
- 将其名称更改为“创建处理任务”。
- 输入“任务摘要”的文字为:请处理事务
- 输入“任务描述”的文字为:请处理{提交人}于{提交日期}提交了关于{主题}的事务
接下来需要指定任务执行人。这次,我们需要把任务指定给“事务”数据实例的“处理人”属性所表示的用户。因而,点击“动态分配任务”下的“用户属性名” => 从下来菜单中选择“处理人”属性(见下图)。表示该任务赋予“处理人”属性所指向的用户。
假设该任务的操作只有一个,称为“处理完毕”。我们创建“处理完毕”操作的步骤如下:
- 点击“定制操作”右边的文本框 => 弹出“定义定制操作”窗口;
- 在窗口的左下方的文本框中输入文字“处理完毕” => 点击“添加”按键。
- 将“表单操作”设置为“SubmitAndClose”,表示点击这个定制操作的按键将提交并关闭任务表单;
- 将下面的代码复制粘贴到“内嵌操作程序”的弹出代码窗口中;
this.Instance.SetValue("状态","完成");
this.Instance.SetValue("关闭日期", CurrentDate);
this.Instance.SetValue("进度", "100");
“处理完毕”定制操作配置结果如下图所示:
接下来,点击左上角的“事务跟踪管理流程”返回显示流程状态的流程图。
注销“处理事务”任务
鼠标双击流程图的“处理中”状态中的“处理中状态终止化”活动展开该活动,可以看到已经存在了一个名为“closeTaskActivity1”的活动。
点击“closeTaskActivity1”活动:
- 将其名称更改为“注销处理事务任务”。
- 从下拉菜单中将“任务名”选择为“创建处理任务”;
结果如下图所示:
接下来,点击左上角的“事务跟踪管理流程”返回显示流程状态的流程图。
至此,我们完成了定义两个状态的工作流任务。接下来的教程,我们要设置状态之间的转换关系。