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;
}
}
}
E9/8:流程action方法汇总
于 2022-11-16 15:18:19 首次发布