状态机工作流的使用与实现
1. 工作任务处理
在状态机工作流中,每次状态转换时通常会创建一个新任务。若状态重复,会为该状态创建第二个任务。例如,管理员判定系统按设计运行,将 bug 移至 Wad 状态并完成待处理任务,发起者更新并重新提交 bug 时,会创建第二个待处理任务。
不过,分配给开发者的实际任务不会重复创建。若测试者发现修复无效,bug 回到 Assigned 状态,但仍使用原任务,不再创建新任务。这是因为该 bug 所需的额外工作是原任务的扩展,并非独立工作项。开发者修复 bug 后,该任务(工作任务)会保持开启,直到工作流完成。
2. 实现分配状态初始化序列
在初始化序列中,通常需为每个状态创建任务,但对于 Assigned 状态,仅在工作流首次进入该状态时创建任务。为此,使用_workTaskId工作流类成员。具体操作步骤如下:
1. 双击initAssigned活动(Assigned 状态的初始化序列)。
2. 拖入IfElseActivity到该序列,将左分支重命名为ifNotCreated。
3. 选择条件为声明性规则条件并展开属性,创建新条件,指定条件名称为NotCreated,表达式使用this._workTaskId == System.Guid.Empty。
4. 拖入CreateTaskWithContentType活动到左分支,重命名为