AZ 結(jié)算,暫停,作廢 方案

需求


  • 工單需要暫停和作廢,暫停作廢需要有可配置的流程

  • 北汽通過預(yù)先設(shè)置的條件自動(dòng)進(jìn)入結(jié)算

  • 江淮手動(dòng)選擇工單進(jìn)行結(jié)算

架構(gòu)設(shè)計(jì)


結(jié)算單是獨(dú)立的模塊 在AZ主站項(xiàng)目下 集成Aibol框架 接入 流程引擎

作廢/暫停 同時(shí)存在于需要 暫停和作廢 的項(xiàng)目下

比如工單有作廢 暫停 結(jié)算也有 作廢 暫停

總結(jié): 結(jié)算單 和 工單 平級(jí) , 每個(gè)都有獨(dú)立的 作廢/暫停

具體方案


  • 有獨(dú)立的流程管理頁面 來為每個(gè)車廠配置特有的 結(jié)算流程

結(jié)算流程圖管理頁面 (考慮加入到workflow項(xiàng)目中統(tǒng)一管理),比如在現(xiàn)有的管理頁面中 加入下拉,也可以用側(cè)邊欄菜單分類(作廢和暫停要分為 工單作廢和暫停結(jié)算單作廢和暫停)

圖片
圖片
  • 暫停和作廢設(shè)計(jì)

當(dāng)工單點(diǎn)擊暫停/作廢按鈕的時(shí)候 工單的 "Status" : 0, 變成 對(duì)應(yīng)狀態(tài) ,同時(shí)生成一份 暫停/作廢 運(yùn)行時(shí)

作廢/暫停 的 開始節(jié)點(diǎn) post方法 ==> 發(fā)送相關(guān)通知

網(wǎng)關(guān)判斷審核結(jié)果 進(jìn)入2個(gè)不同的 結(jié)束節(jié)點(diǎn)

通過結(jié)束節(jié)點(diǎn)的 prev方法 ==> 修改對(duì)應(yīng) "orderId" 的工單 的 "Status" 為確認(rèn)暫停/作廢 并添加對(duì)應(yīng) "operations" 工單暫停/作廢
不通過結(jié)束節(jié)點(diǎn)的 prev方法 ==> 修改對(duì)應(yīng) "orderId" 的工單 的 "Status" 為確認(rèn)暫停/作廢 并添加對(duì)應(yīng) "operations" 工單繼續(xù)運(yùn)行

申請(qǐng)暫停的工單 在申請(qǐng)全過程中 只會(huì)多2個(gè) "operations" 一個(gè)發(fā)起 一個(gè)結(jié)果

至于具體的審核流傳的 "operations" 在對(duì)應(yīng)的 暫停/作廢 運(yùn)行時(shí) 中體現(xiàn)

審核人/時(shí)間/結(jié)果/暫停作廢運(yùn)行時(shí)id 等信息 作為data保存在工單對(duì)應(yīng)的審核結(jié)果的data中 (可以不同步到mainData)

如果需要查詢訂單的暫停次數(shù) 只要過濾 "operations" 中 "type" : 暫停 的數(shù)據(jù) 就可以知道 所有 暫停操作的開始與結(jié)果

image.png

上圖申請(qǐng)task應(yīng)該不需要,點(diǎn)擊了按鈕 就自動(dòng)申請(qǐng)了

暫停/作廢
{
    "_id" : ObjectId("5913c793ad273115ccf31231"),
    "CreatedWhen" : ISODate("2017-05-11T02:08:19.255Z"),
    "CreatedBy" : null,
    "LastModifiedWhen" : ISODate("2017-05-11T02:08:19.257Z"),
    "LastModifiedBy" : null,
    "Status" : 0,

    "orderId" : ObjectId("5913c793ad273115ccf30041"),

    "operations" : [ ]
}
工單
{
    "_id" : ObjectId("5913c793ad273115ccf30041"),
    "CreatedWhen" : ISODate("2017-05-11T02:08:19.255Z"),
    "CreatedBy" : null,
    "LastModifiedWhen" : ISODate("2017-05-11T02:08:19.257Z"),
    "LastModifiedBy" : null,
    "Status" : 0,
    "wfId" : "a69e81c5-3bf5-474b-a882-a1cf8933b66f",
    "tenantId" : "5351405d-4e81-4f42-8cea-5526690b0fdc",
    "title" : "test",
    "view" : "CarIntention",
    "Alias" : null,
    "currentProcessId" : "Task_1t3nwjx",
    "operations" : [ 
        {
            "CreatedWhen" : ISODate("2017-05-11T02:08:19.255Z"),
            "CreatedBy" : "system",
            "LastModifiedWhen" : ISODate("2017-05-11T02:08:19.255Z"),
            "LastModifiedBy" : "system",
            "Status" : 4,
            "num" : 0,
            "remark" : null,
            "type" : 0,
            "currectProcessName" : "選擇開始節(jié)點(diǎn)",
            "here" : null,
            "from" : null,
            "view" : null,
            "IsBacked" : null,
            "data" : []
        }, 
        {
            "CreatedWhen" : ISODate("2017-05-11T02:08:19.256Z"),
            "CreatedBy" : "system",
            "LastModifiedWhen" : ISODate("2017-05-11T02:08:19.256Z"),
            "LastModifiedBy" : "system",
            "Status" : 4,
            "num" : 1,
            "remark" : null,
            "type" : 0,
            "currectProcessName" : "",
            "here" : "SequenceFlow_1cgwz8s",
            "from" : "StartEvent_19fn7p6",
            "view" : "",
            "IsBacked" : null,
            "data" : []
        }, 
        {
            "CreatedWhen" : ISODate("2017-05-11T02:08:19.257Z"),
            "CreatedBy" : "system",
            "LastModifiedWhen" : ISODate("2017-05-11T02:08:19.257Z"),
            "LastModifiedBy" : "system",
            "Status" : 4,
            "num" : 2,
            "remark" : null,
            "type" : 0,
            "currectProcessName" : "新建購車意向",
            "here" : "Task_1t3nwjx",
            "from" : "SequenceFlow_1cgwz8s",
            "view" : "CarIntention",
            "IsBacked" : null,
            "data" : []
        }
    ],
    "rate" : 6.0
}
  • 結(jié)算單設(shè)計(jì)

結(jié)算單 是平級(jí)于 工單 的 一個(gè)獨(dú)立的流程運(yùn)行時(shí)

  1. 自動(dòng)結(jié)算方案 (北汽)

當(dāng)一個(gè)工單結(jié)束的時(shí)候 觸發(fā) 配置在結(jié)束節(jié)點(diǎn)的 prev方法 ==> 判斷是否有符合條件的結(jié)算單,如果有則加入,如果沒有則新增并加入,然后進(jìn)行后續(xù)操作

  1. 手動(dòng)結(jié)算方案 (江淮)

當(dāng)一個(gè)工單結(jié)束的時(shí)候 結(jié)束節(jié)點(diǎn)不配置prev方法,在結(jié)算流程的 第一個(gè)task "選擇需要結(jié)算的工單" 的時(shí)候 去修改結(jié)算單的 OrderId 數(shù)組,然后執(zhí)行后續(xù)操作

  1. 混合結(jié)算方案 (3-10日手動(dòng),其他自動(dòng))

基于自動(dòng)和手動(dòng)方案,修改工單結(jié)束節(jié)點(diǎn)prev方法 ==> 添加日期判斷 符合條件才進(jìn)行后續(xù)操作,不符合日期條件則不操作.在結(jié)算單流程的 "選擇需要結(jié)算的工單" 可以進(jìn)行手動(dòng)選擇結(jié)算(當(dāng)然也可以根據(jù)時(shí)間 關(guān)閉手動(dòng)選擇的權(quán)限,只要修改一下這個(gè) task 所屬 operation 的 Verify 方法 日期條件不通過則無法添加)

settlement
{
    id:1233123123,
    orderId:[
        aaaaaaaa1,
        bbbbbbb2,
        ccccccccc3
    ],
    ......
}

缺少 : 結(jié)算流程圖 與 其具體的task頁面,結(jié)算模塊需要有自己的 “詳情頁面” 類似工單的主頁面,用來承載結(jié)算的流轉(zhuǎn),

post prev 方法的具體方案


該方法在前端設(shè)計(jì)器中配置,如圖

圖片
圖片

在主站系統(tǒng)中實(shí)現(xiàn)

圖片
圖片

流程運(yùn)轉(zhuǎn)的時(shí)候被調(diào)用執(zhí)行,由于方法在主站所以可以使用所有主站的資源

關(guān)于參數(shù)傳遞的實(shí)現(xiàn)設(shè)想方案,

az:prev="Basic.TestPrev?TenanId&param1&param2&param3" 

prev:預(yù)方法
post:后方法
Basic:所在類
TestPrev:方法名稱 與類名用 .隔開
?TenanId&param1&param2&param3需要參數(shù),必須是主表主字段有的參數(shù)或者是當(dāng)前節(jié)點(diǎn)的data中有的參數(shù),用 ? 與方法名隔開,不同的參數(shù)用 & 隔開

問題

  1. 工單進(jìn)入結(jié)算后 相關(guān)的operations 是什么?開始結(jié)算,結(jié)算完畢?
  2. 工單/結(jié)算單 的所有狀態(tài)碼
  3. 流程引擎接入方案
  4. 單點(diǎn)登錄系統(tǒng)接入方案
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容