我们的oa系统使用的是ssm三大框架,整合好activiti工作流之后,我们就可以开始开发activiti工作流项目了,activiti工作流框架其实是一个半成品项目,所以它自带了25张数据库表,而且它还有service层,可以在我们ssm框架整合好oa系统后,就可以直接@Autowired注入到我们的controller或者service层就可以了。
ssm三大框架整合activiti工作流的方法我们之前有写过,6个服务Bean也在整合时配置过,如下:
http://www.tpyyes.com/a/javaweb/2017/0107/36.html
activiti工作流6大service服务的介绍:
第一大服务:仓储服务activiti的RepositoryService
//仓储服务 @Autowired private RepositoryService repositoryService;
仓储服务可以用来部署我们的流程图,还可以创建我们的流程部署查询对象,用于查询刚刚部署的流程列表,便于我们管理流程,方法如下。
//这个是部署流程的方法,流程图以inputStream流的形式传入 DeploymentBuilder builder = repositoryService.createDeployment(); builder.name(process.getName()); builder.addInputStream(fileName, inputStream); Deployment deployment = builder.deploy(); //这个是流程部署列表查询的方法 DeploymentQuery deploymentQuery = repositoryService.createDeploymentQuery(); //可以根据很多条件查询,我这是根据部署名称模糊查询 List<Deployment> list = deploymentQuery.deploymentNameLike("%"+name+"%")
第二大服务:activiti运行时服务RuntimeService
//运行时服务 @Autowired private RuntimeService runtimeService;
运行时服务主要用来开启流程实例,一个流程实例对应多个任务,也就是多个流程节点,好比如请假审批是一个流程实例,部门主管,部门经理,总经理都是节点,我们开启服务是通过流程定义key或者流程定义id来开启的,方法如下:
//首先根据部署id创建流程定义 ProcessDefinition def = repositoryService.createProcessDefinitionQuery(). deploymentId(form.getDeployId()).singleResult(); //然后根据流程定义id或者key开启流程实例 ProcessInstance proInst = runtimeService.startProcessInstanceById(def.getId());
备注:当我们用仓储服务部署了流程图之后,就会产生一个流程部署id,一个流程部署id对应一个流程定义,一个流程定义对应多个流程实例,一个流程实例对应多个任务节点,这样的逻辑应该明白吧,打个比方就是我设计了一个手机图纸(流程定义),是可以供N多个人生产出手机并去使用的,这些人就是流程实例,手机里面的各种功能就是任务节点。
第三大服务:activiti任务服务TaskService
//任务服务 @Autowired private TaskService taskService;
任务服务是用来可以用来领取,完成,查询任务列表功能的,使用方法分别如下:
//根据任务id和用户领取任务 taskService.claim(String taskId, String userId) //根据任务id完成自己节点的任务 taskService.complete(String taskId) //创建任务查询对象之后根据候选人也就是任务处理人查询自己的任务列表 taskService.createTaskQuery().taskAssignee(String assignee)
第四大服务:activiti历史服务HistoryService
//历史服务 @Autowired private HistoryService historyService;
历史服务可以查看审批人曾经审批完成了哪些项目,审批项目总共花了多少时间,以及在哪个环节比较耗费时间等等,便于审批人查看历史信息,方法如下。
//根据审批人查看该审批人审批了哪些项目 List<HistoricTaskInstance> = historyService.createHistoricTaskInstanceQuery(). taskAssignee(String assignee).finished().list();
历史任务对象HistoricTaskInstance,它里面封装了任务开始时间,结束时间,该节点花费的时间等等信息。
第五大服务:activiti表单服务FormService,注入方法是一样的,本人几乎没有用到,具体作用没有好好研究,以后使用了再公布出来。
//表单服务 @Autowired private FormService formService;
第六大服务:activiti实体服务IdentityService,主要是操作用户信息,用户分组信息等,组信息包括如部门表和职位表,我一般都是自己建表来存储用户信息和组信息的,
//实体服务 @Autowired private IdentityService identityService;
经过以上的简单了解,我想应该能基本入门和使用activiti工作流框架创建简单的oa系统项目了,注意注入的服务名必须和xml配置的六个服务bean的id一样,ssm框架整合配置在最开始的地方已经公布了网址。