美文网首页设计方案
camunda工作流(五)spring boot集成0到1

camunda工作流(五)spring boot集成0到1

作者: 一个忙来无聊的人 | 来源:发表于2020-01-19 17:53 被阅读0次

    本人初学,研究好几天,目前已经能正常运行,参考官网搭建简单流程,为了方便对比,更多资料欢迎访问官网查询获取 https://docs.camunda.org/get-started/quick-start/
    声明:本文顺序和官网介绍可能不一致,若有错误地方欢迎指正避免误导

    一、环境准备

    jdk 1.8以上环境
    拥有你的idea 本人使用 IntelliJ IDEA
    JDK以及 camunda-bpm-tomcat 、 cammunda-modeler-3.5.0 下载附上百度网盘地址,下载地址链接:
    链接:https://pan.baidu.com/s/1MOnNrgQ5l1GjCglTyOrBYA
    提取码:oprd
    若已经安装jdk环境,请直接安装camunda-bpm-tomcat-7.12.0和camunda-modeler-3.5.0-win-x64
    下载后将文件解压到你的安装环境 运行

    • camunda-bpm-tomcat-7.12.0 安装请运行 camunda-bpm-tomcat-7.12.0\start-camunda.bat
    image.png
    • D:\Program Files\camunda-modeler-3.5.0-win-x64 安装请运行 camunda-modeler-3.5.0-win-x64\Camunda Modeler.exe
    image.png

    若自动弹出并正常访问如下则表示成功


    事件页面.png 工作流图.png

    画工作流图

    编辑技巧说明:

    • 双击编辑图形文字
    • 单击选择下一个流程
    • 单击选择扳手图形设置图类型

    流程步骤:
    1、新建一个BPMN工作流 File > New File > BPMN Diagram. 双击设置名称为:Payment Retrieval Requested


    image.png

    2、单击第一个图,选择下一个图形为矩形,并命名为 Charge Credit Card.
    3、右键矩形设置类型为 service task


    image.png
    4、单击矩形 选择下一个为结束 命名:Payment Received.
    image.png

    5、配置服务任务,请选择矩形 打开右侧配置项,设置属性值

    image.png
    6、设置BPMN执行属性:单击选择空白区域 图示设置属性
    image.png
    7、保存,直接看图操作
    image.png

    开始上手 编写程序

    新建一个普通项目,若不知道怎么新建请参考使用IDEA创建一个spring boot web项目含前端页面

    1、引入jar包 在pom文件中新增如下配置

    <!--新增camunda依赖-->
            <dependency>
                <groupId>org.camunda.bpm</groupId>
                <artifactId>camunda-external-task-client</artifactId>
                <version>1.3.0</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>1.6.1</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.1</version>
            </dependency>
    

    2、编写测试类

    import org.camunda.bpm.client.ExternalTaskClient;
    
    import java.util.logging.Logger;
    
    public class ChargeCardWorker {
        private final static Logger LOGGER = Logger.getLogger(ChargeCardWorker.class.getName());
    
        public static void main(String[] args) {
            ExternalTaskClient client = ExternalTaskClient.create()
                    .baseUrl("http://localhost:8080/engine-rest")
                    .asyncResponseTimeout(10000) // long polling timeout
                    .build();
    
            // subscribe to an external task topic as specified in the process
            client.subscribe("charge-card")
                    .lockDuration(1000) // the default lock duration is 20 seconds, but you can override this
                    .handler((externalTask, externalTaskService) -> {
                        // Put your business logic here
    
                        // Get a process variable
                        String item = (String) externalTask.getVariable("item");
                       Object amountStr = externalTask.getVariable("amount");
                        Long amount = Long.valueOf(amountStr.toString());
                        LOGGER.info("Charging credit card with an amount of '" + amount + "'€ for the item '" + item + "'...");
    
                        // Complete the task
                        externalTaskService.complete(externalTask);
                    })
                    .open();
        }
    }
    

    3、运行main方法

    运行工作流

    切换到 camunda modeler ,按照下图所示,运行。出现connected successfully 表示成功


    image.png

    访问:http://localhost:8080/camunda/app/cockpit/default/#/dashboard,用户名和密码都是demo

    验证是否部署成功 记住要点deploy

    image.png

    验证

    使用postman发送请求 请设置头 : Content-Type: application/json
    http://localhost:8080/engine-rest/process-definition/key/payment-retrieval/start

    {
        "variables": {
            "amount": {
                "value":555,
                "type":"long"
            },
            "item": {
                "value": "item-xyz"
            }
        }
    }
    
    设置请求头.png
    image.png

    至此,已经执行了一个简单过程

    流程进阶:新增操作人

    进入camunda modeler ,选择左侧的一个矩形,添加在service task (也就是矩形)前,选择矩形拖动过去即可。


    image.png

    设置名称为Approve Payment,右键设置类型为 User Task

    image.png
    设置属性
    image.png

    设置该任务三个属性值
    选择用户流程,右面新增三个from,如下图所示

    image.png

    Field 1:
    ID: amount
    Type: long
    Label: Amount


    image.png

    Field 2:
    ID: item
    Type: string
    Label: Item


    image.png
    Field 3:
    ID: approved
    Type: boolean
    Label: Approved?
    image.png

    保存,重新deploy
    访问:http://localhost:8080/camunda/app/tasklist并且使用demo demo登录。

    启动任务,如下图 单击右上角 start process 按钮

    image.png
    选择我们创建的工作流程
    image.png

    选择+,新增两栏,完成后点击 start 即可


    image.png

    此时,可以看到任务已经开始


    image.png

    若需要执行任务,请选择form


    image.png

    流程持续优化:动态化

    PS:图形布局可以随意拖动
    如下图所示,新增两个gateway ,并且新增线路说明流程执行顺序


    image.png

    双击流程工程,按照下图所示添加说明信息


    image.png

    单击单个流程线条,设置执行的具体条件信息如下图所示
    对于<1000 €序列流,请使用{amount<1000} ![image.png](https://img.haomeiwen.com/i16925604/ca0caadd05054d7a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 对于>=1000 €序列流,请使用表达式{amount>=1000}

    image.png

    对于Yes序列流,请使用表达式{approved} ![image.png](https://img.haomeiwen.com/i16925604/6541fc71e6ea5a21.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 对于No序列流,请使用表达式{!approved}

    image.png

    保存 重新deploy 发布流程
    访问地址: http://localhost:8080/camunda/app/tasklist
    剩下操作步骤同上,点击start process 开始流程,配置属性信息

    配置信息
    流程信息

    流程自动审批

    如上图所示,目前流程开始,根据不同条件已经能发送到不同序列流,但目前还未实现自动化,现在开始实现决策自动化的添加
    先将 Approve payment 类型更改为 business rule task ,修改方式:单击矩形,选择扳手符号,选择Business Rule Task即可,此处没有截图,取用官网图说明


    image.png

    设置属性信息:在右侧,具体看图:选择DMN,命名:approve-payment, 选择latest……

    image.png
    保存修改,重新deploy
    使用Camunda Modeler 新建表格,左上角,File > New File > DMN Table.
    设置表名为Approve Payment,设置ID为 approve-payment ,请注意,这个地方的ID要和流程节点中:Decision Ref 一致,如下给出ID和需要注意一致的地方
    image.png
    image.png
    接下来为DMN表指定输入表达式。此示例中根据商品名称来觉得是否批准付款。更多规则可以参考DMN Engine中阅读有关表达式的更多信息
    对于输入的列,使用item作为输入表达式和Item作为输入标签:
    image.png
    接下来,设置输出列。使用approved的输出名称,并Approved作为输出标号为“已批准”输出列:
    image.png
    image.png
    对于一些不需要的条件列,可以右键单元格进行删除
    image.png

    将输出列类似改为boolean值,先单击下图右侧红框,然后选择boolean类型


    image.png

    通过单击DMN表左侧的加号图标,创建一些规则。我们还应该将输出列更改为数据类型boolean:


    新建规则

    设置规则,"item-sxy" -->true,not("item-sxy") --> false最后,我们的表格如下


    image.png

    部署系统信息,访问 http://localhost:8080/camunda/app/cockpit 进行验证

    image.png

    选择 decisions 可以看到已经更新


    image.png

    开始启动,此处配置多个工作流程,配置好之后点start再重新配置新的。
    item不一致且金额大于1200

    item不一致
    item一致且金额大于1200
    item一致
    验证
    访问地址:http://localhost:8080/camunda/app/cockpit。选择 decisions,再 选择approve-paymen,可以看我这儿一共发起4个工作流程。
    image.png

    入选为点击不同ID获取到的流程结果值


    image.png
    image.png

    THE END 基础流程到此结束了

    springboot 集成

    请直接参考如下网盘demo,核心思想就是引入pom文件信息,编写配置,将流程图放到指定位置即可,详细信息及后续步骤年后有时间再更新。
    链接:https://pan.baidu.com/s/1sswRt72Tzxamfi6VvDSfrA
    提取码:qshh

    image.png

    相关文章

      网友评论

        本文标题:camunda工作流(五)spring boot集成0到1

        本文链接:https://www.haomeiwen.com/subject/fyprzctx.html