Activiti基本API操作

Activiti基本API操作部署流程 先在 eclipse 或者网页版的 Activiti 中把流程画出来 获得 bpmn 文件和 png 图片 部署方法一 获取 processEngin ProcessEngin processEngin ProcessEngin getDefaultPr

大家好,我是讯享网,很高兴认识大家。

部署流程

  • 先在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); 
小讯
上一篇 2025-04-04 21:18
下一篇 2025-03-10 12:36

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/74844.html