Activiti 笔记

################################
# 部署流程定义涉及到的表

# 流程部署表
SELECT * FROM `act_re_deployment`

# 流程定义表
SELECT * FROM `act_re_procdef`

# 资源文件表
SELECT * FROM `act_ge_bytearray`

# 系统配置表
SELECT * FROM `act_ge_property`

################################
# 启动流程实例涉及到的表

# 流程实例运行时 执行对象表
SELECT * FROM `act_ru_execution`

# 流程实例运行时 身份联系表
SELECT * FROM `act_ru_identitylink`

# 流程实例运行时 用户任务表
SELECT * FROM `act_ru_task`

# 活动节点历史表
SELECT * FROM `act_hi_actinst`

# 身份联系表 历史
SELECT * FROM `act_hi_identitylink`

# 流程实例表 历史
SELECT * FROM `act_hi_procinst`

# 历史任务表
SELECT * FROM `act_hi_taskinst`


################################
# 结束流程实例涉及到的表
# 运行时  表数据全部清空
# 历史表  表数据修改 或者增加了数据


################################
# 设置流程变量涉及到的表

# 运行时流程变量表
SELECT * FROM `act_ru_variable`

# 历史流程变量表
SELECT * FROM `act_hi_varinst`

 

 

1.1. 核心组件介绍

1.1.1. 关键对象

  1. Deployment:流程部署对象,部署一个流程时创建。

    对应的表:

      act_re_deployment:部署对象表

      act_re_procdef:流程定义表

      act_ge_bytearray:资源文件表

      act_ge_property:主键生成策略表

  2. ProcessDefinitions:流程定义,部署成功后自动创建。可以从这里获得资源文件等。
  3. ProcessInstances:流程实例,启动流程时创建。 一个流程实例包括了所有的运行节点。我们可以利用这个对象来了解当前流程实例的进度等信息。流程实例就表示一个流程从开始到结束的最大的流程分支,即一个流程中流程实例只有一个。

    注意

        (1)如果是单例流程,执行对象ID就是流程实例ID

        (2)如果一个流程有分支和聚合,那么执行对象ID和流程实例ID就不相同

        (3)一个流程中,流程实例只有1个,执行对象可以存在多个。

  4. Task:任务,执行到某任务环节时生成的任务信息。

    对应的表:

      act_ru_task:正在执行的任务信息

      act_hi_taskinst:已经执行完的历史任务信息

  5. Execution:执行计划(执行对象),流程实例和流程执行中的所有节点都是Execution,如UserTask、ServiceTask等。

     对应的表:

      act_ru_execution: 正在执行的信息

      act_hi_procinst:已经执行完的历史流程实例信息

      act_hi_actinst:存放历史所有完成的活动

从源代码中可以看出ProcessInstance就是Execution。但在现实意义上有所区别:

这个例子有一个特点:wire money(汇钱)和archive(存档)是并发执行的。   这个时候,总线路代表ProcessInstance,而分线路中每个活动代表Execution。

* 一个流程中,执行对象可以存在多个,但是流程实例只能有一个。

* 当流程按照规则只执行一次的时候,那么流程实例就是执行对象。

1.1.2. 服务接口

  1. ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的一切服务。 

     在Activiti中最核心的类,其他的类都是由他而来。

  2. RepositoryService:Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。RepositoryService提供了对 repository的存取服务。
  3. RuntimeService:在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。
  4. TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。 
  5. IdentityService: Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task。IdentityService提供了对Activiti 系统中的用户和组的管理功能。
  6. ManagementService: ManagementService提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于Activiti系统的日常维护。 
  7. HistoryService: HistoryService用于获取正在运行或已经完成的流程实例的信息,与 RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。

 

 

 

个人任务及三种分配方式:

    1:在taskProcess.bpmn中直接写 assignee=“张三丰"

    2:在taskProcess.bpmn中写 assignee=“#{userID}”,变量的值要是String的。

         使用流程变量指定办理人

    3,使用TaskListener接口,要使类实现该接口,在类中定义:

         delegateTask.setAssignee(assignee);// 指定个人任务的办理人

   

 使用任务ID和办理人重新指定办理人:

     processEngine.getTaskService()  .setAssignee(taskId, userId);

 

组任务及三种分配方式:

    1:在taskProcess.bpmn中直接写 candidate-users=“小A,小B,小C,小D"

    2:在taskProcess.bpmn中写 candidate-users =“#{userIDs}”,变量的值要是String的。

         使用流程变量指定办理人

              Map<String, Object> variables = new HashMap<String, Object>();

              variables.put("userIDs", "大大,小小,中中");

    3,使用TaskListener接口,使用类实现该接口,在类中定义:

            //添加组任务的用户

  delegateTask.addCandidateUser(userId1);

  delegateTask.addCandidateUser(userId2);

组任务分配给个人任务(认领任务):

     processEngine.getTaskService().claim(taskId, userId);

个人任务分配给组任务:

     processEngine.getTaskService(). setAssignee(taskId, null);

向组任务添加人员:

     processEngine.getTaskService().addCandidateUser(taskId, userId);

向组任务删除人员:

     processEngine.getTaskService().deleteCandidateUser(taskId, userId);

个人任务和组任务存放办理人对应的表:

act_ru_identitylink表存放任务的办理人,包括个人任务和组任务,表示正在执行的任务

act_hi_identitylink表存放任务的办理人,包括个人任务和组任务,表示历史任务

区别在于:如果是个人任务TYPE的类型表示participant(参与者)

               如果是组任务TYPE的类型表示candidate(候选者)和participant(参与者)

posted @ 2017-03-16 23:31  SKYisLimit  阅读(195)  评论(0)    收藏  举报