1、流程图
如何设计流程图在前面有介绍
2. 部署流程定义
方式一
@Test
public void myDeploy(){
//获得流程引擎对象
ProcessEngine engin=ProcessEngines.getDefaultProcessEngine();
//用于管理流程定义
RepositoryService repService=engin.getRepositoryService();
//发布流程的对象
DeploymentBuilder deployBuilder= repService.createDeployment();
//deployBuilder.name("请假流程2");
deployBuilder.addClasspathResource("processes/Leave.bpmn");
deployBuilder.addClasspathResource("processes/Leave.png");
Deployment deploy=deployBuilder.deploy();
System.out.println(deploy.getId());
}
方式二
@Test
public void myDeploy(){
//获得流程引擎对象
ProcessEngine engin=ProcessEngines.getDefaultProcessEngine();
//以它为模板发布一个流程,所有得到的id并不是Leave.bpmn里面的
Deployment deploy=engin.getRepositoryService().createDeployment()
.addClasspathResource("processes/Leave.bpmn")
.addClasspathResource("processes/Leave.png")
.deploy();
System.out.println(deploy.getId());
}
3. 启动流程实例
@Test
public void startProccess(){
ProcessEngine engin=ProcessEngines.getDefaultProcessEngine();
//获得流程执行服务类对象
RuntimeService runServ=engin.getRuntimeService();
//启动流程
ProcessInstance pi= runServ.startProcessInstanceByKey("leave01");
System.out.println(pi.getId()+","+pi.getActivityId()+","+pi.getProcessDefinitionId()+","+pi.getProcessDefinitionKey()
+","+pi.getProcessDefinitionName()+","+pi.getBusinessKey()+","+pi.getName()+","+pi.getDeploymentId());
}
代码中的leave01是指流程配置文件中的流程id,如图所示:
说明:启动流程实例操作的是数据库的act_ru_execution表,如果是用户任务节点,同时也会在act_ru_task添加一条记录
4. 查询我的个人任务
这里三个任务节点,分别制定了三个人,如下图所示: