activiti-serviceTask(服务任务)

2023-10-26

Activiti服务任务(serviceTask)

Activiti服务任务(serviceTask)

作者:邓家海

都有一段沉默的时间,等待厚积薄发

应用场景:

当客户有这么一个需求:下一个任务我需要自动执行一些操作,并且这个节点不需要任何的人工干涉,也就是说这个节点是自动化的。那么,这个当前面一个经办人员把任务发送下去的时候,自然而然的下一个节点就会开始马上执行。这个时候。我们就需要使用Activiti工作流的ServiceTask任务。

 

ServiceTask任务的实现,其实不复杂。

 

实现步骤:

(1)设计流程

(2)编写委托类

(3)把委托类设置到流程的监听类上面

 

设计流程:

 

 

 

编写委托类:

 

复制代码

1 package light.mvc.workflow.serviceTask;
 2 
 3  
 4 
 5 import org.activiti.engine.delegate.DelegateExecution;
 6 
 7 import org.activiti.engine.delegate.Expression;
 8 
 9 import org.activiti.engine.delegate.JavaDelegate;
10 
11  
12 
13 /**  
14 
15  *   
16 
17  * 项目名称:lightmvc  
18 
19  * 类名称:ServiceTask  
20 
21  * 类描述:  
22 
23  * 创建人:邓家海  
24 
25  * 创建时间:2017年6月4日 下午6:18:11  
26 
27  * 修改人:deng  
28 
29  * 修改时间:2017年6月4日 下午6:18:11  
30 
31  * 修改备注:  
32 
33  * @version   
34 
35  *   
36 
37  */
38 
39  
40 
41 public class ServiceTask implements JavaDelegate{
42 
43 //流程变量
44 
45 private Expression text1;
46 
47  
48 
49 //重写委托的提交方法
50 
51 @Override
52 
53 public void execute(DelegateExecution execution) throws Exception {
54 
55 System.out.println("serviceTask已经执行已经执行!");
56 
57 String value1 = (String) text1.getValue(execution);
58 
59 System.out.println(value1);
60 
61     execution.setVariable("var1", new StringBuffer(value1).reverse().toString());
62 
63 }
64 
65  
66 
67 }

复制代码

 

 

把委托类设置到流程的监听类上面:

 

 

 

 

 

 

流程代码:

 

复制代码

<?xml version="1.0" encoding="UTF-8"?>
 <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
   <process id="process" isExecutable="true">
     <startEvent id="sid-F6C5FFC5-63CA-453D-8C11-2DA040793DE9"></startEvent>
     <serviceTask id="sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4" name="服务" activiti:class="light.mvc.workflow.serviceTask.ServiceTask">
       <extensionElements>
         <activiti:field name="text1">
           <activiti:string><![CDATA[test]]></activiti:string>
         </activiti:field>
       </extensionElements>
     </serviceTask>
     <endEvent id="sid-DB39A39C-1BCC-4F45-B909-9A4319632B42"></endEvent>
     <sequenceFlow id="sid-567FAFA0-954C-4BC1-AC05-4610A75001B2" sourceRef="sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4" targetRef="sid-DB39A39C-1BCC-4F45-B909-9A4319632B42"></sequenceFlow>
     <sequenceFlow id="sid-44C871F5-454A-4D4E-8E6F-C0FAA38C7E38" sourceRef="sid-F6C5FFC5-63CA-453D-8C11-2DA040793DE9" targetRef="sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4"></sequenceFlow>
   </process>
   <bpmndi:BPMNDiagram id="BPMNDiagram_process">
     <bpmndi:BPMNPlane bpmnElement="process" id="BPMNPlane_process">
       <bpmndi:BPMNShape bpmnElement="sid-F6C5FFC5-63CA-453D-8C11-2DA040793DE9" id="BPMNShape_sid-F6C5FFC5-63CA-453D-8C11-2DA040793DE9">
         <omgdc:Bounds height="30.0" width="30.0" x="172.75" y="99.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4" id="BPMNShape_sid-77E58C69-38B7-4DE5-BD73-D0B6CEDD48D4">
         <omgdc:Bounds height="80.0" width="100.0" x="315.0" y="60.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape bpmnElement="sid-DB39A39C-1BCC-4F45-B909-9A4319632B42" id="BPMNShape_sid-DB39A39C-1BCC-4F45-B909-9A4319632B42">
         <omgdc:Bounds height="28.0" width="28.0" x="480.0" y="100.0"></omgdc:Bounds>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge bpmnElement="sid-567FAFA0-954C-4BC1-AC05-4610A75001B2" id="BPMNEdge_sid-567FAFA0-954C-4BC1-AC05-4610A75001B2">
         <omgdi:waypoint x="415.0" y="100.0"></omgdi:waypoint>
         <omgdi:waypoint x="447.5" y="100.0"></omgdi:waypoint>
         <omgdi:waypoint x="447.5" y="114.0"></omgdi:waypoint>
         <omgdi:waypoint x="480.0" y="114.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge bpmnElement="sid-44C871F5-454A-4D4E-8E6F-C0FAA38C7E38" id="BPMNEdge_sid-44C871F5-454A-4D4E-8E6F-C0FAA38C7E38">
         <omgdi:waypoint x="202.75" y="114.0"></omgdi:waypoint>
         <omgdi:waypoint x="258.875" y="114.0"></omgdi:waypoint>
         <omgdi:waypoint x="258.875" y="100.0"></omgdi:waypoint>
         <omgdi:waypoint x="315.0" y="100.0"></omgdi:waypoint>
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </definitions>

复制代码

 

 

 

然后执行流程(我的控制台乱码,没时间处理,不影响):

 

 

 

 

 

 

升级:

假如客户说,我并不想马上去执行这个任务,我只是想在某一个时间之后才去执行这个任务。那么上面的要求显然又不能满足需求了。我们又要怎么去升级改进呢?其实也很简单。我们前面已经实现了定时边界任务。我们只需要增加一个定时边界来处理就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

activiti-serviceTask(服务任务) 的相关文章

  • activiti-serviceTask(服务任务)

    Activiti服务任务 serviceTask Activiti服务任务 serviceTask 作者 邓家海 都有一段沉默的时间 等待厚积薄发 应用场景 当客户有这么一个需求 下一个任务我需要自动执行一些操作 并且这个节点不需要任何的人
  • Activiti6.0学习实践(4)-流程引擎配置一

    在上一节 我们进行了一个hello world 的简单应用搭建 本节继续对activiti的一些重要组件进行更进一步的分析 目录 1 activiti工程骨架 1 2 添加demo类到骨架工程 1 3 创建基于骨架的maven工程 2 流程
  • 2023最新版本Activiti7系列-网关服务

    网关篇 网关可控制流程的执行流向 常用于拆分或合并复杂的流程场景 在Activiti7中 有以下几种类型的网关 排他网关 Exclusive Gateway 用于在流程中进行条件判断 根据不同的条件选择不同的分支路径 只有满足条件的分支会被
  • activiti源码解析系列8 - 任务完成命令类

    我们在完成任务的时候都执行了哪些操作呢 主要涉及删除表 默认非级联 ACT RU TASK ACT RU IDENTITYLINK ACT RU VARIABLE 主要看一个CompleteTaskCmd protected Void ex
  • activiti-Cancel activity属性(cancelActivity)作用

    流程设计工具 activiti explorer activiti版本 5 22 在使用边界计时器事件时 事件有一个参数 Cancel activity 作用上图 如下 Cancel activity选中 在事件中设置5秒计时 当开始流程后
  • Activiti 5 提示:Default sequenceflow has a condition, which is not allowed

    今天重拾Activiti 5 Spring Boot 流程引擎管理 启动一个简单的请假流程实例 在控制台输出如下错误信息 org activiti engine ActivitiException Errors while parsing
  • activiti 动态分配任务候选人

    任务候选人是有权限对该任务进行操作的用户 可以使用TaskService addCandidateUser 或 addCandidateGroup 实现 可以在bpmn中进行配置 可以使用监听器方式 需要继承TaskListener 可以使
  • Activiti6.0学习实践(2)-源码工程构建

    上节对工作流和activiti有了一个基本认识 本节主要目的是构建源码工程 了解如何从git上创建本地的工程 同时对源码有个基本的了解 目录 1 克隆到本地 2 建立远程git库分支 3 导入到工程 4 源码基本结构 5 基于源码启动act
  • 万字详解:Activiti 工作流引擎

    点击上方 芋道源码 选择 设为星标 管她前浪 还是后浪 能浪的浪 才是好浪 每天 10 33 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2021 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网
  • 2023最新版本Activiti7系列-源码篇-初始化过程

    源码分析 1 设计模式 1 1 命令模式 https dpb bobokaoya sm blog csdn net article details 89115420 1 2 责任链模式 https dpb bobokaoya sm blog
  • activiti5.17.0流程图及节点显示

    引用 activiti流程图上获取各节点的信息获取 这篇文章写得很好 揭示了图片点击出现信息的方法 于是我也做了 只不过有些改动 可能是activiti的版本不同的原因 jsp页面 通过流程实例id进行操作
  • activiti学习之服务任务

    写在前面 对于工作流 我们使用最多的是用户任务节点 用户任务节点就是给用户来生成任务的 需要人来手动的处理 而与之对应的还有服务任务节点 这种类型的节点需要人手动的参与而是程序来执行 即执行某个类的某个方法 这个类一般是org activi
  • 2023最新版本Activiti7系列-身份服务

    身份服务 在流程定义中在任务结点的 assignee 固定设置任务负责人 在流程定义时将参与者固定设置在 bpmn 文件中 如果临时任务负责人变更则需要修改流程定义 系统可扩展性差 针对这种情况可以给任务设置多个候选人或者候选人组 可以从候
  • (四)activiti7大服务service详解——2 RuntimeService

    前言 在 Activiti 中 每当一个流程定义被启动一次之后 都会生成一个相应的流程对象实例 Runtime Service 提供了启动流程 查询流程实例 设置获取流程实例变量等功能 此外它还提供了对流程部署 流程定义和流程实例的存取服务
  • runtimeService 运行时服务组件

    在Activiti中 启动一个流程后 会创建一个流程实例 ProcessInstance继承Execution 两个都是接口 每个流程实例至少会有一个执行流 Execution 当流程实例没有流程分支时 一般情况下只会存在一个执行流 假设出
  • activiti7-1-环境准备(idea)

    activiti7环境准备 1 首先安装插件 2 然后建库 3 pom 4 配置文件 4 1 log4j properties 4 2 activiti cfg xml 5 测试类生成表 6 目录结构 7 最后的操作 务必看一看 又回到cs
  • Activiti / Camunda 用变量改变边界计时器

    我有一个关于 Activiti Camunda 中用户任务的计时器边界事件的特殊问题 启动流程时 我使用流程变量设置计时器持续时间 并使用边界定义中的表达式来解析该变量 边界事件是在用户任务上定义的
  • Activiti 6.0.0 完成任务时无法获取表单属性

    我是 Activiti 6 0 0 的新手 我创建了一个包含用户任务的进程 第二个用户任务有两个表单属性 但是当我完成第一个用户任务并尝试完成第二个用户任务时 表单属性不显示 我无法完成用户任务 下面是我的 bpm 流程
  • 如何获取控制器中流程实例的ID?

    我的环境 Alfresco Share v5 2 d r134641 b15 Aikau 1 0 101 3 Spring Surf 5 2 d Spring WebScripts 6 13 Freemarker 2 3 20 alfres
  • 复杂的 Activiti + JPA 查询

    我们正在尝试在一个新项目中使用Activiti 我创建了一个设置 它通过 JPA 使用 Hibernate 来持久保存流程中涉及的实体 并且 JPA 与 Activiti 互连 因此我们可以将这些实体用作 JPA 变量 看 Activiti

随机推荐

  • main,restricted,universe,multiverse有什么区别

    main restricted universe multiverse有什么区别 转载 main 完全的自由软件 restricted 不完全的自由软件 universe ubuntu官方不提供支持与补丁 全靠社区支持 muitiverse
  • mysql 8.0以上版本,安装及解决忘记密码问题

    1 官网下载解压版MySQL数据库 下载链接 https dev mysql com downloads mysql 2 将下载的mysql放在自己喜欢的盘符 不一定是C盘 例如我的就是解压在D盘 D mysql mysql 8 0 18
  • 三角形设计测试用例

    三角形设计测试用例的问题在面试的时候经常遇到 假设输入三个整数a b c分别作为三边的边长构成三角形 通过程序判定所构成的三角形的类型 当此三角形为一般三角形 等腰三角形及等边三角形时 要求画出程序的流程图和时序图 并且用自己熟悉的一种语言
  • 解决Windows缺少api-ms-win-core-com-l1-1-0.dll文件问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个api ms win core com l1 1
  • 程切换问题

    处理器总处于以下状态中的一种 内核态 运行于进程上下文 内核代表进程运行于内核空间 内核态 运行于中断上下文 内核代表硬件运行于内核空间 用户态 运行于用户空间 一个进程的上下文可以分为三个部分 用户级上下文 寄存器上下文以及系统级上下文
  • SQL文本数据格式化的方法(sql-formatter)

    首先安装sql formatter npm install sql formatter save 或者 yarn add sql formatter 引入sql formatter import sqlFormatter from sql
  • JAVA语言功能的概述,JAVA语言概述总结

    J2ME 主要用于控制移动设备和信息家电等有限存储的设备 J2SE 整个Java技术的核心和基础 是J2ME和J2EE编程的基础 J2EE Java技术中应用最广泛的部分 J2EE提供了企业应用开发的完整解决方案 流行语言比较 1 c Mi
  • (二) 基本操作 - 图片的拉伸与缩放

    图片缩放用到的主要函数是 cv2 resize 它最简单的形式如下 cv2 resize img new width new height 其中 img为源图片 new width new height 为缩放后的宽度和高度 函数返回缩放后
  • 高速电路设计基本概念之——近端串扰和远端串扰

    以下内容摘自英文版的信号完整性分析一书 SIGNAL INTEGRITY By Eric Bogatin The noise between two adjacent transmission lines can be measured i
  • word的Ctrl+V与Mathtype冲突解决办法

    首先将所有的office软件关闭 一 打开mathtype的安装目录 找到其中的两个文件 MathPage wll E software MathType MathPage 64 MathType Commands 2016 dotm E
  • java jsch 密钥登陆_java – 使用JSch时“无效的私钥”

    我正在使用以下代码在 Java应用程序中使用 Git 我有一个有效的密钥 一直使用它 这个特定的代码以前使用相同的密钥和git存储库 但现在我得到以下异常 invalid privatekey B 59c40796 在这一行 jSch ad
  • 深度学习概念(术语):Fine-tuning、Knowledge Distillation, etc

    文章目录 1 Fine tuning 微调 2 Transfer Learning 迁移学习 3 Knowledge Distillation 知识蒸馏 4 Meta Learning 元学习 这里的相关概念都是基于已有预训练模型 就是模型
  • cmake简洁教程 - 第一篇

    由于cmake内容较多 篇幅较长 为了不让人疲倦 分成了多篇博客 全部博客链接如下 cmake简洁教程 第一篇 YZF Kevin的博客 CSDN博客 cmake简洁教程 第二篇 YZF Kevin的博客 CSDN博客 cmake简洁教程
  • mt19937 随机数

    https blog csdn net real myth article details 53893854 https blog csdn net calmreason article details 72655060 https blo
  • 数字图像处理-python基于opencv代码实现 反转变换、对数变换和幂律(伽马)变换

    本文主要介绍对 数字图像处理 第三章书中示例图片实现 反转变换 对数变换以及伽马变换的代码 若要获取更多数字图像处理 python 深度学习 机器学习 计算机视觉等高清PDF以及 更多有意思的 分享 可搜一搜 微信公共号 分享猿 免费获取资
  • typescript基础之object和Object

    TypeScript 的 object 和 Object 是两种不同的类型 它们的区别和用途如下 object 类型是 TypeScript 2 2 引入的新类型 它表示非原始对象 也就是除了 number string boolean s
  • 实时时钟电路DS1302的原理及应用

    2006 05 11 10 10 39 实时时钟电路DS1302的原理及应用
  • 使用windeployqt.exe打包QT工程,windows系统可执行程序

    前言 因为自己打包qt程序遇到点问题 提示0xc000007b错误 发现是因为打包工具和工程编译工具不对应导致 于是为了记录打包方法 有了此篇文章 记录使用windeployqt exe打包qt工程在windows系统的可执行文件 一 确定
  • adb install 命令参数

    adb install 6个参数描述 t 允许测试包 l 锁定该应用程序 s 把应用程序安装到sd卡上 g 为应用程序授予所有运行时的权限 r 替换已存在的应用程序 也就是说强制安装 d 允许进行将见状 也就是安装的比手机上带的版本低
  • activiti-serviceTask(服务任务)

    Activiti服务任务 serviceTask Activiti服务任务 serviceTask 作者 邓家海 都有一段沉默的时间 等待厚积薄发 应用场景 当客户有这么一个需求 下一个任务我需要自动执行一些操作 并且这个节点不需要任何的人