- 首先下载插件:Activiti的插件这个插件主要通过你的流程图将其转化为xml的文件
- Spring-mvc还是主要配置自动扫描和静态资源访问,视图解析器
- Spring的文件主要配置自动扫描和数据源,事务管理,工作流的文件全局的配置
1 | <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> |
- webxml主要配置几个文件:一个是对Spring
- 对于xml的流程的绘制activiti进行绘制大致的流程:在这个流程的过程中我们需要对相应的模块进行起名,并且配置基本的信息–>${userId}类似于这样
- 这里特别强调一下分支的这里有两个值pass—->value和nopass—-> value 的值,这里分支的必须在使用的时候,就会将这两个值必须一起给出,单给任何一个都不会起作用
- 登录功能,和原来一样,给出一个用户表
- 获取登录的对象以后将获取到的用户的对象放入到session的里面,已被后面使用,
- 这里未使用的是mybatis 所以要在这里配置一下我们的dao层的对象放入到ioc里面,这样他才能会发挥作用
- 首先我们要进行插入数据,其实就是一些请假的基本信息,这里的我们先拥有数据在进行和工作流程的processId进行绑定
- 如果想要获取服务的当前的任务的id我们需要创建一个map的集合进行保存,而且集合的格式必须按照Map的格式进行的
1 | Map<String,Object> paramMap = new HashMap<String,Object>(); paramMap.put("userId", loginUser.getId().toString()); |
- 开启的工作流程的方法时 :
返回值就是我们需要的工作流程的id:
1 | String proId = runtimeService |
- 再下一个的流程中需要我们的mannager的id所以我们需要在这个流程中插到manangerid
1 | Task task = taskService.createTaskQuery().taskAssignee |
- 对于jdbcTemplate的基本使用:
- jdbcTemplate.queryForObject(sql语句,所需要的参数的object的数组,返回值类型)
1 | String sql = "insert into leaves(days,content,user_id) values(?,?,?)"; |
- jdbcTemplate.update(sql,new object[]{参数})
1 | /public boolean updateLeave(LeaveModel leaveModel){ |
- 关于在在插入的时候我们就可以获取当前插入时的id
1 | public boolean insertLeave(LeaveModel leaveModel){ |
处理任务:主要采用一个处理器,来处理两个个角色发过来的请求一个是技术总监和人事部,而人事部对于这个任务是一个群组任务,所以要进行签收,在进行处理,而技术总监属于个人任务所以直接进行处理complete();
taskService.complete(id.toString(), paramMap);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30/**
* 处理任务
*/
@RequestMapping("/doTask")
public String doTask(@RequestParam(value="taskId") Integer id,
@RequestParam(value="accept") String accept){
Map<String, Object> paramMap = new HashMap<String, Object>();
if(accept.equals("yes")){
paramMap.put("pass", true);
paramMap.put("nopass", false);
//将该任务分配给人事部门, 成为一个公共任务,只要在人事部的员工,都可以看见
paramMap.put("deptId", "2");
}else{
paramMap.put("pass", false);
paramMap.put("nopass", true);
//如果不同意,需要将该任务指派给填写申请的那个员工。去进行重新填写
//要知道这个流程是哪一个员工发起的
//根据task获取相关流程id
String proId = taskService.createTaskQuery()
.taskId(id.toString()).singleResult()
.getProcessInstanceId();
//通过proId去查询userId
paramMap.put("userId",
leaveDao.getUserId(proId).toString());
}
//处理任务
taskService.complete(id.toString(), paramMap);
return "redirect:/myTask";
}
-签收任务:claim
1 | /** |
- 总结:我们采用的activiti的视图,通过它来生成xml,而框架的底层已经对于他自己建的表进行了到位的封装,所以我们需要调用他的service的方法我们就可以对数据库进行操作,通过数据在表中流向也就意味着工作到了哪一步的流程。