E9/8:流程action方法汇总

package weaver.interfaces.workflow.action.javacode;
//导入包
import java.util.*;
import net.sf.json.*;
import weaver.general.*;
import weaver.soa.workflow.*;
import weaver.soa.workflow.request.*;
import weaver.conn.RecordSet;
import weaver.conn.RecordSet.*;
import weaver.hrm.*;
import weaver.interfaces.workflow.action.Action;


//在线自定义action接口
public class Action20220706020703 extends BaseBean implements Action{
		  //流程自定义接口代码示例
	public String execute(RequestInfo request) {
    //日志
   writeLog("in my online edited action");
     //获取表名称,流程id
        String requestId = request.getRequestid();//请求ID
        String requestlevel = request.getRequestlevel();//请求紧急程度
        String workflowid = request.getWorkflowid();//流程ID
        String tablename = request.getRequestManager().getBillTableName();//表单名称
        int billid = request.getRequestManager().getBillid();//表单数据ID
        String requestname = request.getRequestManager().getRequestname();//请求标题
        String remark = request.getRequestManager().getRemark();//当前用户提交时的签字意见
        int formid = request.getRequestManager().getFormid();//表单ID
        int isbill = request.getRequestManager().getIsbill();//是否是自定义表单
    
       //取主表数据
        Map<String, String> mainTableDataMap = new HashMap<String, String>();
        Property[] properties = request.getMainTableInfo().getProperty();// 获取表单主字段信息
        for (int i = 0; i < properties.length; i++) {
            String fieldname = properties[i].getName().toLowerCase();// 主字段名称,字段名转换为小写
            String fieldval = Util.null2String(properties[i].getValue());// 主字段对应的值
            mainTableDataMap.put(fieldname, fieldval);// 存为数组
            System.out.println(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);
                    }
                }
            }
        }
/*
    //方法1:修改表单字段值
    Property[] mainProps = request.getMainTableInfo().getProperty();
        // 要修改的主表字段
        String mainField = "field101"; 
        // 该主表字段修改后的值
        String mainFieldValue = "value101"; 
        for(int i=0; i< mainProps.length; i++){
            if(mainProps[i].getName().equals(mainField)){ //主表中存在此字段
                prop = mainProps[i];
                prop.setValue(mainFieldValue);
                request.getMainTableInfo().setProperty(i,prop);
            }
        }
        // 调用 BaseBean 的写日志方法
        // 会将日志写入泛微 E8 根目录的 /log/ecology 文件中
        this.writeLog("已完成修改,仅用于 Java 缓存读取,不可用于全流程");
        // 返回 SUCCESS 则依次进入: 当前环节的其他【节点后操作】、系统的出口条件判断、下一环节的【节点前操作】
        // 返回 FAILURE_AND_PASS 则会停留在当前环节的界面,提交不成功
        return Action.SUCCESS;
  */
    /*
     //方法2:修改表单字段值
     Property[] mainProps = request.getMainTableInfo().getProperty();
        // 要修改的主表名称
        String mainTableName = request.getRequestManager().getBillTableName();
        // 要修改的对应记录行号
        String requestId = request.getRequestid();
        // 要修改的主表字段
        String mainField = "field101"; 
        // 该主表字段修改后的值
        String mainFieldValue = "value102"; 
        RecordSet rs = new RecordSet(); //直接更新数据库内容,控制流程走向
        String sql = "update "+ mainTableName +" set "+mainField+"= '"+mainFieldValue+"' where requestid ="+requestId;
        rs.execute(sql);
        // 调用 BaseBean 的写日志方法
        // 会将日志写入泛微 E8 根目录的 /log/ecology 文件中
        this.writeLog("已完成修改,可用于全流程");
        // 返回 SUCCESS 则依次进入: 当前环节的其他【节点后操作】、系统的出口条件判断、下一环节的【节点前操作】
        // 返回 FAILURE_AND_PASS 则会停留在当前环节的界面,提交不成功
        return Action.SUCCESS; 
  */
    
   	RecordSet rs = new RecordSet();
		  rs.execute("select * from "+tablename+" where requestid =  "+requestId);
		 	rs.next();
    //获取表字段值
			String mainid = rs.getString("id");    					     
		 	String wenben = rs.getString("wenben");	
    
//查询字段值,存为json数组   
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
String cxsql = "select id,workflowname from workflow_base ";
rs.executeSql(cxsql);
while(rs.next()){
	Map<String, String> result = new HashMap<String, String>();
	result.put("id",rs.getString("id"));
	result.put("workflowname",rs.getString("workflowname"));
	list.add(result);
}
JSONArray jo = JSONArray.fromObject(list);
  
    
    //禁止提交
    if(1==1){
      request.getRequestManager().setMessageid("90001");
			request.getRequestManager().setMessagecontent("系统异常终止流程提交!"+"\n"+"流程ID:"+requestId+"\n"+"主表数据:"+mainTableDataMap+"\n"+"数据库查询JSON:"+jo);
      return Action.FAILURE_AND_CONTINUE;
    }else{
     //允许提交
		return Action.SUCCESS;   
    }
	}
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值