概述
ctiviti是一个工作流引警,activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。
表结构
表分类 |
表名 |
解释 |
一般数据 |
|
|
|
[ACT_GE_BYTEARRAY] |
通用的流程定义和流程资源 |
|
[ACT_GE_PROPERTY] |
系统相关属性 |
流程历史记录 |
|
|
|
[ACT_HI_ACTINST] |
历史的流程实例 |
|
[ACT_HI_ATTACHMENT] |
历史的流程附件 |
|
[ACT_HI_COMMENT] |
历史的说明性信息 |
|
[ACT_HI_DETAIL] |
历史的流程运行中的细节信息 |
|
[ACT_HI_IDENTITYLINKJ |
历史的流程运行过程中用户关系 |
|
[ACT_HI_PROCINST] |
历史的流程实例 |
|
[ACT_HI_TASKINST] |
历史的任务实例 |
|
[ACT_HI_VARINST] |
历史的流程运行中的变量信息 |
流程定义表 |
|
|
|
[ACT_RE_DEPLOYMENT] |
部署单元信息 |
|
[ACT_RE_MODEL] |
模型信息 |
|
[ACT_RE_PROCDEF] |
已部署的流程定义 |
运行实例表 |
|
|
|
[ACT_RU_EVENT_SUBSCR] |
运行时事件 |
|
[ACT_RU_EXECUTION] |
运行时流程执行实例 |
|
[ACT_RU_IDENTITYLINKJ |
运行时用户关系信息,存储任务节点与参与者的相关信息 |
|
[ACT_RU_JOB] |
运行时作业 |
|
[ACT_RU_TASK] |
运行时任务 |
|
[ACT_RU_VARIABLE] |
运行时变量表 |
类关系
类 |
作用 |
ProcessEngine |
调用上面其他服务: RepositoryService,TaskService.... |
RepositoryService |
操作跟 部署 相关的表,操作 re 表 |
RuntimeService |
操作跟 运行 相关的表,操作 ru 表 |
HistoryService |
操作跟 历史 相关的表,操作 hi 表 |
流程部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
@Test public void testDeployment() { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deployment = repositoryService.createDeployment() .name("出差申请流程") .addClasspathResource("bpmn/evection.bpmn") .addClasspathResource("bpmn/evection.png") .deploy();
System.out.println("流程部署ID: " + deployment.getId()); System.out.println("流程部署名称: " + deployment.getName()); }
|
启动流程实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @Test public void testStartProcess() { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance instance = runtimeService.startProcessInstanceByKey("myEvection");
System.out.println("流程定义ID: " + instance.getProcessDefinitionId()); System.out.println("流程实例ID: " + instance.getId()); System.out.println("当前活动的ID: " + instance.getActivityId()); }
|
查看执行任务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| @Test public void testFindPersonalTaskList() { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
List<Task> taskList = taskService.createTaskQuery() .processDefinitionKey("myEvection") .taskAssignee("zhangsan") .list();
for (Task task : taskList) { System.out.println("流程实例id=" + task.getProcessInstanceId()); System.out.println("任务Id=" + task.getId()); System.out.println("任务负责人=" + task.getAssignee()); System.out.println("任务名称=" + task.getName()); } }
|
发起申请
1 2 3 4 5 6 7 8 9 10 11 12
| @Test public void completeTask() { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
String taskId = "2505"; taskService.complete(taskId); }
|
上级审批
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @Test public void completeTask() { ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
TaskService taskService = processEngine.getTaskService();
taskService.complete("2505");
Task task = taskService.createTaskQuery() .processDefinitionKey("myEvection") .taskAssignee("jerry") .singleResult();
System.out.println("流程实例id=" + task.getProcessInstanceId()); System.out.println("任务Id=" + task.getId()); System.out.println("任务负责人=" + task.getAssignee()); System.out.println("任务名称=" + task.getName());
taskService.complete(task.getId()); }
|