activiti开发注意事项

来源:互联网 发布:java 反射调用get方法 编辑:程序博客网 时间:2024/05/17 23:36

1, 画流程图

一个流程图必须有一个或一个以上默认流

流程判断两个流出的线一定要带上参数进行判断

流程图的权限分配:assignee(不包括),candidateUsers(哪些用户), candidateGroups(哪些角色)

 

2, 开启流程

ProcessInstance procInst = runtimeService.startProcessInstanceByKey("orderManage");

process.setB_obj_id(procInst.getId());

参数是流程图的ID,表示开启一个流程,流程开始,等待第一个人签收,返回的是流程的实列,可以得到流程ID。

 

 

3, 查询签收审批任务

// 根据当前人的ID查询

String username = this.getUser().getUserName();

identityService.setAuthenticatedUserId(username);

//当前人要审批的任务

TaskQuery todoQuery = taskService.createTaskQuery()

.taskAssignee(username).active()

.orderByTaskCreateTime().desc();

// 根据当前人未签收的任务

TaskQuery claimQuery = taskService.createTaskQuery()

.taskCandidateUser(username).active()

.orderByTaskId().desc().orderByTaskCreateTime().desc();

List<Task> todoList = todoQuery.list();

List<Task>unsignedTasks = claimQuery.list();

得到系统当前用户名,根据用户名得到这个用户当前要审批的任务和要签收的任务(一个流程可以包括好几个任务,任务是人去接收的,所以流程图的两个角色之间就是一个任务)

 

注意:这里返回的只是任务的实列,能够得到的是任务的taskId,taskName,

StringprocessInstanceId = task.getProcessInstanceId();

根据这个得到流程ID,因为我们存的工单是要存这个流程id的,所以能根据这个id找到对应的工单。

 

注意:这里要传入任务的taskid,因为下一个人签收的时候要根据这个taskId去进行签收任务。

 

 

4, 签收和审批任务

签收:taskService.claim(taskId, username);taskid是指任务id,表示签收哪个任务,username是指用户名,表示哪个用户去签收

审批:taskService.complete(taskId, map);taskId是指任务id,表示审批哪个任务,map可以穿入参数,一般审批要有两个分支,通过和不通过,参数要放进map里面。另外还可以传入别的参数,下一步得到。

 

5, 删除流程

runtimeService.deleteProcessInstance(processInstanceId,"deleteby applicant");传入流程id,结束一个流程。

 

 

6, 流程中用户角色

流程中用户角色用的特别多,其实流程主要就是这个用处。所以要对系统中的一些关于用户,部门,角色的方法做一些了解,这里用的比较多。

String username =this.getUser().getUserName();

得到用户名

User user =userService.loadUserByUsername(username);

根据当前用户名得到用户的信息。(user可以得到用户部门,但是这个是懒加载,只能在service中的到,不能再@Controller中得到。)

List<String>userRoleNames = userService.getUserRoleNames(user.getId());

根据用户名得到用户角色

 

 

7, 一些activiti中用到的表格

这些表格在系统用户表中,因为要喝用户做关联。

create view act_id_group as SELECT sr.NAME_ as ID_,1 asREV_,sr.NAME_CN as NAME_,null as TYPE_ from sys_role sr;

 

CREATE view act_id_info as SELECT su.USERNAME as ID_,1 asREV_,su.USERNAME as USER_ID_,null as TYPE_,null as KEY_,null asVALUE_,su.PASSWORD_ as PASSWORD_,null as PARENT_ID_ from sys_user su;

 

create view act_id_membership as SELECT su.USERNAME asUSER_ID_,sr.NAME_ as GROUP_ID_ from sys_userrole ur,sys_user su,sys_role srWHERE su.ID_=ur.USER_ID and ur.ROLE_ID=sr.ID_;

 

create viewact_id_user as SELECT su.USERNAME as ID_,1 as REV_,su.FULLNAME asFIRST_,su.NAME_PINYIN as LAST_,su.EMAIL_ as EMAIL_,su.PASSWORD_ as PWD_,null asPICTURE_ID_ from sys_user su;

创建四个视图,这四个本来是activiti中的表,我们只是和我们系统中的用户做了一个对应,所以用这几个视图来代替表格。

 

ACT_RU_TASK :系统正在跑的几个流程,一个流程被删除,记录相对应的被删除。

 

ACT_HI_PROCINST:任务记录表,做一步操作会有条记录,一个任务结束下一个任务会开始,一旦所有的任务都有结束时间了,那么流程也就结束了。

 

8, 两个流程图的角色分配

角色分配: 创建人:分公司运维考核牵头人(orderUser1)

                    初审:省专业室运维考核牵头人(orderUser2)

          终审:分公司稽核项目经理权限(orderUser3)

 

 

 

 

 

 

 

角色分配: 创建人:省专业室运维考核牵头人(orderUser2)

          初审:分公司稽核项目经理权限(orderUser3)

终审:专业室流程终审(orderUser4)

0 0
原创粉丝点击