2021-12-09任务
写一个节点后附加操做的外部接口
当有人发起一个流程,会使用接口中的方法将流程中填写的信息写到dbo.formtable_main_133表(人力资源表)中
具体的实现:
dbo.formtable_main_133表中有四个字段分别是:
name、mobile、Email、ah
写一个类继承Action方法,使用以下代码读取流程提交时的主表数据
JSONObject jsonObject= WorkflowUtils.main2JSONObject(requestInfo.getMainTableInfo());
使用以下代码读取流程提交时明细表数据
由于明细表可能有多张,这里的0代表第一张明细表
JSONArray jsonArray = WorkflowUtils.detail2JSONArray(requestInfo.getDetailTableInfo().getDetailTable(0));
写完之后需要重启服务或者重新编译项目
然后在后端中添加节点后附加操作的接口
这里的205755是流程id,你先在后端中提交一次流程,然后可以在url中找到requestId
这里贴一个Action实现类的实例:
注意第一第二项填的是类名,第三项是带包名的类名。填完之后重新编译一下项目,然后刷新一下网页。
点击查看代码
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import kaifa.Utils.WorkflowUtils;
import kaifa.oa.MakeRequestByJson;
import kaifa.selferp.HDb;
import weaver.interfaces.workflow.action.*;
import weaver.soa.workflow.request.RequestInfo;
import java.sql.SQLException;
public class TestWqAction implements Action {
/* 也就是你使用一次TestWqAction后,你可以得到在前端中输入的主表信息和明细表信息,也可以设置条件,这个条件分为节点前附加操作和节点后附加操作,
解释一下,节点前附加操作是流程流转到该节点之前需要执行一次TestWqAction方法,节点后附加操作是流程流转到下一个节点时执行操作*/
@Override
public String execute(RequestInfo requestInfo) {
//获得Requestid
requestInfo.getRequestid();
//得到发起流程的主表赋值给一个JOSNObject
JSONObject jsonObject= WorkflowUtils.main2JSONObject(requestInfo.getMainTableInfo());
//获得员工名称
String ygmc=jsonObject.getString("ygmc");
System.out.println("员工名称:"+ygmc);
JSONArray jsonArray=WorkflowUtils.detail2JSONArray(requestInfo.getDetailTableInfo().getDetailTable(0));
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject row=jsonArray.getJSONObject(i);
System.out.println("detail 爱好:"+row.getString("ah"));
System.out.println("detail 家乡:"+row.getString("jx"));
}
return this.FAILURE_AND_CONTINUE;
}
//这是一个测试的方法,可以使用MakeRequestByJson类构造一个流程RequestInfo(由于每次写了一个条件后都要重启web服务太麻烦了于是老大封装了这个类)
public static void main(String[] args) throws SQLException {
//这里的205755是流程id,你先在后端中提交一次流程,然后可以在url中找到requestId
// RequestInfo requestInfo = MakeRequestByJson.makeRequestInfo(205755);
//main是static方法,不能直接使用实例方法,所以需要先new一个实例
// new TestWqAction().execute(requestInfo);
HDb.use().query("select * from AAAA");
}
}
点击查看代码
public class Test133Action implements Action{
String name,mobile,email,ah;
@Override
public String execute(RequestInfo requestInfo) {
//获得主表和明细表的数据
requestInfo.getRequestid();
JSONObject jsonObject = WorkflowUtils.main2JSONObject(requestInfo.getMainTableInfo());
name = jsonObject.getString("ygmc");
mobile = jsonObject.getString("dhhm");
email = jsonObject.getString("yx");
JSONArray jsonArray = WorkflowUtils.detail2JSONArray(requestInfo.getDetailTableInfo().getDetailTable(0));
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject row=jsonArray.getJSONObject(i);
ah = row.getString("ah");
}
//将主表和明细表数据写入dbo.formtable_main_133
try {
HDb.use().insert(
Entity.create("dbo.formtable_main_133")
.set("name", name)
.set("mobile", mobile)
.set("email", email)
.set("ah", ah)
);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return this.FAILURE_AND_CONTINUE;
}
}