业务流程运行框架中的业务流程引擎(ProcessEngine)解析业务流程定义,其运行的结果就是生成业务流程实例。业务流程实例是个泛指,其实它真正包含了流程实例(ProcessInstance)和每个活动环节的任务(Task)两部分的数据。其中流程实例(ProcessInstance)是每次启动流程生成一个,而活动环节的任务(Task)则是每次流转,回退和转发时都会为流向活动环节生成的。所以它们是一个流程实例(ProcessInstance)包含多个任务(Task)的关系。
由于流程实例(ProcessInstance)和任务(Task)的绝大多数属性是都一样的,所以在数据库中,它们都是存入到任务表(SA_Task)。两种数据使用SCATALOGID和SKINID字段组合来区分。所以流程实例(ProcessInstance)本质上也是任务(Task),一种特殊类型的任务(Task)。 由于每一条任务只能描述一个创建者和一个执行者,所以当一条任务需要多个执行者共同处理时就需要为这条任务生成与执行者数量等量的子任务。当一条任务只需要一个执行者来处理时则就不需要生成子任务。
任务其实本质就是一个通知,用来通知执行者处理相关事务。它包含创建者,接收者,时间和相关单号等信息。一条任务被执行者处理完毕以后还可以把它再发给其他执行者处理,则在任务间就会形成前后关系。任务本身是存入任务表的,而任务的关系是存入任务关系表。
|