部署流程
- 先在eclipse或者网页版的Activiti中把流程画出来,获得bpmn文件和png图片
- 部署方法一:
// 获取processEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); /* 利用processEngine的getRepositoryService()方法 可以获取一个RepositoryService对象, 再调用其createDeployment()方法 来创建一个deploymentBuilder对象 */ DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService() .createDeployment(); // 添加bpmn和png文件 deploymentBuilder.addClasspathResource("qjlc.bpmn"); deploymentBuilder.addClasspathResource("qjlc.png"); // 部署流程,写入数据库 Deployment deployment = deploymentBuilder.deploy();
讯享网
- 部署方法二:
讯享网ZipInputStream zipInputStream = new ZipInputStream(this.getClass() .getClassLoader().getResourceAsStream("process.zip")); deploymentBuilder.addZipInputStream(zipInputStream); deploymentBuilder.name("请假流程部署"); Deployment deployment = deploymentBuilder.deploy();
- 部署完成之后会在act_re_deployment、act_re_procdef、act_ge_bytearray三张表中插入数据
- act_re_deployment主要存了流程的名称、部署时间和id等基本信息
- act_re_procdef存储了比较详细的信息,除了上表的信息之外还包括bpmn和png文件名称、流程分类、流程版本号等信息
- act_ge_bytearray主要存储部署流程时的文件,将bpmn和png文件以二进制流的方式存储起来
查询已经部署的流程
- 流程部署查询API
processEngine.getRepositoryService().createDeploymentQuery().list(); processEngine.getRuntimeService().createProcessInstanceQuery().list(); processEngine.getTaskService().createTaskQuery().list();
- 具体操作
讯享网ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); DeploymentQuery query = processEngine.getRepositoryService() .createDeploymentQuery(); // 添加过滤条件 query.processDefinitionKey("qjlc"); // 添加排序条件 query.orderByProcessDefinitionVersion().desc(); // 添加分页查询 query.listPage(0, 10); // 在调用query.list()方法之前可以添加过滤条件和排序条件 List<Deployment> list = query.list(); for (Deployment deployment : list) { String id = deployment.getId(); System.out.println(id); }
启动流程实例
- 根据processDefinitionId来启动
// 对应act_re_procdef的ID_字段,直接找到唯一的流程 String processDefinitionId = "qjlc:0:100"; ProcessInstance processInstance = processEngine .getRuntimeService() .startProcessInstanceById(processDefinitionId); System.out.println(processInstance.getId());
- 根据processDefinitionKey来启动
讯享网// 对应act_re_procdef的KEY_字段,根据key自动找最近部署的流程的版本 String processDefinitionKey = "qjlc"; ProcessInstance processInstance = processEngine.getRuntimeService() .startProcessInstanceByKey(processDefinitionKey); System.out.println(processInstance.getId());
查询流程实例
// 操作的是act_ru_execution表,和runtime相关 ProcessInstanceQuery query = processEngine .getRuntimeService() .createProcessInstanceQuery(); List<ProcessInstance> list = query.list(); for (ProcessInstance pi : list) {
System.out.println(pi.getId() + " " + pi.getActivityId()); }
查询个人任务列表
讯享网// 操作的是act_ru_task表,和task相关 TaskQuery query = processEngine.getTaskService().createTaskQuery(); String assignee = "李四"; query.taskAssignee(assignee); List<Task> list = query.list(); for (Task task : list) {
System.out.println(task.getId()); }
办理任务
String taskId = "2902"; processEngine.getTaskService().complete(taskId);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/74844.html