泛微ecology二次开发之action

857 阅读1分钟

action 接口主要用作于流程节点前,节点后的附加操作

他需要实现 weaver.interfaces.workflow.action.Action 接口

整个流程操作顺序为 :保存表单数据 -> 节点后操作 -> 生成编号 ->出口附加规则 -> 节点前操作 -> 插入操作者 和签字意见 

附上鄙人 3年 总结的 action 常用的方法

//获取⼯作流id
String workflowId = info.getWorkflowid();
//获取流程id
String requestid = info.getRequestid();
//获取RequestManager对象
RequestManager RequestManager = info.getRequestManager();
//获取当前节点id
int currentnodeid = RequestManager.getNodeid();
//下⼀个节点id
int nextnodeid = RequestManager.getNextNodeid();
//获取流程表单id
int formid = RequestManager.getFormid();
//是否为单据
int isbill = RequestManager.getIsbill();
//获取数据库主表名
String tableName = RequestManager.getBillTableName();

         String requestid = requestinfo.getRequestid();//请求ID
        String requestlevel = requestinfo.getRequestlevel();//请求紧急程度
          //当前操作类型 submit:提交/reject:退回
        String src = requestinfo.getRequestManager().getSrc();
     
        String workflowid = requestinfo.getWorkflowid();//流程ID
        String tablename = requestinfo.getRequestManager().getBillTableName();//表单名称
        int billid = requestinfo.getRequestManager().getBillid();//表单数据ID
        User usr = requestinfo.getRequestManager().getUser();//获取当前操作用户对象
        String requestname = requestinfo.getRequestManager().getRequestname();//请求标题
        String remark = requestinfo.getRequestManager().getRemark();//当前用户提交时的签字意见
        int nextnodeid =RequestManager.getNextNodeid();//获取下个节点id
        int formid = requestinfo.getRequestManager().getFormid();//表单ID

        int isbill = requestinfo.getRequestManager().getIsbill();//是否是自定义表单
        //取主表数据
    	Map<String, String> mainTableDataMap = new HashMap<String, String>();
			Property[] props = request.getMainTableInfo().getProperty();
			for (int i = 0; i < props.length; i++) {
				String fieldname = props[i].getName().toLowerCase();// 字段名转换为小写
				String fieldval = Util.null2String(props[i].getValue());
				mainTableDataMap.put(fieldname, fieldval);
			}
        //取明细数据
        DetailTable[] detailtable = request.getDetailTableInfo().getDetailTable();// 获取所有明细表
        if (detailtable.length > 0) {
            for (int i = 0; i < detailtable.length; i++) {
                DetailTable dt = detailtable[i];// 指定明细表
                Row[] s = dt.getRow();// 当前明细表的所有数据,按行存储
                for (int j = 0; j < s.length; j++) {
                    Row r = s[j];// 指定行
                    Cell c[] = r.getCell();// 每行数据再按列存储
                    for (int k = 0; k < c.length; k++) {
                        Cell c1 = c[k];// 指定列
                        String name = c1.getName();// 明细字段名称
                        String value = c1.getValue();// 明细字段的值
                        System.out.println(name + " " + value);
                    }
                }
            }
        }

有问题交流 请加qq 1255605448