该插件目前已下架帆软市场,本文档仅提供给历史使用了该插件的客户,帆软目前不再提供该插件的任何获取渠道。
1. 概述
1.1 版本
报表服务器版本 |
JAR 包版本 |
插件版本 |
10.0~11.0 |
2018-07-31 |
V1.2.0 |
1.2 应用场景
用户在做填报报表时,希望点击提交按钮时、页面或控件的事件,填报模板调用客户系统接口发送数据、触发客户系统流程等操作。
注:不支持移动端使用。
1.3 功能介绍
插件功能,在报表填报属性中扩展自定义提交类型,实现提交数据给 HTTP 接口功能。
主要功能:
-
提供接口参数配置页面,可配置 提交方式、单元格状态、接口url 参数值配置。
-
支持单行填报 HTTP GET 方式提交接口,可设置url参数值功能。
-
支持单行填报 HTTP POST 方式提交接口,参数处理包括 表单 form-data形式、x-www-form-urlencodeed形式、json形式。
-
支持多行填报 HTTP POST 方式提交接口,参数处理为json形式。
-
支持单行、多行填报 WebService 方式提交接口。
-
自定义Body参数、Header参数属性数据支持单元格、函数公式、公式等。
-
调用接口返回结果保存到系统消息,JSON格式结果可设定条件抛出指定错误信息到前端。
-
页面或控件的事件,新增数据接口提交功能。
-
填报提交方式的接口认证,提供插件依赖,用于定制功能开发cookie认证、token认证等方式。
2. 插件介绍
安装插件完成后,即可填报数据接口提交功能。
2.2.1 提交参数配置
应用场景-报表填报
报表模板设置,可参考 填报自定义提交
打开报表设置后,点击「模板>报表填报属性」,新增一个自定义提交,如下图所示:

应用场景-页面或控件事件
模板Web属性-》事件设置,新增事件类型。控件事件,新增事件类型。页面或控件事件,使用方式:可参考示例模板 GetSubmitEvent.cpt
示例:模板-》模板web属性-》填报页面设置

配置参数说明:
l 选择提交类型:下拉框选择“接口数据提交”步骤4。
l 提交方式:下拉框有六种方式,分别为 单行填报GET提交(Get)、单行填报POST提交(Post)、单行填报POST提交JSON(PostJson)、多行填报POST提交(PostTotal)、单行填报WebService提交(Soap)、多行填报WebService提交(SoapTotal)。步骤5。
l 单元格状态:选择筛选单元格值状态触发条件,步骤6。单元格状态详细描述如下:
1)变更:单元格的值在报表初始化后被修改过(包含修改和修改删除和修改插入三种状态;
2)新增:单元格是在报表初始化后新增的(包括插入和修改插入两种状态);
3)删除:单元格所在的记录被执行了删除操作(包含删除和修改删除两种状态);
4)默认:单元格在报表初始化后没有变化。
l 链接:接口的url地址。步骤7。参数url,支持嵌入变量值,详见2.2.9
l Body参数:用于为填报提交给接口的参数值。步骤8。单行填报GET中用于产生url参数。POST提交中用于产生表单参数或者JSON。WebService提交中用于产生xml。
l Header参数:设置接口请求的header参数值。例如:Content-Type值或者其他所需header值。
l Body内容:设置接口请求的消息体的模板,以满足参数之外的请求内容格式要求。
l 返回结果:设置JSON格式结果的报错条件,符合条件时,前端窗口提示指定错误信息。
1)错误标识:结果中错误标识,例如code或errorCode等;
2)成功状态值:错误标识码代表成功的值,例如code=0代表无错误、成功执行;即标识码不等于0时,会抛出错误信息。
3)错误信息标识:用于在结果中提取错误信息。
2.2.2 填报提交GET
报表模板GetSubmitJob.cpt配置示例:提交方式选择Get


2.2.3 填报提交POST
表单form-data形式
报表模板 PostSubmitJob.cpt 配置示例:提交方式选择 Post


x-www-form-urlencodeed形式
报表模板 PostSubmitJob-x-www-urlencode.cpt 配置示例:提交方式选择 Post
Header增加Content-Type参数值。

2.2.4 填报提交POST-JSON
报表模板 PostSubmitJob-json.cpt 配置示例:提交方式选择 PostJson
Header增加Content-Type参数值为application/json。如Content-Type=application/json,则将Body参数转为JSON对象格式提交。
Body内容框为空,不填写值。

报表模板 PostSubmitJob-json-定制格式.cpt 配置示例:提交方式选择 PostJson
Header增加Content-Type参数值为application/json。如Content-Type=application/json,则将Body参数转为JSON对象格式提交。
Body内容框填写自定义json格式,可嵌入Body参数变量。


2.2.5 多行填报提交POST
报表模板 PostTotalSubmitJob.cpt 配置示例:提交方式选择 PostTotal
Header增加Content-Type参数值为application/json。如Content-Type=application/json,则将多行Body参数转为JSON数组格式提交。
Body内容框为空,不填写值。


报表模板 PostTotalSubmitJob-定制格式.cpt 配置示例:提交方式选择 PostTotal
Header增加Content-Type参数值为application/json。如Content-Type=application/json,则将多行Body参数转为JSON数组格式提交。
Body内容框填写自定义json格式,可嵌入JSON数组,固定为${paramsData}。JSON数组即为多行Body参数计算得到。

2.2.6 填报提交SOAP
报表模板 SoapSubmitJob.cpt 配置示例:
提交方式:选择 Soap,设置单元格状态和接口连接url。
Body参数:按照接口实际要求维护对应参数值。

Header参数:增加Content-Type参数值为 text/xml;charset=UTF-8。WebService操作名称Operation作为Header参数 SOAPAction 的值。如图:

查看webservice的Operation名称,可使用软件SoapUI分析 WSDL地址得到。示例如图:

Body内容:WebService所需要的xml,其中嵌入Body参数,形式为 {参数名} 。

2.2.7 多行填报提交SOAP
报表模板 SoapSubmitJob-total.cpt 配置示例:
提交方式:选择 SoapTotal,设置单元格状态和接口连接url。
Body参数:按照接口实际要求维护对应参数值。
Body内容:WebService所需要的xml,由两个分隔符 ##LOOP## 包括多行循环xml节点。循环xml节点其中嵌入Body参数变量,形式为 ${参数名} 。

格式化 XML 如下:
<?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="webservices.services.weaver.com.cn" xmlns:ent="http://entity.srm.ch.com"> <soapenv:Header/> <soapenv:Body> <web:createWorkflow> <web:in0-array> ##LOOP## <web:in0> <ent:documentCode>${documentCode}</ent:documentCode> <ent:VENDOR_CODE>${VENDOR_CODE}</ent:VENDOR_CODE> <ent:VENDOR_NAME>${VENDOR_NAME}</ent:VENDOR_NAME> <ent:FROM_STAGE>${FROM_STAGE}</ent:FROM_STAGE> <ent:TO_STAGE>${TO_STAGE}</ent:TO_STAGE> <ent:CREATE_DATE>${CREATE_DATE}</ent:CREATE_DATE> <ent:CREATE_BY>${CREATE_BY}</ent:CREATE_BY> <ent:REMARK>${REMARK}</ent:REMARK> </web:in0> ##LOOP## </web:in0-array> </web:createWorkflow> </soapenv:Body> </soapenv:Envelope>
2.2.8 返回结果报错条件设置
在报表填报属性中,设置条件参数值,如图:

返回结果内容:
{ "code": 1, "message": "运行错误异常", "status": "error"}
符合条件的结果值,会显示到前端消息框中。

2.2.9 参数url使用变量
模板配置界面参数url,支持嵌入变量值。
可以使用内置接口 http://localhost:8075/webroot/decision/submitjob/get 测试。
先定义变量,然后在 url中拼接变量。可参考示例模板 GetSubmitEvent.cpt
报错示例模板,可参考GetErrorSubmitJob.cpt


2.3 功能扩展
2.3.1 提交接口鉴权认证
填报提交方式的接口认证,提供插件依赖,用于定制功能开发cookie认证、token认证等方式。
插件提供了一个 开发插件接口,用于定制 提交请求的认证处理功能,可修改 请求的header和表单参数,以满足第三方url的登录需求。
开发接口如下:AbstractHttpAuthSubmitJobProcessor
@Openpublic class AbstractHttpAuthSubmitJobProcessor implements HttpAuthSubmitJobProcessor {
public AbstractHttpAuthSubmitJobProcessor() { }
public void processAuth(Map<String, String> params, Map<String, String> headers) { }
public int currentAPILevel() { return 1; }
public String mark4Provider() { return this.getClass().getName(); } }
在依赖子插件的plugin.xml ,可使用 如下方式进行调用。
<dependence> <Item type="plugin" key="com.fr.plugin.mqh.submitjob.v10"/> </dependence> <extra-core> <HttpAuthSubmitJobProcessor class="com.fr.plugin.mqh.submitjob.plug.provider.CustomHttpAuthProcessor"/> </extra-core>
定制功能示例代码:
package com.fr.plugin.mqh.submitjob.plug.provider;
import com.fr.plugin.mqh.submitjob.fun.impl.AbstractHttpAuthSubmitJobProcessor; import java.util.Map;
public class CustomHttpAuthProcessor extends AbstractHttpAuthSubmitJobProcessor { @Override public void processAuth(Map<String, String> params, Map<String, String> headers) { // TODO 接口鉴权认证等操作,把所需参数加到 请求参数或请求header中 } }
子插件的代码示例: 子插件代码示例.zip (10.58 K)
3. 模板下载
点击下载模板: submitjob示例模板.zip (24.48 K)
|