# 任务的生命周期
- 待提供(offered):任务实例刚被创建时的状态,此时需要等待指派资源或者无需资源直接进入started已开始状态。在待提供状态下,任务实例可能已经提供给多个资源(例如指定任务为某个角色来执行),只要有一个资源接受了任务,则该任务实例就会在其他资源的待提供列表上被删除。
- 已分配(allocated):当任务实例配指定分配资源后,此时任务实例状态变成已分配。但是注意,此时已分配状态,资源并没有开始执行任务实例,只是说资源会在未来某个时候开始执行任务实例。
- 已开始(started):当资源开始执行任务实例时,此时已分配的状态就更新为started已开始。
- 已挂起(suspended):已经开始的任务实例,有可能中途资源需要挂起任务实例去处理其他事情,此时状态会被更新为suspended已挂起状态。当资源如果继续执行已挂起状态的任务实例时,状态就更新为started已开始。例如张三执行任务实例时,刚好到午休时间,这时候就可能挂起任务实例,等午休结束后才继续执行。
- 已完成(completed):资源执行完任务时候后,任务实例会被更新为completed已完成。
- 已停止(stopped):任务实例在执行过程中(已开始状态),被资源强制终止后的状态。
- 已失败(failed):任务实例在执行过程中如果发生错误或异常,状态会被引擎更新为failed已失败状态。
所以,从资源(这里指用户)角度看,每个用户有三个待办队列,分别是:待提供队列、已分配队列、已挂起队列。
如上图所示,一个任务实例被创建时会根据任务的定义来提供给一批资源(基于角色或基于组织或基于技能),这时这些资源的待提供列表上就会出现这个任务实例。当这些资源有一个接受了任务实例后,则其他资源的的待提供队列上这个任务实例就会被删除,而接受该任务实例的资源的已分配队列上就会出现该任务实例。如果在执行任务过程中,要暂停任务实例,则任务实例会从已分配队列移动到已挂起队列。
# 流程的生命周期
已开始(started):流程实例已经创建并开始执行。在这个状态下,流程实例正在处理中,并且活动按顺序执行。
已完成(completed):流程实例已经成功执行完毕,没有出现任何错误。所有定义的活动和路径都已经走过,并达到了结束事件。一旦流程进入这种状态,该流程实例将不再执行任何新的活动。
已挂起(suspended):流程实例在执行过程中被暂停。这可能是因为系统资源不足、遇到错误需要修复或其他外部原因。处于挂起状态的流程实例不会继续执行,除非采取明确的操作来恢复它。
已停止(stopped):流程实例在执行过程中被强制终止。这可能是由于内部或外部错误导致的,或者因为业务需求发生变化,不再需要执行该流程实例。与已挂起状态不同,已停止的流程实例通常不能恢复执行。
已失败(failed):流程实例在执行过程中遇到了错误,导致无法继续执行。失败可能是由系统故障、数据问题或其他意外情况引起的。处于失败状态的流程实例需要进行诊断和修复,以便能够重新启动并继续执行。
← 网关节点定义 3.4 流程模型的解析 →