# 新增SERVERLESSFUNCTION函数，类似serverless/Action组件,可以自定义代码

来源快照：`result_data_new_260518.json`

- 来源 ID：`1266413958233178255`
- 模块：低代码平台e-builder
- 目录：功能更新说明 - 2026-05 - 动作流
- space ID：`1157961794811633670`
- 原文链接：未提供
- 产品基线：未提供

## 正文

**SERVERLESSFUNCTION**

**用途：** 在一些业务场景下（如业务模块二开等），业务模块需要自己开发代码满足具体需求。ServerlessFunction 函数可以实现直接调用业务模块实现的 dubbo 接口，无须上传代码到 ESB。

**语法：** SERVERLESSFUNCTION (groupId,requestString,serverVersion)

**参数：**

groupId: 分组标识

requestString : 请求参数

serverVersion : 版本号（非必填)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1267044953452584966&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

示例

SERVERLESSFUNCTION (esb_test_func,hello!world!!)

返回

hello!world!!

## 

  
**1.使用背景**

     在一些业务场景下（如业务模块二开等），业务模块需要自己开发代码满足具体需求。区别于目前已有的 serverless/Action 组件需要将业务模块代码上传到 ESB 的服务路径下以实现代码调用的方式， ServerlessFunction 可以实现直接调用业务模块实现的 dubbo 接口，无须上传代码到 ESB。

**2.实现方案**

     业务模块实现 ESB 提供的接口，并将此接口按 dubbo 的方式注册到注册中心，然后通过ESB 动作流配置实现接口调用。

 

**2.1 业务模块（provider）**

  业务模块按以下步骤实现：

 2.1.1 引入依赖

<dependency>  
---  
    <groupId>com.weaver</groupId>  
    <artifactId>weaver-esb-server-api</artifactId>  
</dependency>  
   
  
** **

2.1.2

实现com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface接口

![](https://weapp.eteams.cn/papi/file/preview?fileId=1256341933430374414&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

例：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1260455468639379462&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

 

 

**2.1.3** 发布服务

** ** 按照项目的架构体系，下面是通过xml文件去配置dubbo接口，发布对应服务。

![](https://weapp.eteams.cn/papi/file/preview?fileId=1260448420528349185&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

**ref** : 对应实现接口的bean实例名称。

**interface** ：com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface （固定不变）。

**group** : 用于区分不同实现的唯一约束。

**version** ：可选参数，可用于后续多版本扩展，如果dubbbo提供者配置了动作流也需要配置

**3.********ESB** 动作流配置

![](https://weapp.eteams.cn/papi/file/preview?fileId=1260448789889736709&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

点填入发布服务时对应的分组标识(group)和 请求参数(requestString)和 版本号(serverVersion)（ 和dubbo提供者配置文件的 group 和 version 对应，如果没有版本号就不用配置）

所需配置简述：

(group)分组标识:上述发布服务时填写的 group

(serverVersion)版本号:上述发布服务时填写的 version, 没有可以不填，一般用于拓展使用。

(serverVersion)请求入参:执行函数需要的入参(代码中获取的结果【{"requestString":"hello!!world!!!!"}】)

 

4\. 应用

4.1 通过ecode 发布dubbo服务

 

可通过本地IDE开发（详情咨询二开模块）， 按照文档开始的规范进行代码编写

将代码jar包上传，以及配制文件编辑，然后重启二开服务，当nacos 能查询到发布的服务之后 配置动作流进行调用

 

 5\. 常见问题

1.

**实现代码需要放到****ESB****服务吗？**

不需要，开发完成之后只需要在各自项目中注册dubbo服务，然后在动作流中根据发布服务时填写的group和version（可选参数）去配置即可调用。

 

2.

**Duboo****发布服务在哪个配置文件？**

根据项目架构体系来。E10 一般在项目resources 目录下。

 

如果是二开服务二开修改xml统一到e-code监控管理平台里面改，访问地址 /ecode/monitor/loom/deploy/jar 配置文件编辑入口；如下图：

![](https://weapp.eteams.cn/papi/file/preview?fileId=1256341933620412429&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

**注意：**

修改二开服务xml配置的时候，一定不要手动修改服务器上的 applicationContext-secondev-dubbo.xml 文件，此文件为标准文件，升级版本时会覆盖，会导致这部分二开功能全部失效！如果已经手动改了上述文件，那么需要将xml中的二开配置拷贝迁移到e-code里面，确保升级不会受到影响。

 

3.

**后端如何开发代码，以及如何发布****jar****包？**

后端Java开发请走本地开发模式。参考文档：[https://www.e-cology.com.cn/sp/doc/docDetail/8140901019737699195  
开发好打jar上传部署到二开服务，如下图](https://www.e-cology.com.cn/sp/doc/docDetail/8140901019737699195￼开发好打jar上传部署到二开服务，如下图)

![](https://weapp.eteams.cn/papi/file/preview?fileId=1256341933620412428&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

4.

**输入参数代码如何获取？**

例  如下图，如果在动作流中配置参数的参数key

![](https://weapp.eteams.cn/papi/file/preview?fileId=1256341933430374416&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

5.

**如何确认发布的服务是否生效**

可在dubbo对应注册中心中查看，按照当前架构体系，一般使用nacos注册中心，则在如下图所示地方查看。

![](https://weapp.eteams.cn/papi/file/preview?fileId=1256341933430374417&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

 

6.

** ****常见报错排查方案**

![](https://weapp.eteams.cn/papi/file/preview?fileId=1256341933644587016&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

该报错一般是dubbo提供者未成功发布，检查下 dubbo服务的group 和version 动作流配置是否正确，并且可以在nacos查询对应的服务有没有发布成功

** **

** **

7.

**接口超时时间如何修改**

** **

**修改****dubbo****接口超时时间**

![](https://weapp.eteams.cn/papi/file/preview?fileId=1256341933619945489&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

** **

**修改****naocs****配置文件******[**Weaver-esb-server-service.properties**](http://weaver-esb-server-service.properties)**  ****（****部分合体项目可能需要到指定合体服务的配置文件去修改****）**

**添加如下配置****,****超时时间自定义****,  ****单位毫秒**

** **

[weaver.rest](http://weaver.rest).web.restRpc.[group/dubboapi全路径/version].restProperties.connectTimeOut=30000

[weaver.rest](http://weaver.rest).web.restRpc.[group/dubboapi全路径/version].restProperties.writeTimeOut=60000

[weaver.rest](http://weaver.rest).web.restRpc.[group/dubboapi全路径/version].restProperties.readTimeOut=3000

** **

**例：如****组：esb_test_new，版本：seconddev1.0**

** **

[weaver.rest](http://weaver.rest).web.restRpc.[esb_test_new/ com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface/seconddev1.0].restProperties.connectTimeOut=xxx 

[weaver.rest](http://weaver.rest).web.restRpc.[esb_test_new/ com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface/seconddev1.0].restProperties.writeTimeOut=xxx 

[weaver.rest](http://weaver.rest).web.restRpc.[esb_test_new/ com.weaver.esb.api.rpc.EsbServerlessRpcRemoteInterface/seconddev1.0].restProperties.readTimeOut=xxx 

 

**修改完成后重启****企业服务总线****所在服务**
