.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}

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM