Skip to content

不用应用之间的通信

背景

某项目有两个应用,在A应用创建用户需要在B应用同步创建相同的用户,这就需要在A应用中创建新用户的时候推送应用事件,在B应用创建一个监听器去监听A应用发送的应用事件,触发自动化去同步创建相同用户。

实现步骤

我们现在可以通过以下方式实现该功能:

  • 在A应用 用户数据表>>表格设置>>工具栏>>工具栏控件 新建 创建按钮

    企业微信20230912-112105

    点击编辑 进入创建按钮的编辑页面,执行操作,选择调用自动化

    自动化程序(创建用户并同步院方成员)打开记录创建页面->代码片段(添加应用成员)->发布应用事件(院方成员)

    image-20230915170955990

    自动化程序概览如下:

    image-20230915171241355

    代码片段(添加应用成员)这里请参考【应用层监听】登录

    发布应用事件选择已经配置好的“院方成员”,事件内容选“打开记录创建页面”返回的表单对象formRcord

    image-20230915171903716

  • 接下来说一下如何创建”“院方成员“这个应用事件,在A应用中(一站式服务)里。

    全局设置>>监听器>>事件定义 创建一个自定义事件

    企业微信20230912-112142

    事件命名为 院方成员,标识符为hospitalUserCreate ,请记住它,复制它

    image-20230915172218850

  • 现在我们切换到B应用(医院端) ,第一件事就是把B应用和A应用建立依赖关系,全局设置>>高级设置>>依赖的应用,选择A应用(一站式服务)

    企业微信20230912-115244

  • 紧接着进入 全局设置>>监听器>>创建监听器

    事件ID填入已经复制好的 院方成员 应用事件的标识符,执行已经准备好的自动化

    image-20230915172514329

  • 自动化程序(自动创建院方成员)如下:

    企业微信20230912-135856

    点击新增参数,选择输入参数为监听器事件,命名为eventValue

    image-20230915172952836

    打印eventValue ,JSON 数据如下:

    javascript
    "eventValue":{
      "content":{
          "appDefineId":"com.gyytest.MyApp",
          "appId":"g0j4gmx7mbwr4",
          "companyId":"g09aj7cus3d8s",
          "id":"hospitalUserCreate",
          "payload":{
            "name":"CN1000",
            "id":"qcyha8qtg9bh5"
           }
      },
      "id":"app.postevent"
    }
    
    //我们要的参数在payload里面

    设置字段用户名 表达式为 $

    image-20230915173137212

    最后保存发布,功能就实现了

效果

  • 在A应用中新增用户

    企业微信20230912-134749

  • B应用就会自动新增一条一样用户名的记录

    企业微信20230912-134819