如何调用或跳转某个已实现的功能
Roy
• 发表于:2022-07-27 18:12:32 • 更新于:2023-12-07 20:02:42
716

实例场景

在开发过程中,经常设计了一个相对完整的功能,希望可以在其他业务处理过程中直接调用该功能来执行,而不需要在每个业务场景中重复实现该功能。例如我们可以实现一个产品入库的功能,该功能可以判断当前系统是否存在产品的库存记录,如果存在就直接update,否则save一条新的库存记录。这时候在采购入库、退货入库、盘点入库、其他入库等业务场景中,就可以直接调用该功能执行入库操作,这样做的好处至少有两个:

1、减少功能的重复实现。

2、当入库逻辑改变时,可以只改入库的功能,而无需在每个业务场景中一一调整。

只需要在后台运行,而无需在前端展示交互的场景这里称为功能调用;需要将功能交互展示到前端的场景称为功能跳转。

准备工作

1、产品库存表

如何调用或跳转某个已实现的功能

2、产品入库功能:准备一个可以产品入库功能,该功能可以判断当前系统是否存在产品的库存记录,如果存在就直接update,否则save一条新的库存记录。

如何调用或跳转某个已实现的功能

3、获取产品入库功能的相关id

1) 功能id(flow)

如何调用或跳转某个已实现的功能

2) 输入步骤id(procedure,看需要获取)

如何调用或跳转某个已实现的功能

3) 步骤里的属性id(field,看需要获取)

如何调用或跳转某个已实现的功能

功能跳转

1、增加步骤:编程。

如何调用或跳转某个已实现的功能

2、编写跳转“产品入库”功能代码:

async function runProcess($model = model, $plugin = plugin, $params) {

    //去除本功能的提交提示

    $model.command("tips", {});

 

    //功能跳转

    $model.command("program", {

        flow: "6052bfcb4ae8b87062fd348a",//功能id

        data: {//根据需要,向跳转的功能里传递数据

            "6052c1a3746bcb706873b91c": {//需要传递数据的步骤id

                "field_1616036415191": "",//该步骤里需要传递数据的属性id:传递的值

            }

        }

    });

}

 

3、至此,功能跳转已实现,将功能发布后,运行效果:

如何调用或跳转某个已实现的功能

 

功能调用

1、根据业务需求新建一个功能,这里使用“交互-输入”步骤假设产品入库数据录入

如何调用或跳转某个已实现的功能

如何调用或跳转某个已实现的功能

2、添加编程步骤。

如何调用或跳转某个已实现的功能

3、编写调用功能代码

async function runProcess($model = model, $plugin = plugin, $params) {

    /**获取到入库信息数据步骤完整数据

     * getValue(procedure)

     * procedure:步骤id

    */

    let info = await $model.getValue("6052c465018e197061abd401");

 

    //功能调用,参数:exec(flow,data)

    await $plugin.program.exec("6052bfcb4ae8b87062fd348a", {//功能id

        "6052c1a3746bcb706873b91c": {//需要传递数据的步骤id

            //该步骤里需要传递数据的属性id:传递的值

            "field_1616036415191": info["field_1616037011093"],//产品

            "field_1616036415397": info["field_1616037011434"],//入库数量

        }

    });

}

4、至此功能调用已实现,将功能发布后,运行效果:

如何调用或跳转某个已实现的功能

 

 

 

 


本文是否对您有帮助?
有帮助
没帮助
您是否遇到了以下问题?
内容过期或不准确
缺少场景、事例
链接有误
太简单,步骤待完善
其他
提交反馈
如需获取即时帮助,请联系
小助理
微信扫码添加小助理
让你的想法快速变成软件吧~