• .NET CORE 开源工作流 elsa-core 基础使用示例


    分享一个 不错的 轻量型且功能强大的开源工作流项目 Elsa-core 

    转载请注明出处: https://www.cnblogs.com/Qbit/p/13871837.html

    关于该项目的其他介绍请百度其他文章介绍

    项目地址   官方文档  如何运行

    目前官方手册和文档还很不完善,研究了几天踩了不少坑,特此留下笔记。

    Recive HTTP Request 

    首先是 Recive HTTP Request 它是最常用的 一个Activity, 可以接收一个POST 或者 GET以及其他常用的 请求方法 , 勾选下方的 Read Content 将从请求的Body获取提交信息,常用的方式是使用一个 POST 方法接收 JSON数据

    另外需要注意的是,在工作流的任何位置都可以 放置一个 Recive HTTP Request ,工作流运行到此处时会挂起等待新的请求。

    那么就产生一个问题,它的Path 是不可编码的,我们如何区分不同工作流实例的请求呢?请往下看

    Correlate 

    该活动用于将你的业务文档关联,比如 申请单的主键

    SetVariable

    用于设置流程变量,我们使用一个Recive HTTP Request  接收一个请求后使用  SetVariable 活动保存接收到的数据 ,这里可用的动态表达式包括 Liquid 和 JavaScript,当然也可以直接使用第一个选项 用纯文本

    可用的Javascript  内置 函数

    input(name)

    variable(name)

    lastResult()

    correlationId()

    currentCulture()

    newGuid()

     需要注意的是 这里的表达式 不支持未声明直接调用 

    另外:注意 数组变量在保存后将被 解析为 JArray, 它不再是 js 的 Arry,   所以没有 push 方法, 你需要调用 Add()

    如 初始化变量时直接使用[]:

    myArray=[];

    在后续的活动中想要往 myArray 中添加对象然后更新此对象需要再添加一个同名的 Set Variable 活动,然后脚本部分这么写:

    myArray.Add(obj);  
    return myArray;

      同样的,由于它不是Js对象,你需要调用它的 ToString() 方法将其解析成字符串 再使用JSON.parse 转换为js对象

    就像下面这样:

    return JSON.stringify({
    requestId: correlationId(), 
    approveResult: ApproveLog.approveAction.Value,
    logs: JSON.parse(ApproveLogList.ToString())
    })

    请求的实例关联

    在流程中的 Recive Http Request 活动 , 如果我们存在多个审批中的文档,需要使用Correlate 活动将其区分,在客户端发送审批请求时需要附带一个 X-Correlation-Id 到你的请求头中,为其赋值为 你的 CorrelationId (也就是申请单主键)

     源代码见:https://github.com/elsa-workflows/elsa-core/blob/cc94472301d876cc500326a253f9468c248e6d34/src/activities/Elsa.Activities.Http/RequestHandlers/Handlers/TriggerRequestHandler.cs#L49

    如果后台收到此请求,Elsa会从进行中的实例中找到使用 这个 ID 的实例,并继续运行

    以下是一个二级审批的工作流 

    使用 PostMan 进行测试

    {
        "submitType": "Monthly", "clientUrl": "http://xxxx",
        "sender": {
            "userName": "zhangsan",
            "email": "x"
        },
        "requestId": 3,
        "approvers": [
            {
                "userName": "ZhangSan1",
                "email": "x"
            },
            {
                "userName": "ZhangSan2",
                "email": "x"
            }
        ],
        "apiBaseUrl": "http://localhost:44388/"
    }

    审批请求:

     别忘了在请求头附加 X-Correlation-Id ,也就是启动工作流时发送的 requestId

    { "userName":"ZhangSan1", "remark":"通过啦?","approveAction":true}

  • 相关阅读:
    有关token
    JQuery自定义resize事件代码解析
    vue--为网页添加动态响应背景
    如何查询数据库中所有表格,或者查询是否存在某个表格-mysql和oracle
    Foxmail: 错误信息::ssl连接错误, errorCode: 5,各种解决方案的大杂烩。
    [转] Hadoop入门系列(一)Window环境下搭建hadoop和hdfs的基本操作
    java连数据库和数据库连接池踩坑日记(二)-------数据库连接池c3p0
    java实现将汉字转为拼音
    Sublime 如何修改默认编码格式
    JSP 表单处理
  • 原文地址:https://www.cnblogs.com/Qbit/p/13871837.html
Copyright © 2020-2023  润新知