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;
    }
}
posted on 2021-12-08 18:01  小白成长变大神  阅读(59)  评论(0编辑  收藏  举报