2018-03-29

问题描述:会签节点选择2个审核人只能看到一条代办任务。

解决办法:

Sequential设置为false即可。(true 串行   false  并行)

activiti 工作流会签时为所有的都审批通过才可进入下一环节:

1.编写监听类

public class MyTaksListener implements TaskListener {

public void notify(DelegateTask delegateTask) {
        System.out.println("delegateTask.getEventName() = " + delegateTask.getEventName());

//添加会签的人员,以下所有的都审批通过才可进入下一环节

List<String> assigneeList = new ArrayList<String>(); 
        assigneeList.add("wangba");
        assigneeList.add("wangjiu");
        delegateTask.setVariable("publicityList",assigneeList);
    }
}

2.“员工请假申请”中添加此监听类

3.“项目组长审批”中

isSequential=false时,表示的并行执行,即该节点下的多条任务可以同时执行。
activiti:collection:用于执行该会签环节的参与参与的人,此处是使用的一个名叫publicityList的流程变量
activiti:elementVariable:此处表示的是每一个分支都有一个名叫publicity的流程变量,和上方的activiti:assignee结合

以上几个字段的解释可以参照下面这篇文章:

http://www.wangchao.net.cn/it/detail_132191.html

4.项目组长审批时,通过taskAssignee来获取个人任务

total = taskService.createTaskQuery().taskAssignee(userId).taskNameLike("%" + s_name + "%").count(); // 获取总记录数            // 有想法的话,可以去数据库观察 ACT_RU_TASK 的变化            taskList = taskService.createTaskQuery()                    // 根据用户id查询                    .taskAssignee(userId)                    // 根据任务名称查询                    .taskNameLike("%" + s_name + "%")                    // 返回带分页的结果集合                    .listPage(pageInfo.getPageIndex(), pageInfo.getPageSize());

activiti 工作流多人审批时若一人通过也可进入下一环节:

1.编写监听类

public class MangerTaskHandlerCandidateUsers implements TaskListener{    public void notify(DelegateTask delegateTask) {        //添加审批的人员,以下任何一人通过即可进入下一环节        String[] empLoyees = {"wangba","wangjiu"};        delegateTask.addCandidateUsers(Arrays.asList(empLoyees));    }}

2.“项目组长审批”中

3.项目组长审批时,通过taskCandidateUser来获取个人任务

total = taskService.createTaskQuery().taskCandidateUser(userId).taskNameLike("%" + s_name + "%").count(); // 获取总记录数            // 有想法的话,可以去数据库观察 ACT_RU_TASK 的变化            taskList = taskService.createTaskQuery()                    // 根据用户id查询                    .taskCandidateUser(userId)                    // 根据任务名称查询                    .taskNameLike("%" + s_name + "%")                    // 返回带分页的结果集合                    .listPage(pageInfo.getPageIndex(), pageInfo.getPageSize());

1.在当前节点获取下一节点的信息(通过TaskId)

/**     * 根据实例编号查找下一个任务节点     *      * @param String     *     procInstId :实例编号     * @return     */    @RequestMapping("/backTaskTab")    public TaskDefinition backTaskTab(String taskId) {        Task task = taskService.createTaskQuery() // 创建任务查询                .taskId(taskId) // 根据任务id查询                .singleResult();        String procInstId = task.getProcessInstanceId();        // 流程标示        String processDefinitionId = historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstId)                .singleResult().getProcessDefinitionId();        ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)                .getDeployedProcessDefinition(processDefinitionId);        // 执行实例        ExecutionEntity execution = (ExecutionEntity) runtimeService.createProcessInstanceQuery()                .processInstanceId(procInstId).singleResult();        // 当前实例的执行到哪个节点        String activitiId = execution.getActivityId();        // 获得当前任务的所有节点        List<ActivityImpl> activitiList = def.getActivities();       for(ActivityImpl a:activitiList) {if(activitiId.equals(a.getId())) { List<PvmTransition> outTransitions=a.getOutgoingTransitions();for(PvmTransition tr : outTransitions){ PvmActivity ac = tr.getDestination(); // 获取线路的终点节点(下一节点)String nextId = ac.getId(); }} }    }

2.在当前节点获取下一节点的信息(通过ProcessDefinitionId)

public String startApply(HttpServletResponse response, String leaveId) throws Exception {//使用流程定义ID获取所有节点,该Id可以通过多种方式获得,//如通过ProcessDefinitionQuery可以查询一个ProcessDefinition对象,Task对象中也包含List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery()//创建流程定义查询.orderByProcessDefinitionVersion().desc()//.list();String str = null;for(ProcessDefinition  pd : list){ProcessDefinition processDefinition = list.get(0);str= processDefinition.getId();}BpmnModel model = repositoryService.getBpmnModel(str);if(model != null) {     Collection<FlowElement> flowElements = model.getMainProcess().getFlowElements();     for(FlowElement e : flowElements) {         System.out.println("flowelement id:" + e.getId() + "  name:" + e.getName() + "   class:" + e.getClass().toString());     }  }

Activiti工作流会签与获取下一节点任务信息相关推荐

  1. activiti根据当前节点获取下一个节点信息

    在流程中使用监听器判断当前节点是否需要经过,否则跳转到下一个节点,如下图 当提交申请之后,当前提交人为部门负责人,那么部门负责人节点就不需要走了,直接到下一个节点,但是下一个节点是什么并不知道,就可以 ...

  2. activiti 工作流会签 / 多人审批时若一人通过即可

    equenceFlow  流程定义文件leave-formkey.bpmn20.xml: [html]  <?xml version="1.0" encoding=" ...

  3. Activiti 工作流会签开发设计思路

    在流程业务管理中,任务是通常都是由一个人去处理的,而多个人同时处理一个任 务,这种任务我们称之为会签任务.这种业务需求也很常见,如一个请款单,领导审批环节中,就需要多个部门领导签字.在流程业务中,我们 ...

  4. activiti工作流会签功能的实现

    需求:统计会签部门的审核情况然后决定下一步流程的走向: 逻辑实现: 1.设置一个变量signCount 如果同意,signCount+1 // 如果是会签流程List< Task > ta ...

  5. Activiti 工作流引擎 ~ 获取审批记录

    审批意见保存在ACT_HI_COMMENT表中 审批状态保存在ACT_HI_VARINST表中,为任务变量 public List<ApprovalEntity> getHistoryTa ...

  6. activiti根据当前节点获取下一个UseTask节点

    以前写过一篇文章activiti根据当前节点获取下一个节点信息,当时的需求只是需要获取下一个节点而已,并没有要求获得什么类型的节点,所以下一个节点可能是任何节点,在最近的项目中的需求是根据当前的节点获 ...

  7. Activiti工作流内建数据库表分析

    2019独角兽企业重金招聘Python工程师标准>>> 如上图所示:activiti 5.22.0 版内建25张表,下面我将简要分析下这些表的作用. 1.表分类浅析 activiti ...

  8. DOM算法系列002-寻找指定DOM节点的上一个或下一个节点

    DOM操作算法002-寻找指定DOM节点的上一个或下一个节点-- getDomNode 当我们需要寻找指定DOM节点的上一个节点或下一个节点时,我们可能第一时间会想到下面两个API: node.pre ...

  9. javascript中节点操作、节点属性、节点获取、创建节点、删除节点、克隆节点

    节点操作 节点操作实际是利用DOM树把节点划分为不同的层次关系,常见父子兄弟级关系 节点属性: 节点一般有三个属性:nodeType节点类型(其中元素节点值为1,属性节点值为2,文本节点值为3).no ...

最新文章

  1. 用 Flask 来写个轻博客 (6) — (M)VC_models 的关系(one to many)
  2. Spring JDBC-使用XML配置声明式事务
  3. VS2015 添加DNX SDK
  4. 浏览器获取设备信息_一条命令获取 IE 浏览器保存网站的账号和密码信息
  5. python实现界面自由切换_PyQt实现界面翻转切换效果
  6. MyEclipse 9.0的激活机制
  7. LeetCode 688. “马”在棋盘上的概率
  8. 2020统计局的行政划分表_国家统计局:月入2000-5000元并非“中等收入群体”
  9. ❤️《JUC并发编程从入门到高级》(建议收藏)❤️
  10. Identity Mappings in Deep Residual Networks2016【论文理解】
  11. 关于 Node.js 的认证方面的教程(很可能)是有误的
  12. fileman命令的帮助+?
  13. 你的系统可靠性和可用性是几个9?
  14. 创新科技普济天下,华为无线重构世界
  15. 经典 tcp粘包分析
  16. linux 显卡优化软件,NVClock:优化 Nvidia 显卡
  17. 我的世界java怎么自制皮肤_我的世界手机版皮肤怎么做 自己做皮肤教程
  18. Ubuntu 16.04+CUDA8.0+Caffe+OpenCV3.1
  19. ORA-01547、ORA-01194、ORA-01110
  20. android javapoet 翻译

热门文章

  1. 基于jQuery实现王者荣耀英雄自定义增删改查功能 源码
  2. java 商品评价_java 商品评价计算算法
  3. shields 徽标_创意讲故事徽标的剖析
  4. 麻雀要革命2 第8节:莽撞的麻雀小姐
  5. Bitly:构建月处理60亿点击的分布式系统(转载)
  6. iOS7+系统自带条码扫描
  7. 破解携程中文验证码爬取机票价格数据
  8. 人教版计算机三年级教学目标,人教版三年级信息技术教学计划.doc
  9. python helper方法_Python io_utils.ImportHelper方法代碼示例
  10. 我的jQuery学习之路(笔记)——四