jeeflow-facade

    jeeflow unified facade: flow(action, args) 46 actions + contract outlet layer

    Download zip
    Author
    Version
    0.1.23
    License
    Apache-2.0
    Last updated
    10 hours ago
    Downloads
    56

    #jeeflow-facade

    Every jeeflow workflow capability behind one call — flow(action, args).

    mooncakes License

    The unified 40+ action facade of jeeflow-moon: one entry point, one federation envelope (code=0 success / 99999999 failure), one outbound contract layer that every response passes through.

    #Quickstart

    let facade = @facade.Facade::make(ctx) // ctx wires engine + repositories + SPI closures

    let resp = facade.flow("processDefine/startAndExecute", args) // start + auto-apply
    let _ = facade.flow("processTask/execute", args) // submitType dispatch: 0/1/2/3/4/6/20
    let page = facade.flow("processTask/todoList", args) // five-key pagination

    #The 40+ actions

    groupactions
    processDefine (8)page · detail · startAndExecute · deploy · redeploy · remove · upAndDown · getLastByName
    processInstance (14)page · detail · startAndExecute · withdraw · highLight · approvalRecord · getAssigneeTextData · bizData · createCCInstance · updateCCStatus · ccList · stats/overview · stats/trend · stats/group
    processTask (9)todoList · doneList · execute · detail · jumpAbleTaskNameList · candidatePage · surrogate · addCandidate · latest
    processDesign (9, ext repo)page · detail · save · update · updateDefine · remove · deploy · redeploy · listByType
    processSurrogate (5, ext repo)page · save · update · detail · remove

    #Outbound contract layer (enforced, not optional)

    • recursive id stringification — id / *Id / *_id, and plural ids / *Ids arrays element-wise (snowflakes exceed float64);
    • five-key pagination — pageNum/pageSize/recordCount/totalPage/rows;
    • time normalization — yyyy-MM-dd HH:mm:ss, ISO T folded to space;
    • stats as pure columns — overview (13 keys), trend (hour/day/ISO-week/month buckets), group (9 dimensions incl. stuck-node/approver and 4 duration buckets), explicit errors on missing/invalid params.

    #License

    Apache-2.0 — part of jeeflow-moon.

    Facade

    pub(all) struct Facade[R, E] {
    engine :
    Engine
    [R, E]
    repo : R
    ext_repo : E
    }

    Facade::approval_record

    Facade::candidate_page

    Facade::create_cc_instance

    Facade::define_detail

    Facade::define_page

    Facade::define_remove

    Facade::define_up_and_down

    Facade::design_list_by_type

    listByType:发起页数据契约(issues/28;分组契约 C14)

    Facade::engine

    fn[R, E] Facade::engine(self : Facade[R, E]) ->
    Engine
    [R, E]

    Facade::execute

    提交任务(submitType 分发,java execute 同款)

    Facade::flow

    统一入口:flow(action, args) → {code,msg,data}

    Facade::get_assignee_text_data

    Facade::get_last_by_name

    Facade::high_light

    Facade::instance_detail

    Facade::instance_page

    Facade::jump_able_task_name_list

    async fn[R :
    ProcessRepository
    , E] Facade::jump_able_task_name_list(self : Facade[R, E], args : Map[String, Json]) -> Json raise
    JeeflowError

    Facade::make

    fn[R, E] Facade::make(ctx :
    Ctx
    [R, E]) -> Facade[R, E]

    Facade::start_and_execute

    发起并自动完成申请节点(define/instance 共用)

    Facade::stats_group

    Facade::stats_overview

    Facade::stats_trend

    Facade::task_detail

    Facade::task_latest

    Facade::task_surrogate

    加签(addTaskActor=去重追加非全删全插,C14)

    Facade::task_transfer

    转办(issues/115,spec/06 §processTask/transfer 七条语义): 摘原人 → 加新人 → 同一 taskId 不新建 → 三件留痕(submitType=7 槽位 + tf_transferHistory 追加式账本 + tf_transferTo/tf_transferReason 便捷键 + 末跳 tf_approvalComment)→ 去重/前置态四类明确报错。区别于 processTask/surrogate 加签的"只追加不动原人"。

    Facade::update_cc_status

    Facade::withdraw

    撤回(issues/113/114):operator 硬必填 + 三条归属判据 + 任务态 30 级联 + update_user 回写

    CODE_ERROR

    let CODE_ERROR : Int64

    CODE_SUCCESS

    let CODE_SUCCESS : Int64

    arg_actor_ids

    fn arg_actor_ids(args : Map[String, Json]) -> Array[String]
    空入参档由调用方沿用各自既有的"缺参数"错误信封(§2.11 要求③:不新造错误码与文案)。

    arg_i64

    fn arg_i64(args : Map[String, Json], key : String) -> Int64? raise
    JeeflowError
    i64 双收:数字/字符串;存在但不可解析 → "非法id"

    arg_i64_or

    fn arg_i64_or(args : Map[String, Json], key : String, default : Int64) -> Int64 raise
    JeeflowError

    arg_id

    fn arg_id(args : Map[String, Json], keys : Array[String]) -> Int64? raise
    JeeflowError
    首个存在的 i64(多候选键)

    arg_ids

    fn arg_ids(args : Map[String, Json]) -> Array[Int64] raise
    JeeflowError
    批量主键:{ids} 优先 {id} 兜底;空显式报错(issues/95)

    arg_str

    fn arg_str(args : Map[String, Json], key : String) -> String?

    arg_str_or

    fn arg_str_or(args : Map[String, Json], key : String, default : String) -> String

    arg_submit_type

    fn arg_submit_type(args : Map[String, Json], key? : String) -> Int64? raise
    JeeflowError
    submitType 双收(数字/字符串)

    args_to_flow_data

    fn args_to_flow_data(args : Map[String, Json], exclude : Array[String]) ->
    FlowData
    args → FlowData(剔除 facade 控制键)

    candidate_row

    fn candidate_row(actor_id : String, real_name : String, extra : Map[String, Json]?) -> Json
    candidate 行键归一(issues/80)

    content_bytes

    fn content_bytes(args : Map[String, Json]) -> String?
    content:字符串/对象/顶层 JSON 兼容(issues/27)

    define_row_to_json

    design_his_to_json

    design_to_json

    envelope_data

    fn envelope_data(env : Json) -> Json?

    err

    fn err(msg : String) -> Json

    facade_parse_m_filters

    fn facade_parse_m_filters(args : Map[String, Json]) -> Array[
    QueryFilter
    ]

    first_task_node_id

    fn first_task_node_id(json_object : Json?) -> String?

    flow_data_to_object

    fn flow_data_to_object(vars :
    FlowData
    ) -> Json

    form_data_of_flow

    fn form_data_of_flow(vars :
    FlowData
    , prefix : String) -> Json

    form_data_of_map

    fn form_data_of_map(vars : Map[String, Json], prefix : String) -> Json
    表单数据派生(issues/15):prefix 键带前缀 + 去前缀双份

    format_time_fields

    fn format_time_fields(val : Json) -> Json
    C7:时间键格式化(NOW() 占位 / ISO T → 空格)

    instance_row_to_json

    is_ok

    fn is_ok(env : Json) -> Bool

    fn ok(data : Json?) -> Json

    ok_data

    fn ok_data(data : Json) -> Json

    operator_arg

    fn operator_arg(args : Map[String, Json]) -> String
    issues/114 的 `arg_required_str`(operator 硬必填、缺失即报错、返回 trim 后值)是另一档语义,别混用。

    page_to_json

    fn[T] page_to_json(page :
    PageResult
    [T], row_json : (T) -> Json) -> Json
    分页五键(C22)

    parse_epoch_secs

    fn parse_epoch_secs(s : String) -> Int64?
    "yyyy-MM-dd[ HH:mm[:ss]]" → epoch 秒(civil 算法逆运算)

    parse_graph

    fn parse_graph(content : String) -> Json?

    parse_json_map

    fn parse_json_map(s : String?) -> Map[String, Json]

    stringify_ids

    fn stringify_ids(val : Json) -> Json
    C1:id/Id/_id 单数键值字符串化(递归);ids/Ids/_ids 复数键逐元素

    surrogate_to_json

    task_row_to_json

    task_vo

    对齐 java taskVo

    to_camel_json

    fn to_camel_json(val : Json) -> Json

    transform_output

    fn transform_output(val : Json) -> Json
    出口统一变换:camelCase → id 字符串化 → 时间格式化