AZ 结算,暂停,作废 方案

需求


  • 工单需要暂停和作废,暂停作废需要有可配置的流程

  • 北汽通过预先设置的条件自动进入结算

  • 江淮手动选择工单进行结算

架构设计


结算单是独立的模块 在AZ主站项目下 集成Aibol框架 接入 流程引擎

作废/暂停 同时存在于需要 暂停和作废 的项目下

比如工单有作废 暂停 结算也有 作废 暂停

总结: 结算单 和 工单 平级 , 每个都有独立的 作废/暂停

具体方案


  • 有独立的流程管理页面 来为每个车厂配置特有的 结算流程

结算流程图管理页面 (考虑加入到workflow项目中统一管理),比如在现有的管理页面中 加入下拉,也可以用侧边栏菜单分类(作废和暂停要分为 工单作废和暂停结算单作废和暂停)

图片
图片
  • 暂停和作废设计

当工单点击暂停/作废按钮的时候 工单的 "Status" : 0, 变成 对应状态 ,同时生成一份 暂停/作废 运行时

作废/暂停 的 开始节点 post方法 ==> 发送相关通知

网关判断审核结果 进入2个不同的 结束节点

通过结束节点的 prev方法 ==> 修改对应 "orderId" 的工单 的 "Status" 为确认暂停/作废 并添加对应 "operations" 工单暂停/作废
不通过结束节点的 prev方法 ==> 修改对应 "orderId" 的工单 的 "Status" 为确认暂停/作废 并添加对应 "operations" 工单继续运行

申请暂停的工单 在申请全过程中 只会多2个 "operations" 一个发起 一个结果

至于具体的审核流传的 "operations" 在对应的 暂停/作废 运行时 中体现

审核人/时间/结果/暂停作废运行时id 等信息 作为data保存在工单对应的审核结果的data中 (可以不同步到mainData)

如果需要查询订单的暂停次数 只要过滤 "operations" 中 "type" : 暂停 的数据 就可以知道 所有 暂停操作的开始与结果

image.png

上图申请task应该不需要,点击了按钮 就自动申请了

暂停/作废
{
    "_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" : "选择开始节点",
            "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
}
  • 结算单设计

结算单 是平级于 工单 的 一个独立的流程运行时

  1. 自动结算方案 (北汽)

当一个工单结束的时候 触发 配置在结束节点的 prev方法 ==> 判断是否有符合条件的结算单,如果有则加入,如果没有则新增并加入,然后进行后续操作

  1. 手动结算方案 (江淮)

当一个工单结束的时候 结束节点不配置prev方法,在结算流程的 第一个task "选择需要结算的工单" 的时候 去修改结算单的 OrderId 数组,然后执行后续操作

  1. 混合结算方案 (3-10日手动,其他自动)

基于自动和手动方案,修改工单结束节点prev方法 ==> 添加日期判断 符合条件才进行后续操作,不符合日期条件则不操作.在结算单流程的 "选择需要结算的工单" 可以进行手动选择结算(当然也可以根据时间 关闭手动选择的权限,只要修改一下这个 task 所属 operation 的 Verify 方法 日期条件不通过则无法添加)

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

缺少 : 结算流程图 与 其具体的task页面,结算模块需要有自己的 “详情页面” 类似工单的主页面,用来承载结算的流转,

post prev 方法的具体方案


该方法在前端设计器中配置,如图

图片
图片

在主站系统中实现

图片
图片

流程运转的时候被调用执行,由于方法在主站所以可以使用所有主站的资源

关于参数传递的实现设想方案,

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

prev:预方法
post:后方法
Basic:所在类
TestPrev:方法名称 与类名用 .隔开
?TenanId&param1&param2&param3需要参数,必须是主表主字段有的参数或者是当前节点的data中有的参数,用 ? 与方法名隔开,不同的参数用 & 隔开

问题

  1. 工单进入结算后 相关的operations 是什么?开始结算,结算完毕?
  2. 工单/结算单 的所有状态码
  3. 流程引擎接入方案
  4. 单点登录系统接入方案
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容