Sign in

    mldong/jeeflow-core/engine does not have a README file

    Engine

    pub(all) struct Engine[R, E] {
    ctx :
    Ctx
    [R, E]
    }

    Engine::context

    fn[R, E] Engine::context(self : Engine[R, E]) ->
    Ctx
    [R, E]

    Engine::evaluate_expression

    决策/条件表达式求值的唯一口(issues/153② · spec 06 §4.6 义务 2): 门面 highLight 的路径补全与引擎路由决策边(本文件选边处)必须走这一支, 两处判据不得各写一套——否则画布点亮的路径和令牌真正走过的路径会分叉。 ⚠️ 本栈两档:SPI expression_evaluator 注册了走 SPI;未注册回落内置 simple_eval。 这与 java/go 不同(那两栈只有 SPI 一条腿,未注册时门面整档判 false 是 spec 许可的 降级档;moon 有内置兜底 ⇒ 门面侧不存在"未注册 ⇒ 全判 false"那一档)。 可见性本轮由包内 fn 抬成 pub(issues/153②:仅放宽可见性,函数体逐字未动)。

    Engine::execute_and_jump_to_end_async

    驳回(jump to end):办结语义合并派——同样 fire ProcessInstanceEnd(issues/104 §2.3)

    Engine::execute_and_jump_to_first_async

    退回发起人(submitType=6):首任务节点重执行给发起人

    Engine::execute_task_async

    提交任务(async;含会签门控 issues/94 全逻辑)

    Engine::make

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

    Engine::notify_cc_create

    async fn[R, E] Engine::notify_cc_create(self : Engine[R, E], instance_id : Int64, cc_actors : Array[String]) -> Unit raise
    JeeflowError

    抄送知会事件(CC_CREATE / issues/102·104):逐抄送人 fire,cc_actor_id 直传事件体。 无监听器装配时零副作用。

    入参一律是"实际新建的 actor 子集"(issues/141 G2 · spec 06 §4):调用点先走 ProcessRepository#create_cc_instance_if_absent 拿到子集,子集为空整支不 fire—— spec §11.2 原则 1「码=事实」,重复抄送没发生"创建"就不该发码 4,严禁照旧按原始请求全量 fire。 三条入口(发起 f_ccActors/办理 tf_ccActors/门面手动 createCCInstance)共用这一支(§11.7)。

    Engine::notify_instance_end

    async fn[R, E] Engine::notify_instance_end(self : Engine[R, E], instance_id : Int64, state : Int) -> Unit raise
    JeeflowError

    实例结束事件(spec §11.3 code 2 PROCESS_INSTANCE_END)。 sourceId=instanceId,载荷 instanceId + state(§11.3「state=落库后的实例状态整数」)。 调用方义务:实例 state 写 20/45 落库(update_instance)之后 fire。 ⚠️ 30(撤回)/40(终止) 不由本支表达——各有专属码 8/9;一场撤回同时发 8+2 会让下游收到"流程已办结"的错通知(§11.3 code 2 行)。

    Engine::notify_instance_start

    async fn[R, E] Engine::notify_instance_start(self : Engine[R, E], instance_id : Int64) -> Unit raise
    JeeflowError

    实例发起事件(spec §11.3 code 1 PROCESS_INSTANCE_START)。 sourceId=instanceId,载荷 instanceId。 调用方义务:实例行 insert(save_instance)之后、建单/抄送两支之前 fire, 使单条流从发起到办结的可见序为 [1,3,5,2](§11.8 L2-30)。

    Engine::notify_instance_terminated

    async fn[R, E] Engine::notify_instance_terminated(self : Engine[R, E], instance_id : Int64, operator : String, reason : String) -> Unit raise
    JeeflowError

    实例终止事件(spec §11.3 code 9 INSTANCE_TERMINATED)。 sourceId=instanceId,载荷 instanceId/operator/reason。调用方在实例 state→40 落库之后 fire。 ⚠️ 本栈门面/引擎暂无"终止"action(ProcessInstance::interrupt 只在测试里被调、从不落库), 故 code 9 有号无触发点:本轮仅占号,补齐终止 action 时在落库处调本函数即接通。

    Engine::notify_instance_withdraw

    async fn[R, E] Engine::notify_instance_withdraw(self : Engine[R, E], instance_id : Int64, operator : String) -> Unit raise
    JeeflowError

    撤回事件(spec §11.3 code 8 TASK_WITHDRAW)。 sourceId=instanceId,载荷 instanceId/operator。每轮撤回只 fire 一次(不逐任务); 调用方在实例 state→30 落库(update_instance)之后 fire。

    Engine::notify_task_result

    async fn[R, E] Engine::notify_task_result(self : Engine[R, E], event_type :
    ProcessEventType
    , instance_id : Int64, task_id : Int64, operator : String, submit_type : Int64?) -> Unit raise
    JeeflowError

    任务办结/退回事件(spec §11.3 code 5 TASK_COMPLETE / code 6 TASK_REJECT)。 sourceId=taskId,载荷 instanceId/taskId/operator/submitType。 调用方义务:任务行 state 落库之后 fire(load_exec_for_task 的 update_task_by_id 之后)。 5/6 互斥:由调用方按 submitType 选 event_type——退回动作只 fire 6,不再 fire 5。

    Engine::notify_task_start

    async fn[R, E] Engine::notify_task_start(self : Engine[R, E], instance_id : Int64, task_id : Int64, actors : Array[String]) -> Unit raise
    JeeflowError

    新待办生成事件(spec §11.3 code 3 PROCESS_TASK_START)。 sourceId=taskId,载荷 instanceId + taskId + actors(该待办的参与者列表,字符串数组; 含 apply_surrogate 并入的被委托人,与落库的 actor 集合同口径)。 ⚠️ instanceId 是硬要求而非"方便字段"(§11.3 注):本支 sourceId 是 taskId, 集成层 L2-30 的事件流水 sink 只能靠载荷里的 instanceId 把一条流的流水归到 jeeflow:gate:events:<instanceId> 一个键下;缺它 ⇒ 一条流被拆成多个 taskId 键、顺序读不全。 调用方义务:每个任务行落库(save_task 分到 taskId)之后逐任务 fire。

    Engine::notify_task_transfer

    async fn[R, E] Engine::notify_task_transfer(self : Engine[R, E], instance_id : Int64, task_id : Int64, from_actor : String, to_actor : String, operator : String) -> Unit raise
    JeeflowError

    转办事件(spec §11.3 code 7 TASK_TRANSFER)。 sourceId=taskId,载荷 instanceId/taskId/fromActor/toActor/operator。 调用方在参与者被替换并落库(update_task)之后 fire。

    Engine::start_with_parent_async

    发起(带父实例,子流程)

    custom_clazz_missing_warning

    fn custom_clazz_missing_warning(node_id : String) -> String

    「clazz 空串/缺失」档的诊断日志文案(同一节点属性的另一格病灶:连按名解析的键都没有)。

    custom_handler_unregistered_warning

    fn custom_handler_unregistered_warning(node_id : String, clazz : String) -> String

    「未注册处理器」档的诊断日志文案(spec/02 §6.2 第 2 条末尾:两档日志要分别可诊断, 不许像 c# 那样把「clazz 空串」与「未注册」合成同一条)。抽纯函数的理由同 parser: println 的效果在测试里读不回来,判据留在纯函数、副作用留在调用点。

    custom_return_key

    fn custom_return_key(node :
    NodeModel
    ) -> String

    记录类返回值写入的变量键:val 命中用之(trim 后非空),否则缺省 custom_return_val (对齐 java CustomParser.java:20-22 解析 + CustomModel.java:46-48 写 execution.getArgs())。

    custom_return_val_key

    let custom_return_val_key : String

    记录类返回值写入流程变量的缺省键(properties.val 没配 / 配空串时用这一档)。 逐字对齐 java FlowConst.CUSTOM_RETURN_VAL 与 python KEY_CUSTOM_RETURN_VAL。

    eval_failure_warning

    fn eval_failure_warning(instance_id : Int64, define_id : Int64, expr : String, err : String) -> String

    issues/201 的日志文案单点(纯函数、零副作用,判据可直接断言文本;副作用那条腿由 println 落 stdout+变异读数判别,与本仓 listener_error_warning(162/R19)同法)。

    parse_actors

    fn parse_actors(v : Json?) -> Array[String]

    参与者集合的形状适配器(issues/56 E28 起为抄送腿而生,issues/142 B 批按 spec 06-facade §2.11 逐字搬到任务侧):JSON 数组 / 逗号串 / 空三形态在这一层汇成元素序,随后一律过 @model.normalize_actors 那一枚判据 —— 空串/纯空白/数组里的空元素丢弃、值取 trim 后的串、 同一次调用内的重复折叠;丢完为空 ⇒ 调用方按"没给"处理(建 cc 的三条入口不建行也不 fire 码 4, 任务侧的 nextNodeOperator 腿则落回下一优先级)。这里只切形状、不判空(§2.11「不要再抄第二份」)。

    数组元素档(§2.11「不得被静默丢弃或串化成类型名」): · 字符串 ⇒ 原样交给判据; · 数字 ⇒ 收敛成字符串,repr 原文优先(>2^53 的雪花 id 不被 double 取整,D-M5-3), 与别栈 String.valueOf/str()/String() 同形(rust 那腿"数字元素静默丢弃"是反面,不照抄); · true/false ⇒ "true"/"false"; · Json::Null ⇒ 丢弃(本栈 Json 无 undefined 档,Null 就是 §2.11 说的 null/undefined 对应物, 不许串化成 "null"/"None"/"");对象/嵌套数组等非标量 ⇒ 丢弃。

    抄送三支入口(发起 f_ccActors/办理 tf_ccActors/子流程发起腿)与任务侧 f_nextNodeOperator/tf_nextNodeOperator 共用这一支,两形同判据由构造成立。

    parse_cc_actors

    fn parse_cc_actors(v : Json?) -> Array[String]

    issues/141 G10 时这一支只挂抄送腿、旧名 parse_cc_actors;issues/142 B 批(spec §2.11)把它 升格为通用的 parse_actors(任务侧 nextNodeOperator 共用同一枚),本名保留为转发 —— 已发布 mooncakes 模块(mldong/jeeflow-core,0.1.x 线)的公开成员,既有调用点(engine_ops 三处 抄送入口)与既有测试不破;适配器本体不在这里复制。

    unknown_edge_warning

    fn unknown_edge_warning(from : String, to : String) -> String