要求:将base_agv_info表中agv_no以128开头的状态status置为1,1为前台指定传入
1、先启动redis和zookeeper
2、Eclipse中iTMS_STD下业务处理-公共资源-公共组件-Default中创建组件cyz
3、创建需要用到的脚本,在package workspace中按如下目录创建
书写脚本,代码中ALIAS获取的是组件中的数据源,reqdata是前台传入的值,retMsg是输出的信息。
/**
*
*/
package com.zjft.bpe.test;
import java.sql.Connection;
import com.zjft.bpe.stdlib.exception.ParamNotExistException;
import com.zjft.bpe.stdlib.exception.UnrecognizedScopeException;
import com.zjft.bpe.stdlib.util.ModuleUtil;
import com.zjft.log.ZjLogger;
import com.zjft.zjfz.datamodule.BizDataModule;
import com.zjft.zjfz.db.DbOperate;
import com.zjft.zjfz.engine.IWFEngine;
import com.zjft.zjfz.util.LoggerUtil;
import com.zjft.zjfz.wfactivety.WFActivity;
import com.zjft.zjfz.wfdata.WFData;
/**
* @author cyz
*
*/
public class TestUpdate {
private final static String DB_ALIAS = "ALIAS"; //数据源
private final static String REQ_DATA = "reqData"; //前端传入的值
private final static String RETMSG = "retMsg"; //输出的值
public String process(IWFEngine engine, WFActivity activity, WFData wfd, String wfName) throws ParamNotExistException, UnrecognizedScopeException {
BizDataModule dm = wfd.getDataModule();
ZjLogger log = LoggerUtil.getLog(dm.getChannelId(), dm.getTxCode());
ModuleUtil moduleUtil = new ModuleUtil(wfd, wfd.getDataModule(), activity, log);
String alias = moduleUtil.getParamValue(DB_ALIAS);
String reqData = moduleUtil.getParamValue(REQ_DATA);
int reqData1 = 0;
try {
reqData1 = Integer.valueOf(reqData).intValue();
} catch (Exception e) {
// TODO: handle exception
}
try {
Connection conn = wfd.getTxConnection(alias);
String updateStatus = "update base_agv_info set status = "+ reqData1 +" where agv_no like '128%' ";
DbOperate.executeCUID(updateStatus, conn, log);
} catch (Exception e) {
// TODO: handle exception
log.error("异常:" + e.getMessage());
moduleUtil.setParamValue(RETMSG, "修改状态失败");
return "fail";
}
moduleUtil.setParamValue(RETMSG, "修改状态成功");
return "ok";
}
}
4、双击cyz组件,设置组件属性:脚本导入刚写好的脚本,参数的名称要与脚本中的名称一致,数据源需要注意:传入的参数是全局变量,需要设置BusinessInfo,输出的信息需要往下传递,设置成局部变量即可。传入的值全部放在reqMsg中,输出的值全都放在repMsg中,所以这里参数值要写成reqMsg.reqData。出口的状态要与脚本中的return相同。
组件设置好了以后,点击window-show view-other,点开Git
点开javaCtr.xml
会看到这里会生成组件的相关信息
5、交易列表-basic-test下新建updateStatus交易,绘制流程图
设置响应,有两种方法,第一种选择系统组件的数据处理组件,用它设置成功响应
在这里设置输出的信息:上面提到输出的信息都放在rspMsg中,所以字段名/值rspMsg.retCode(成功码,我们设置00000), rspMsg.retMsg获取cyz传入的值(蓝色标记所示)
还有一种方法是在交易业务组件中
这里可以直接设置retCode和retMsg的值,也可以继承cyz传下来的值
6、Eclipse完成上述工作以后要用gradle编译
7、Idea启动ucp和bpe(可设置断点)
8、Postman在请求时,传入的数据要是json格式。
效果如图:
查看数据库:
总结:
(1)每次更改eclipse脚本和流程图,都要重启bpe。
(2)输入信息都放在reqMsg中,输出信息都放在rspMsg中
(3)设置响应的两种方式:系统组件中的数据处理组件、标准业务组件中设置响应码和响应信息
(4)Postman传值要求json格式