wangxj3 commented on issue #3805: URL: https://github.com/apache/incubator-dolphinscheduler/issues/3805#issuecomment-718505573
关于全局变量(节点间参数传递)实现方案的讨论: 目前我们已经实现了全局变量功能,具体为: 1.变量在流程实例内生效,每个节点可接受变量,sql和shell节点可修改变量值,后续节点在使用该变量时为修改后的值。 2.子流程节点传入变量,子流程可以接受到变量值 3.流程实例在某节点失败后,从失败节点重启,以前执行成功的节点对变量的修改依然生效。 实现方案为: 1.用户在保存DAG时会从globalParams中取出定义的全局变量,维护DAG与变量关系(表1) 2.在DAG被调起实例化的时候,新增属于processInstance的全局变量(表2) 3.关于入参:在创建taskInstance时,从localParam中取出变量,更新value值,存入taskInstance,后续将taskInstance保存数据库,分发给worker 4.关于出参:在sql节点和shell节点任务执行结束后,将任务执行的结果写入TaskExecuteResponseCommand,随worker执行结果信息一起返回master,master将出参更新至数据库。 5.关于子流程节点:生成子流程的command时判断是否有参数传递,如果有新增表2数据,返回id维护到command中,在子流程被实例化时,将processInstanceId修改到表2中。 ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected]
