前面的文章介绍了Activiti的流程部署。本章我们会将Activiti和Spring进行整合,并完成简单的审批和查询。

  1、要实现Spring和整合,还需要引入activiti-spring包,pom的依赖如下:

  2、Activiti的配置文件:

  注意:在Activiti的配置文件中配置了几种主要的服务对象

  Service服务说明

  RepositoryService仓库服务

  仓库服务是存储相关的服务,一般用来部署流程文件,获取流程文件,查询流程定义信息等操作,是引擎中的一个重要的服务。

  创建方法:

  RepositoryService repositoryService = engine.getRepositoryService();

  运行时服务

  流程运行时的流程实例,流程定义,流程版本,流程节点等信息,使用运行时服务操作,是引擎中的一个重要的服务

  创建方法:

  RuntimeService runtimeService = engine.getRuntimeService();

  任务服务

  流程运行时的会产生任务,接收、办理、完成等操作使用任务服务完成,是引擎中的一个重要的服务

  创建方法:

  TaskService taskService = engine.getTaskService();

  3、Spring的配置文件:

  4、启动个人任务

  给流程添加审批人

  单元测试:

  @RunWith(SpringJUnit4ClassRunner.class)

  @ContextConfiguration("classpath:spring.xml")

  public class ProcessTest {

  @Autowired

  private TaskService taskService;

  @Autowired

  private RuntimeService runtimeService;

  @Autowired

  private HistoryService historyService;

  @Autowired

  private RepositoryService repositoryService;

  //部署流程

  @Test

  public void deployAddSigninProcess() {

  repositoryService.createDeployment()

  .key("addsignin_process")

  .addClasspathResource("bpmn/proc_addsignin.bpmn")

  .addClasspathResource("bpmn/proc_addsignin.png")

  .name("补签流程")

  .deploy();

  }

  //启动流程

  @Test

  public void startProcess(){

  runtimeService.startProcessInstanceByKey("addsignin_process");

  }

  //查询个人任务

  @Test

  public void queryTask(){

  TaskQuery taskQuery = taskService.createTaskQuery();

  //按照审批人和流程id查询

  taskQuery.taskAssignee("张三");

  taskQuery.processDefinitionKey("addsignin_process");

  List list = taskQuery.list();

  for (Task task : list) {

  System.out.println(task.getId());

  System.out.println(task.getAssignee());

  System.out.println(task.getName());

  System.out.println(task.getOwner());

  System.out.println(task.getCategory());

  System.out.println(task.getCreateTime());

  System.out.println(task.getExecutionId());

  System.out.println(task.getTaskDefinitionKey());

  System.out.println(task.getProcessDefinitionId());

  }

  }

  //完成任务

  @Test

  public void completeTask(){

  //通过TaskID完成任务

  taskService plete("2501");

  System.out.println("完成任务");

  }

  }

  以上我们通过Spring整合了Activiti,并且实现了基本的Activiti流程的启动、查询和完成。

  千锋成都Java培训作为国内IT研发人才一体化服务的开拓者,为学生制定合理有序的学习计划,0学费入学,2周免费试听不满意不收费,与学员签订就业协议,坚持良心面授,从千锋Java培训班出去的学员均已高薪就业。千锋推出的免费java视频教程,让学员能够方面的巩固基础技术能力。

更多推荐

Java技术学习之Activiti和Spring整合实现查询与审批