1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 泛微OA二次开发后处理接口编写

泛微OA二次开发后处理接口编写

时间:2019-02-17 16:41:53

相关推荐

泛微OA二次开发后处理接口编写

泛微OA二次开发后处理接口编写

一、所需的依赖文件二、demo代码解析三、小技巧四、注意事项

一、所需的依赖文件

weaver.soa.workflow.request.RequestInfo //implements 实现类 ,实现 String execute(RequestInfo paramRequestInfo);方法weaver.conn.RecordSet; //数据库操作类,包含日志打印com.weaver.general.Util; //工具类 ,主要作用用于数据库查询数据后的数据接收转换作用

二、demo代码解析

package weaver.interfaces.workflow.action;import java.util.HashMap;import java.util.Map;import com.weaver.general.Util;import weaver.conn.RecordSet;import weaver.hrm.User;import weaver.integration.logging.Logger;import weaver.integration.logging.LoggerFactory;import weaver.soa.workflow.request.RequestInfo;public class TestAction implements Action {//设置固定参数空(特点:灵活多变,OA泛微前台可设置该参数数据值)private String string1="";private String string2="";private String string3="";//打印日志操作类private Logger log = LoggerFactory.getLogger(TestAction.class);@Overridepublic String execute(RequestInfo paramRequestInfo) {// 获取WorkflowidString workflowid = paramRequestInfo.getWorkflowid();//获取签字意见(仅提交触发该接口节点的签字意见)String remarkString=paramRequestInfo.getRequestManager().getRemark();//获取对应流程表单名称(主表)String tableNameString=paramRequestInfo.getRequestManager().getBillTableName();//自己写的方法获取对应流程表单名称String tableNameString2=getTablename(workflowid); // 获取requestidString requestid = paramRequestInfo.getRequestid();//获取紧急等级String requestLevel=paramRequestInfo.getRequestlevel();//获取流程的标题String requestname = paramRequestInfo.getRequestManager().getRequestname();//获取该流程当前节点idint nodeId=paramRequestInfo.getRequestManager().getNodeid();//获取该流程是否是自定义表单int isbill=paramRequestInfo.getRequestManager().getIsbill();//获取该流程下一节点idint nextNodeId=paramRequestInfo.getRequestManager().getNextNodeid();//获取当前流程操作的用户对象信息User usr = paramRequestInfo.getRequestManager().getUser();//获取流程当前操作类型String src = paramRequestInfo.getRequestManager().getSrc();//数据库操作以及日志打印RecordSet recordSet = new RecordSet();//sql查询主表语句String sqlString = "SELECT * FROM " + tableNameString + " WHERE requestid =" + requestid;//执行sql语句recordSet.execute(sqlString);//创建mapMap<String, String> mainTableDataMap = new HashMap<String, String>();//recordSet数据库读取操作为游标,需进行循环后获取数据while (recordSet.next()) {// 获取长度int intValue = recordSet.getColCounts();for (int i = 1; i <= intValue; i++) {// 获取列名String colNameString = recordSet.getColumnName(i);//获取相应列名对应的值String colValueString = Util.null2String(recordSet.getString(colNameString));//放入map中mainTableDataMap.put(colNameString, colValueString);}}//直接从map中获取想要的列数值//优点(操作方便,界面整洁);缺点(不需要的列数据会存入map,增加内存)String xwlkrqString=mainTableDataMap.get("xwlkrq");if (xwlkrqString.equals("")) {//错误时使用,流程提交失败后返回前端提示信息paramRequestInfo.getRequestManager().setMessageid("");paramRequestInfo.getRequestManager().setMessagecontent("签字意见:".concat(remarkString).concat(" 表名:".concat(tableNameString)));//日志打印(ecology日志)路径:ecology\logrecordSet.writeLog("==测试测试"+remarkString);//日志打印(集成日志) 路径:ecology\log\integrationlog.info("==测试测试"+remarkString);//执行后处理接口失败 (失败为0)return Action.FAILURE_AND_CONTINUE;}else {//执行后处理接口通过 (成功为1)return Action.SUCCESS;}}/*** 获取对应workflowid的数据库表单名称* @param workflowid* @return 表单名称(主表)*/public static String getTablename(String workflowid) {String formid = "";String sql1 = "select formid from workflow_base where id=" + workflowid;RecordSet rs = new RecordSet();rs.execute(sql1);if (rs.next())formid = rs.getString("formid"); formid = formid.replaceAll("-", "");String tablename = "formtable_main_" + formid;return tablename;}}

三、小技巧

活参可前台配置,触发Action接口可带入

四、注意事项

数据库操作类,”RecordSet “能复用该类进行查询、插入、更改操作尽量选择复用。尽量选择少建立新的“RecordSet ”类进行数据库操作。Action后处理接口编写时,一定要成功操作以及失败操作进行分明,并且失败时尽量打印返回到前端页面失败信息,方便一眼定位执行失败报错情况。前台配置灵活参数时,注意检查前端页面保存时该参数是否变为全角字符。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。