activiti学习之服务任务

2023-11-15

写在前面

对于工作流,我们使用最多的是用户任务节点,用户任务节点就是给用户来生成任务的,需要人来手动的处理,而与之对应的还有服务任务节点,这种类型的节点需要人手动的参与而是程序来执行,即执行某个类的某个方法,这个类一般是org.activiti.engine.delegate.JavaDelegate的子类。下面我们一起来看下如何使用。

1:测试

1.1:设计流程

  • 效果图

在这里插入图片描述

其中设置任务节点执行的类设置如下:

在这里插入图片描述

类定义如下:

package com.jh.activiti;

import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.JavaDelegate;

public class MyServiceTaskDelegate implements JavaDelegate {
    @Override
    public void execute(DelegateExecution execution) throws Exception {
        System.out.println("服务节点对应的类自动执行了!!!");
    }
}
  • xml
<?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/test">
    <process id="csdnServiceTask" name="csdnServiceTask" isExecutable="true">
        <startEvent id="startevent1" name="Start"></startEvent>
        <serviceTask id="servicetask1" name="服务任务节点" activiti:class="com.jh.activiti.MyServiceTaskDelegate"></serviceTask>
        <endEvent id="endevent1" name="End"></endEvent>
        <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="servicetask1"></sequenceFlow>
        <sequenceFlow id="flow2" sourceRef="servicetask1" targetRef="endevent1"></sequenceFlow>
    </process>
    <bpmndi:BPMNDiagram id="BPMNDiagram_csdnServiceTask">
        <bpmndi:BPMNPlane bpmnElement="csdnServiceTask" id="BPMNPlane_csdnServiceTask">
            <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
                <omgdc:Bounds height="35.0" width="35.0" x="190.0" y="220.0"></omgdc:Bounds>
            </bpmndi:BPMNShape>
            <bpmndi:BPMNShape bpmnElement="servicetask1" id="BPMNShape_servicetask1">
                <omgdc:Bounds height="55.0" width="105.0" x="410.0" y="210.0"></omgdc:Bounds>
            </bpmndi:BPMNShape>
            <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
                <omgdc:Bounds height="35.0" width="35.0" x="720.0" y="220.0"></omgdc:Bounds>
            </bpmndi:BPMNShape>
            <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
                <omgdi:waypoint x="225.0" y="237.0"></omgdi:waypoint>
                <omgdi:waypoint x="410.0" y="237.0"></omgdi:waypoint>
            </bpmndi:BPMNEdge>
            <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
                <omgdi:waypoint x="515.0" y="237.0"></omgdi:waypoint>
                <omgdi:waypoint x="720.0" y="237.0"></omgdi:waypoint>
            </bpmndi:BPMNEdge>
        </bpmndi:BPMNPlane>
    </bpmndi:BPMNDiagram>
</definitions>

1.2:部署流程

@Test
public void deploy() {
    Deployment deployment = repositoryService.createDeployment() // 创建部署
            .addClasspathResource("com/jh/activiti/csdnServiceTask.bpmn20.xml") // 加载流程资源文件
            .name("csdn服务节点测试111") // 流程名称
            .deploy(); // 部署
    System.out.println("流程部署ID:" + deployment.getId());
    System.out.println("流程部署Name:" + deployment.getName());
}

在这里插入图片描述

在这里插入图片描述

1.3:启动实例

@Test
public void startInstance() {
    runtimeService.startProcessInstanceByKey("csdnServiceTask");
}

因为是自动执行,所以,启动实例后就会执行了,输出如下:

在这里插入图片描述

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

activiti学习之服务任务 的相关文章

  • 使用 JDBC 获取 Oracle 11g 的最后插入 ID

    我是使用 Oracle 的新手 所以我将放弃之前已经回答过的内容这个问题 https stackoverflow com questions 3131064 get id of last inserted record in oracle
  • 获取文件的锁

    我想在对特定文件开始 threo read 时获取文件上的锁定 以便其他应用程序无法读取已锁定的文件并希望在线程终止时释放锁定文件 您可以获得一个FileLock https docs oracle com javase 8 docs ap
  • Oracle Java 教程 - 回答问题时可能出现错误

    我是 Java 新手 正在阅读 Oracle 教程 每个部分之后都有问题和答案 我不明白一个答案中的一句话 见下面的粗体线 来源是https docs oracle com javase tutorial java javaOO QandE
  • 当路径的点超出视野时,Android Canvas 不会绘制路径

    我在绘制路径时遇到了 Android Canvas 的一些问题 我的情况是 我有一个相对布局工作 如地图视图 不使用 google api 或类似的东西 我必须在该视图上绘制一条路径 canvas drawPath polyPath bor
  • Base36 编码字符串?

    我一直在网上查找 但找不到解决此问题的方法 在 Python Ruby 或 Java 中 如何对以下字符串进行 Base 36 编码 nOrG9Eh0uyeilM8Nnu5pTywj3935kW 5 Ruby 以 36 为基数 s unpa
  • 如何使用 JAVA 代码以编程方式捕获线程转储?

    我想通过 java 代码生成线程转储 我尝试使用 ThreadMXBean 为此 但我没有以正确的格式获得线程转储 因为我们正在使用jstack命令 请任何人提供一些帮助 他们是否有其他方式获取线程转储 使用任何其他 API 我想要的线程转
  • 在 Struts 2 中传递 URL 参数而不使用查询字符串

    我想使用类似的 URL host ActionName 123 abc 而不是像这样传递查询字符串 host ActionName parm1 123 parm2 abc 我怎样才能在 Struts 2 中做到这一点 我按照下面的方法做了
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • org/codehaus/plexus/archiver/jar/JarArchiver(不支持的major.minor版本49.0)-Maven构建错误

    下午大家 我在尝试构建项目时收到上述错误 我很确定这与使用 Java 1 6 编译的 Maven 最新更新有关 而我们尝试构建的项目是 1 4 项目 在此之前的插件工作没有问题 因此我将以下内容添加到 POM xml 文件中以尝试强制使用现
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 从休眠乐观锁定异常中恢复

    我有一个这样的方法 Transactional propagation Propagation REQUIRES NEW public void doSomeWork Entity entity dao loadEntity do some
  • 如何删除日期对象的亚秒部分

    当 SQL 数据类型为时间戳时 java util Date 存储为 2010 09 03 15 33 22 246 如何在存储记录之前将亚秒设置为零 例如 在本例中为 246 最简单的方法是这样的 long time date getTi
  • 我们如何测试包私有类?

    我正在看书Effective Java in Item 13 Minimize the accessibility of classes and members 它提到 为了方便测试 您可能想让类 接口或成员更易于访问 这在某种程度上是好的
  • 如何停止执行的 Jar 文件

    这感觉像是一个愚蠢的问题 但我似乎无法弄清楚 当我在 Windows 上运行 jar 文件时 它不会出现在任务管理器进程中 我怎样才能终止它 我已经尝试过 TASKKILL 但它对我也不起作用 On Linux ps ef grep jav
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • JMS 中的 MessageListener 和 Consumer 有什么区别?

    我是新来的JMS 据我了解Consumers能够从队列 主题中挑选消息 那么为什么你需要一个MessageListener因为Consumers会知道他们什么时候收到消息吗 这样的实际用途是什么MessageListener 编辑 来自Me
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • 使用 Java https 上传到 Imgur v3 错误

    我目前正在尝试使用他们当前的 API v3 上传到 imgur 但是我不断收到错误 错误 javax net ssl SSLException 证书中的主机名不匹配 api imgur com imgur com OR imgur com
  • 检查应用程序是否在 Android Market 上可用

    给定 Android 应用程序 ID 包名称 如何以编程方式检查该应用程序是否在 Android Market 上可用 例如 com rovio angrybirds 可用 而 com random app ibuilt 不可用 我计划从
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList

随机推荐

  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 手机大厂必备测试技能-CTS 兼容测试

    01 何为CTS 相信小伙伴们都有用过各种款式的Android手机 如小米 魅族 华为 oppo vivo 虽然他们的页面长的都不太一样 比如小米的长这样 魅族的 oppo的 还有垂死挣扎的锤子 但是这些手机其实都是搭载的Android系统
  • linux运维笔记-初级部分内容

    本文出自 老男孩linux运维 博客 请务必保留此出处http oldboy blog 51cto com 2561410 476884 运维初级内容参考列表 一 学习方法篇 老男孩Linux实战运维笔记 学习方法系列 1 学好运维四要素
  • 微信小程序订阅消息

    HTTPS 调用 请求地址 POST https api weixin qq com cgi bin message subscribe send access token ACCESS TOKEN 消息订阅官方文档 https devel
  • Java获取当前时间的年月日时分秒方法

    相关内容 package com ob import java text ParseException import java text SimpleDateFormat import java util Calendar import j
  • 异地多活paxos实现:Multi-Master-Paxos-3

    Background 200行代码实现paxos kv 中介绍了一款非常简洁的分布式kv存储实现 它是基于 classic paxos 实现分布式一致性 在 paxos的直观解释 中我们提到 每次写入 也就是每个 paxos 实例需要2轮
  • .net 中间件的使用 Use,Run,Map,MapWhen,UseWhen

    net 中间件的使用 Use Run Map MapWhen UseWhen net 提供了几种添加自定义中间件的方法Use Run Map MapWhen UseWhen Use app Use async context next gt
  • 20210208-mmdetection模型转为tensorrt(trt)

    1 下载下载对应的的cuda 由于本机装的是10 1 所以下了个cuda 10 0 130 410 48 linux run 2 下载配置tensorrt 我下的是 TensorRT 7 0 0 11 配置如下 export TR PATH
  • 光纤通道速率查看_光纤好坏如何区分,OM1234多模光纤有何区别?

    1 OM1 颜色为橙色 核心尺寸 62 5um 数据速率 1GB 850nm 距离 高达300米 应用 短程网络 局域网 LAN 和专用网络 2 OM2 颜色为橙色 核心尺寸 50um 数据速率 1GB 850nm 距离 高达600米 通常
  • Linux中用root用户打开vscode

    先打开终端切换到root用户 su root 接着输入 sudo code user data dir vscode root
  • 对数器

    对数器的作用 对数器可以说是验证算法是否正确的一种方式 尤其是在笔试的时候 用贪心算法写出的程序 暂时无法用数学公式严格推导证明 只能通过大量的数据集验证算法的正确性 而大量的数据集当中要包括各种情况 各个方面都要考虑到 对我们自己来说 有
  • WDK_学习笔记_区块链+ViT和Swin transformer

    文章目录 摘要 一 項目 Hyperledger fabric技术的深入学习 1 1 安装 2 2 0 只记录问题 其余按文档操作即可 二 深度学习 Version Transformer ViT 和Swin Transformer 2 1
  • 【Unity从零开始制作空洞骑士】①制作人物的移动跳跃转向以及初始的动画制作

    事情的起因 首先我之前在b站的时候突然发现有个大佬说复刻了空洞骑士 点进去一看发现很多场景都福源道非常详细 当时我除了觉得大佬很强的同时也想自己试一下 而且当时对玩家血条设计等都很模糊 就想着问up主 结果因为制作的时间过了很久了 大佬也有
  • Mock入门

    关键参数 name 唯一标识 return value 当被调用时 返回的值 可为函数 side effct 当存在时 return value不生效 返回side effect 导入库 from unittest import mock
  • 用户画像-标签体系

    1 前言 最近在学习用户画像 翻看了 彭友会 的七十多份资料 简单过了一遍赵宏田老师的书 最近又看了许多微信公众号里的文章 整体感受就是 资料太杂 内容太乱 重复的太多 相互间也会有些冲突 但大致可以归为两类 赵宏田老师的一套 另外其它的一
  • PDF文件复制文字

    最近在看电子书时 发现有的一些 PDF 文件看起来像是扫描的 但能直接复制文字 有的则不能 查找相关资料后明白了 不能复制的pdf文件 01 pdf文件加密了 02 扫描和图形格式做的PDF文件 PDF文件如果加密了 对于一些不允许做修改
  • Android关于AutoService、Javapoet讲解

    AutoService会自动在META INF文件夹下生成Processor配置信息文件 该文件里就是实现该服务接口的具体实现类 而当外部程序装配这个模块的时候 就能通过该jar包META INF services 里的配置文件找到具体的实
  • ChatGPT不能代替人类写作的四个原因

    近期留学圈最火的C位当属ChatGPT 作为一款OpenAI开发的语言模型 ChatGPT在文本生成上的优秀表现大大助力了母语非当地语言的留学生们 写邮件 翻译并理解文本乃至写代码 ChatGPT似乎所向披靡 不少同学也产生了这个想法 用它
  • pageHelper分页失效解决方案

    前言 pageHelper是一款优秀的Mybatis分页插件 在项目中可以非常便利的使用 使开发效率得到很大的提升 但不支持一对多结果映射的分页查询 所以在平时的使用时 对于一对多分页会出现分页错误 这篇文章主要对pageHelper分页错
  • activiti学习之服务任务

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