湖州建设企业网站江门网

张小明 2026/1/17 11:00:42
湖州建设企业网站,江门网,本地网站搭建工具,软考网络规划设计师文章目录 1、分配任务负责人1.1、固定分配2.2、动态分配--表达式分配2.2.1、UEL 表达式2.2.2、编写代码配置负责人2.2.3、注意事项 2.3、动态分配--监听器分配 2、查询任务2.1、查询任务负责人的待办任务2.2、关联 businessKey 3、办理任务 1、分配任务负责人 1.1、固定分配 …文章目录1、分配任务负责人1.1、固定分配2.2、动态分配--表达式分配2.2.1、UEL 表达式2.2.2、编写代码配置负责人2.2.3、注意事项2.3、动态分配--监听器分配2、查询任务2.1、查询任务负责人的待办任务2.2、关联 businessKey3、办理任务1、分配任务负责人1.1、固定分配在进行业务流程建模时指定固定的任务负责人 如图并在 properties 视图中填写 Assignee 项为任务负责人。实际工作中固定分配任务负责人用的很少只当作了解。2.2、动态分配–表达式分配由于固定分配方式任务只管一步一步执行任务执行到每一个任务将按照 bpmn 的配置去分配任务负责人。2.2.1、UEL 表达式Activiti 使用 UEL 表达式 UEL 是 java EE6 规范的一部分 UELUnified Expression Language即 统一表达式语言 activiti 支持两个 UEL 表达式 UEL-value 和 UEL-method。UEL-value 定义如图assignee 这个变量是 activiti 的一个流程变量或者使用这种方式定义如图user 也是 activiti 的一个流程变量 user.assignee 表示通过调用 user 的 getter 方法获取值。UEL-method 方式如图userBean 是 spring 容器中的一个 bean表示调用该 bean 的 getUserId()方法。UEL-method 与 UEL-value 结合再比如${ldapService.findManagerForEmployee(emp)}ldapService 是 spring 容器的一个 beanfindManagerForEmployee 是该 bean 的一个方法emp 是 activiti流程变量 emp 作为参数传到 ldapService.findManagerForEmployee 方法中。其它表达式支持解析基础类型、 bean、 list、 array 和 map也可作为条件判断。如下${order.price100order.price250}2.2.2、编写代码配置负责人定义任务分配流程变量如图设置流程变量在启动流程实例时设置流程变量如下/** * 设置流程负责人 */TestpublicvoidassigneeUEL(){// 获取流程引擎ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 获取 RuntimeServiceRuntimeServiceruntimeServiceprocessEngine.getRuntimeService();// 设置assignee的取值用户可以在界面上设置流程的执行MapString,ObjectassigneeMapnewHashMap();assigneeMap.put(assignee0,张三);assigneeMap.put(assignee1,李经理);assigneeMap.put(assignee2,王总经理);assigneeMap.put(assignee3,赵财务);// 启动流程实例同时还要设置流程定义的assignee的值runtimeService.startProcessInstanceByKey(myEvection1,assigneeMap);// 输出System.out.println(processEngine.getName());}执行成功后可以在act_ru_variable表中看到刚才map中的数据2.2.3、注意事项由于使用了表达式分配必须保证在任务执行过程表达式执行成功比如某个任务使用了表达式${order.price 100 order.price 250}当执行该任务时必须保证 order 在流程变量中存在否则 activiti 异常。2.3、动态分配–监听器分配可以使用监听器来完成很多Activiti流程的业务。使用监听器的方式来指定负责人在流程设计时就不需要指定assignee。任务监听器是发生对应的任务相关事件时执行自定义 java 逻辑 或表达式。任务相当事件包括Event的选项包含Create任务创建后触发 Assignment任务分配后触发 Delete任务完成后触发 All所有事件发生都触发定义任务监听类且类必须实现 org.activiti.engine.delegate.TaskListener 接口publicclassMyTaskListenerimplementsTaskListener{Overridepublicvoidnotify(DelegateTaskdelegateTask){if(delegateTask.getName().equals(创建出差申请)delegateTask.getEventName().equals(create)){//这里指定任务负责人delegateTask.setAssignee(张三);}}}DelegateTask对象的内容如下注意事项使用监听器分配方式按照监听事件去执行监听类的 notify 方法方法如果不能正常执行也会影响任务的执行。2、查询任务2.1、查询任务负责人的待办任务代码如下// 查询当前个人待执行的任务TestpublicvoidfindPersonalTaskList(){ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 流程定义keyStringprocessDefinitionKeymyEvection1;// 任务负责人Stringassignee张三;// 获取TaskServiceTaskServicetaskServiceprocessEngine.getTaskService();ListTasktaskListtaskService.createTaskQuery().processDefinitionKey(processDefinitionKey).includeProcessVariables().taskAssignee(assignee).list();for(Tasktask:taskList){System.out.println(----------------------------);System.out.println(流程实例id task.getProcessInstanceId());System.out.println(任务id task.getId());System.out.println(任务负责人 task.getAssignee());System.out.println(任务名称 task.getName());}}2.2、关联 businessKey需求在 activiti 实际应用时查询待办任务可能要显示出业务系统的一些相关信息。比如查询待审批出差任务列表需要将出差单的日期、 出差天数等信息显示出来。出差天数等信息在业务系统中存在而并没有在 activiti 数据库中存在所以是无法通过 activiti 的 api 查询到出差天数等信息。实现在查询待办任务时通过 businessKey业务标识 关联查询业务系统的出差单表查询出出差天数等信息。//在查询待办任务时通过 businessKey业务标识 关联查询业务系统的出差单表查询出出差天数等信息。/** * 查询个人待办任务 关联businesskey */TestpublicvoidfindProcessinstance(){ProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();RuntimeServiceruntimeServiceprocessEngine.getRuntimeService();TaskServicetaskServiceprocessEngine.getTaskService();// 查询张三的个人的待办任务 查询结果是一个 任务对象TasktasktaskService.createTaskQuery().processDefinitionKey(myEvection1).taskAssignee(张三).singleResult();// 通过个人task任务对象 查询流程实例idStringprocessInstanceIdtask.getProcessInstanceId();// 通过流程实例id 查询流程实例对象ProcessInstanceprocessInstanceruntimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();// 通过流程实例对象查询关联的bussinesskeyStringbusinessKeyprocessInstance.getBusinessKey();System.out.println(businessKeybusinessKey);}3、办理任务注意在实际应用中完成任务前需要校验任务的负责人是否具有该任务的办理权限/** * 完成任务判断当前用户是否有权限 */TestpublicvoidcompletTask2(){//任务idStringtaskId42502;// 任务负责人Stringassingeejack;//获取processEngineProcessEngineprocessEngineProcessEngines.getDefaultProcessEngine();// 创建TaskServiceTaskServicetaskServiceprocessEngine.getTaskService();// 完成任务前需要校验该负责人可以完成当前任务// 校验方法// 根据任务id和任务负责人查询当前任务如果查到该用户有权限就完成TasktasktaskService.createTaskQuery().taskId(taskId).taskAssignee(assingee).singleResult();if(task!null){taskService.complete(taskId);System.out.println(完成任务);}}“人的一生会经历很多痛苦但回头想想都是传奇”。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

承德网站建设专家蚌埠发布刚刚

这个嵌入式护照阅读器的应用超级广泛!在机场,它帮助我们快速办理登机手续,不再需要在柜台前长时间等待人工查验护照;在边检,它能精准识别各国护照,快速判断证件真伪,守护国门安全;在…

张小明 2026/1/15 1:53:38 网站建设

网站建设合同补充协议怎么写做个网站成本

Pyomo优化建模完全指南:从入门到精通的核心路径 【免费下载链接】pyomo An object-oriented algebraic modeling language in Python for structured optimization problems. 项目地址: https://gitcode.com/gh_mirrors/py/pyomo 在现代工程和商业决策中&…

张小明 2026/1/14 13:54:02 网站建设

当建设部门网站长沙营销型网页制作公司

手把手教你用PyQt打造工业级上位机:从串口通信到界面解耦的实战之路你有没有遇到过这样的场景?手头有个STM32或Arduino项目,数据能采、指令也能发,但就是缺一个“像样”的控制面板——要么靠串口助手复制粘贴命令,要么…

张小明 2026/1/14 12:57:20 网站建设

wordpress 网站播放器wordpress模板颓废

想要成为一名优秀的嵌入式系统工程师却不知道从何开始?Embedded-Engineering-Roadmap项目为你提供了一条清晰的学习路径,帮助初学者系统掌握嵌入式开发的核心技能。无论你是电子爱好者还是计算机专业学生,这个路线图都能指引你走向成功的职业…

张小明 2026/1/15 0:49:27 网站建设

做网站贵不贵网站建设费用都包括什么科目

第一章:Open-AutoGLM的诞生背景与战略意义随着大语言模型技术的迅猛发展,通用人工智能(AGI)正逐步从理论走向实际应用。在这一背景下,Open-AutoGLM应运而生,旨在构建一个开源、可扩展、自主演进的通用语言模…

张小明 2026/1/14 15:55:18 网站建设

做经营网站怎么赚钱保定网站建设的过程

Windows PowerShell配置Miniconda-Python3.11运行PyTorch 在深度学习项目日益复杂的今天,一个稳定、可复现的开发环境几乎是每位AI工程师和科研人员的“刚需”。你是否也遇到过这样的场景:好不容易跑通的模型,在换一台机器或重装系统后却因依…

张小明 2026/1/17 10:32:13 网站建设