EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
安装部署
应用开发
专题场景实战案例
低代码(Low-Code)开发参考手册
高开开发参考手册
流程开发参考手册
AFCenter 使用指南
Governor 使用指南
FAQ
  • 流程框架api与spi介绍
  • 前端api
  • js-api
  • bfp-spi
  • 业务数据扩展spi
  • 相关数据扩展spi

# 流程框架api与spi介绍

# 前端API

# JS-API

  1. 表单保存方法saveFormData

    • saveFormData主要作用于用户点击保存按钮时触发保存方法。

    • 此方法有两个参数processContext、bfpContext。其中processContext为流程相关信息,bfpContext为bfp框架相关信息。

    • saveFormData为必写方法,注意此方法如果有异步操作,返回一个promise,否则直接返回form数据。具体参考示例:

      saveFormData(processContext, bfpContext) {
            // 如果有异步操作,返回一个promise,否则直接返回form数据
            let page = this.getIframePc()
            if(page){
              return page.saveFormData(processContext, bfpContext)
            } else {
              return new Promise(resolve => {
                resolve(this.formData)
              })
            }
        }
      
  2. 表单校验方法beforeSaveFormData

    • beforeSaveFormData主要作用于用户点击保存按钮时,进入保存方法之前生效,多用于对表单的校验,用户可以按照需求设计表单校验规则。

    • 此方法有两个参数processContext、bfpContext,其中processContext为流程相关信息,bfpContext为bfp框架相关信息。

    • beforeSaveFormData为非必写方法,注意返回值可以返回一个promise,也可以直接返回boolean值。具体参考示例:

      beforeSaveFormData(processContext, bfpContext, beforeSubmit = true ,isRunValidate = true) {
            let page = this.getIframePc()
            if(page){
              return await page.beforeSaveFormData(processContext, bfpContext, beforeSubmit = true ,isRunValidate = true)
            } else {
              if (beforeSubmit && this.event_beforeSubmit && (await this.event_beforeSubmit()) === false) {
                return false
              }
              if(isRunValidate){
                return this.validateAll()
              } else {
                return true
              }
            }
          }
      
  3. 保存表单后触发方法afterSaveFormData

    • afterSaveFormData主要作用于用户触发表单保存事件后,得到后台服务器返回值之后触发此方法,可用于自定义一些表单返回弹框、信息等。用户可根据自己的需求定制化前端返回内容。

    • 此方法有两个参数processContext、bfpContext。其中processContext为流程相关信息,bfpContext为bfp框架相关信息。

    • afterSaveFormData为非必写方法,注意如果有异步操作,返回一个promise,否则直接返回form数据。具体参考示例:

       afterSaveFormData(processContext, bfpContext) {
            // 如果有异步操作,返回一个promise,否则直接返回form数据
            let page = this.getIframePc()
            if(page){
              return page.afterSaveFormData(processContext, bfpContext)
            } else {
              return new Promise(resolve => {
                this.event_afterSubmitSuccess && this.event_afterSubmitSuccess()
                resolve()
              })
           }
       }
      

# BFP-SPI

# 业务数据扩展SPI

  1. 首先要在需要在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。

    在我们EOS的工程中,我们需要在需要扩展spi的构建包目录下,找到构建包的\src\META-INF目录,创建services文件夹,创建以服务接口命名的文件. 文件内容首先是接口路径例如:com.XXX.data.XXX.resourceService.ProcessResourceService,其次是4个参数:tenant、catalog、process、activity;tenant代表租户,默认为default;catalog是业务目录,默认为-1;process为接口路径地址;activity:活动定义ID(具体在流程环节下生效).

    关于4个参数,可以只传tenant,代表同一租户下流程的spi都可以生效,也可以传前两个tenant、catalog代表同一租户下流程的同一业务目录下spi都可以生效,也可以传前三个tenant、catalog、process代表同一租户下流程的同一业务目录下的单个流程的spi生效,也可以全部传tenant、catalog、process、activity代表同一租户下流程的同一业务目录下的单个流程的单个环节下spi生效.但是注意tenant是必传的,后面参数可以选择性传参.

    具体参考示例:

    image-spi1

    image-spi2

  2. 其次在具体的实现类里需要集成IProcessBizDataOperateService接口,实现该接口下两个方法queryBizFormData()和saveBizFormData().

    queryBizFormData()是查询接口数据的方法,该方法有4个参数:String bizPrimaryKeyId, String[] bizPrimaryKeyValue, String entityName,ProcessContext processContext;bizPrimaryKeyId代表业务表主键ID(联合主键采用逗号拼接),bizPrimaryKeyValue代表业务表主键值(联合主键值采用逗号拼接;数组为支持N表数据场景下的查询),entityName代表实体名称,processContext代表流程框架相关信息.客户可根据自己的需求取到需要的信息,用信息去调用自己的查询接口,得到应该返回的数据.

    saveBizFormData()是保存表单数据方法,该方法有4个参数:String bizPrimaryKeyId, String[] bizPrimaryKeyValue, String entityName,ProcessContext processContext;bizPrimaryKeyId代表业务表主键ID(联合主键采用逗号拼接),bizPrimaryKeyValue代表业务表主键值(联合主键值采用逗号拼接;数组为支持N表数据场景下的查询),entityName代表实体名称,processContext代表流程框架相关信息.客户根据传参,自行组装参数,调用保存方法,保存表单数据.注意保存方法需要返回保存数据的主键信息,用于提供查询接口使用.

    具体参考示例:

    public class ProcessResouceService implements IProcessBizDataOperateService {
        @Override
        public Object queryBizFormData(String bizPrimaryKeyId, String[] bizPrimaryKeyValue, String entityName, ProcessContext processContext) throws Exception {
            return null;
        }
    
        @Override
        public String[] saveBizFormData(List<Map<String, Object>> formData, String entityName, ProcessContext processContext) throws Exception {
            return new String[0];
        }
    }
    

# 相关数据扩展SPI

  1. 首先要在需要在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。

    在我们EOS的工程中,我们需要在需要扩展spi的构建包目录下,找到构建包的\src\META-INF目录,创建services文件夹,创建以服务接口命名的文件. 文件内容首先是接口路径例如:com.XXX.data.XXX.RelativeDataServiceImpl,其次是4个参数:tenant、catalog、process、activity;tenant代表租户,默认为default;catalog是业务目录,默认为-1;process为接口路径地址;activity:活动定义ID(具体在流程环节下生效).

    关于4个参数,可以只传tenant,代表同一租户下流程的spi都可以生效,也可以传前两个tenant、catalog代表同一租户下流程的同一业务目录下spi都可以生效,也可以传前三个tenant、catalog、process代表同一租户下流程的同一业务目录下的单个流程的spi生效,也可以全部传tenant、catalog、process、activity代表同一租户下流程的同一业务目录下的单个流程的单个环节下spi生效.但是注意tenant是必传的,后面参数可以选择性传参.

    具体参考示例:

    image-20230529142504553

  2. 其次在具体的实现类里需要集成IProcessRelativeDataService接口,实现该接口下两个方法setRelativeData()。

    setRelativeData()是设置相关数据接口的方法,该方法有3个参数:List<Map<String, Object>> formData, String entityName, ProcessContext processContext;formData代表表单数据,entityName代表流程绑定实体名称,processContext代表流程框架相关信息。客户根据传参,自行组装参数,调用设置相关数据方法。

    具体参考示例:

    public class RelativeDataServiceImpl implements IProcessRelativeDataService {
        @Override
        public Map<String, Object> setRelativeData(List<Map<String, Object>> formData, String entityName, ProcessContext processContext) {
            Map<String, Object> relativeData = new HashMap<String, Object>();
            return relativeData;
        }
    }
    
上次更新: 2023/12/12上午10:32:34

← 结合业务查询 参与者规则 →