面的三篇博客中,主要是说Activiti比较基本的,这个是我们项目中设计的Activiti的Designer。
主要解决的问题:
1、提交人可以是任何人。这里我们用变量。
2、审批人用Listener实现,这里我们用Listener,并保存角色,凡有这个角色的人员都可以进行审批。
3、审批有两种参数:批准和驳回。
我们看看我们的流程图:
一、画Intershipone.bpmn
连线就不用说了,跟第二篇是一样的。我们来说之前没有说过的。
在提交申请节点上,我刚刚已经说过了,这里提交人可以是任何人,这个时候,我们用Listener其实也可以,但是是很浪费的一件事情,因此,我们这里就可以使用一个变量就可以了。
这样我们只需要给Assignee一个map的参数就可以了。这个inputUser可以是用户账号。
我们在节点:学术审批和老总审批中都使用taskListenerImpl.Java这个TaskListener,逻辑我们就在notify里面写就好了。
二、TaskListenerImpl.java类
packagecom.tgb.itoo.basic.controller;
importjava.util.List;
importjava.util.Map;
importorg.activiti.engine.ProcessEngine;
importorg.activiti.engine.ProcessEngines;
importorg.activiti.engine.delegate.DelegateTask;
importorg.activiti.engine.delegate.TaskListener;
importorg.activiti.engine.history.HistoricTaskInstance;
importorg.activiti.engine.task.Task;
@SuppressWarnings("serial")
publicclassTaskListenerImplimplementsTaskListener {
/**用来指定任务的办理人*/
@Override
publicvoidnotify(DelegateTask delegateTask) {
//指定个人任务的办理人,也可以指定组任务的办理人
String executeInstanceId = delegateTask.getProcessInstanceId();
String nextLevel="Nobody";
// IntershipBeanImpl intershipbeanimpl = new IntershipBeanImpl();
// //个人任务:通过类去查询数据库,将下一个任务的办理人查询获取,然后通过setAssignee()的方法指定任务的办理人
// String assignee = intershipbeanimpl.findAssigneeByExecutionID("itoo_internship", executeInstanceId);
ProcessEngine processEngine