这个是客户的webservice请求报文:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><S:Body><ns2:doCreateWorkflowRequest xmlns="http://webservices.workflow.weaver" xmlns:ns2="webservices.services.weaver.com.cn"><ns2:in0><creatorId>60000615</creatorId><requestName>esigntest福建吉诺车辆服务测试救援系统使用权外销-杨明亮-2023-11-09</requestName><workflowBaseInfo><workflowId>90021</workflowId></workflowBaseInfo><workflowDetailTableInfos><WorkflowDetailTableInfo><workflowRequestTableRecords><WorkflowRequestTableRecord><workflowRequestTableFields><WorkflowRequestTableField><edit>true</edit><fieldName>yzgsmc</fieldName><fieldShowName>印章公司名称</fieldShowName><fieldValue>福州吉诺网络科技有限公司</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>yzmc</fieldName><fieldShowName>印章名称</fieldShowName><fieldValue>E签宝电子印章</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>gzwjmc</fieldName><fieldShowName>盖章文件名称</fieldShowName><fieldValue>esigntest福建吉诺车辆服务测试救援系统使用权外销</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>gzsy</fieldName><fieldShowName>盖章事由 (如为合同/协议需填写金额/有效期)</fieldShowName><fieldValue>esigntest福建吉诺车辆服务测试救援系统使用权外销</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>xwdw</fieldName><fieldShowName>行文单位</fieldShowName><fieldValue>esigntest福建吉诺车辆服务测试</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>gzfs</fieldName><fieldShowName>盖章份数</fieldShowName><fieldValue>1</fieldValue><view>true</view></WorkflowRequestTableField></workflowRequestTableFields></WorkflowRequestTableRecord></workflowRequestTableRecords></WorkflowDetailTableInfo></workflowDetailTableInfos><workflowMainTableInfo><requestRecords><WorkflowRequestTableRecord><workflowRequestTableFields><WorkflowRequestTableField><edit>true</edit><fieldName>sqrq</fieldName><fieldShowName>申请日期</fieldShowName><fieldValue>2023-11-09</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sqr</fieldName><fieldShowName>申请人</fieldShowName><fieldValue>60000615</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sqrbm</fieldName><fieldShowName>申请人部门</fieldShowName><fieldValue/><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sqrgw</fieldName><fieldShowName>申请人岗位</fieldShowName><fieldValue/><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sqrssgs</fieldName><fieldShowName>申请人所属公司</fieldShowName><fieldValue/><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sjsqdw</fieldName><fieldShowName>实际申请单位</fieldShowName><fieldValue/><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sjsqdwqc</fieldName><fieldShowName>实际申请单位全称</fieldShowName><fieldValue/><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sqnr</fieldName><fieldShowName>申请内容</fieldShowName><fieldValue>esigntest福建吉诺车辆服务测试救援系统使用权外销</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>je</fieldName><fieldShowName>金额</fieldShowName><fieldValue>888</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sfyhthxy</fieldName><fieldShowName>是否有合同或者协议</fieldShowName><fieldValue>0</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>htjf</fieldName><fieldShowName>合同甲方</fieldShowName><fieldValue>esigntest福建吉诺车辆服务测试</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>htyf</fieldName><fieldShowName>合同乙方</fieldShowName><fieldValue>福州吉诺网络科技有限公司</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>httgf</fieldName><fieldShowName>合同提供方</fieldShowName><fieldValue>1</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sjje</fieldName><fieldShowName>涉及金额</fieldShowName><fieldValue>888</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sfyfj</fieldName><fieldShowName>是否有附件</fieldShowName><fieldValue>0</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>fjsfytj</fieldName><fieldShowName>附件是否已提交</fieldShowName><fieldValue>0</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sfwwsmbht</fieldName><fieldShowName>是否为我司模板合同</fieldShowName><fieldValue>0</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>mbbh</fieldName><fieldShowName>模板编号</fieldShowName><fieldValue>JNFZ-FB-202101</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sfkxg</fieldName><fieldShowName>是否可修改</fieldShowName><fieldValue>1</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>htlx</fieldName><fieldShowName>合同类型</fieldShowName><fieldValue>0</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>htbjhnr</fieldName><fieldShowName>合同背景/内容说明及具体承办人意见(包括但不限于审核需求、如希望完成时间,对方格式条款不同意修改、需要特别审核的内容等)</fieldShowName><fieldValue>esigntest福建吉诺车辆服务测试救援系统使用权外销</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sfsjgz</fieldName><fieldShowName>是否涉及盖章</fieldShowName><fieldValue>0</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>gzjbr</fieldName><fieldShowName>总部经办人</fieldShowName><fieldValue>60000615</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>sfydagd</fieldName><fieldShowName>是否有档案归档</fieldShowName><fieldValue>0</fieldValue><view>true</view></WorkflowRequestTableField><WorkflowRequestTableField><edit>true</edit><fieldName>xgfj</fieldName><fieldShowName>相关附件</fieldShowName><fieldType>http:救援系统销售电子合同.pdf</fieldType><fieldValue>https://obs-rescue.saa.com.cn/qa/master/esign/20231109/1699499602407.pdf</fieldValue><view>true</view></WorkflowRequestTableField></workflowRequestTableFields></WorkflowRequestTableRecord></requestRecords></workflowMainTableInfo></ns2:in0><ns2:in1>60000615</ns2:in1></ns2:doCreateWorkflowRequest></S:Body></S:Envelope>
1.测试和写代码之前先去配置一下文件内容,
\WEAVER\ecology\WEB-INF文件夹下的web.xml文件
测试生成的wsdl文件:
!!注意:不要用localhost会无效
http://127.0.0.1:端口号/services?wsdl 或者127.0.0.1:8099/services/WorkflowService?wsdl
这样显示就是成功了
2.其次我们打开soapui
我这里之前用的mysql,最近项目要用sqlserver的数据库就不方便演示结果了 各位大佬自己测试。
3.其次附上最重要的代码:
想要代码生效必须在:
package weaver.workflow.webservices; 这个包下面
包下的类名必须叫做webserviceImpl
改系统的这个方法之前最好先备份一份。
修改创建流程的代码:
需要根据你们本地或者客户的流程来写代码,我的印章是跟建模台账有关,并且用的公共选择框,在明细表添加。其他的代码就是申请人带出相关单位部门等信息。
public String doCreateWorkflowRequest(WorkflowRequestInfo wri, int userid) { try { RecordSet recordSet = new RecordSet(); String wriInfo = jsonObject.toJSONString(wri); log.error("获取到的参数:"+wri); //remark:zdh 2023-11-13吉诺 救援流程字段带出功能 JSONObject wriJson = (JSONObject) jsonObject.toJSON(wri); JSONObject workflowBaseInfo = (JSONObject) wriJson.get("workflowBaseInfo");; String workflowId = (String) workflowBaseInfo.get("workflowId"); log.error("获取到的流程id:"+workflowId); RecordSet recordSet2 = new RecordSet(); if (workflowId.equals("90021") || workflowId.equals("70536")||workflowId.equals("100")) { // String sql = "select loginid from hrmresource where id=?"; // recordSet.executeQuery(sql, userid); // recordSet.next(); // String reuserid = recordSet.getString("loginid"); recordSet.executeQuery("select a.id,a.DEPARTMENTID,a.SUBCOMPANYID1,a.JOBTITLE,b.departmentmark " + " from HRMRESOURCE a,hrmdepartment b where a.DEPARTMENTID=b.id and loginid=?", String.valueOf(userid)); if (recordSet.next()) { log.info("recordSet.getInt():" + recordSet.getInt("id")); int ryid = recordSet.getInt("id");//得到查询人的id userid = recordSet.getInt("id");//得到id wri.setCreatorId(userid + ""); String departmentid = recordSet.getString("DEPARTMENTID");//所属部门id String subcompanyid = recordSet.getString("SUBCOMPANYID1");//所属分部1 id String jobtitle = recordSet.getString("JOBTITLE");//岗位 String departmentmark = recordSet.getString("departmentmark");//部门标识 //转换主表单的相关人员信息 WorkflowMainTableInfo mainTableInfo = wri.getWorkflowMainTableInfo(); if (mainTableInfo != null) { WorkflowRequestTableRecord[] records = mainTableInfo.getRequestRecords(); for (int i = 0; i < records.length; i++) { WorkflowRequestTableField[] tableFields = records[i].getWorkflowRequestTableFields(); String requestid = ""; for (int j = 0; j < tableFields.length; j++) { WorkflowRequestTableField field = tableFields[j]; if ("sqr".equals(field.getFieldName())) { //申请人字段 field.setFieldValue(String.valueOf(userid)); } if ("sqrbm".equals(field.getFieldName()) || "sjsqdw".equals(field.getFieldName()) || "fycdbm".equals(field.getFieldName())) { field.setFieldValue(departmentid); //申请人部门 ,实际申请单位 } if ("sqrgw".equals(field.getFieldName())) { //申请人岗位 field.setFieldValue(jobtitle); } if ("sqrssfb".equals(field.getFieldName())) { field.setFieldValue(subcompanyid); } // if ("sqrssgs".equals(field.getFieldName())) { //申请人所属公司 // field.setFieldValue(subcompanyid); // } if ("sjsqdwbmqc".equals(field.getFieldName()) || "sqrbmqc".equals(field.getFieldName()) || "sjsqdwqc".equals(field.getFieldName()) || "bmqcsqrbm".equals(field.getFieldName())) {//部门全称, 实际申请单位全称,申请人所属公司 field.setFieldValue(departmentmark); } //总部经办人 if ("gzjbr".equals(field.getFieldName())) { recordSet2.executeQuery("select id from hrmresource where loginid=?", field.getFieldValue()); while (recordSet2.next()) { field.setFieldValue(recordSet2.getString("id")); } } if ("oalcbh".equals(field.getFieldName())) { recordSet2.executeQuery("select requestid from workflow_requestbase where requestmark=?", field.getFieldValue()); while (recordSet2.next()) { requestid = recordSet2.getString("requestid"); } } } //浏览按钮 WorkflowRequestTableField field = new WorkflowRequestTableField(); field.setEdit(true);//可编辑 field.setFieldName("oaxglc");//字段名 field.setFieldShowName("oa相关流程");//展示名 field.setFieldValue(requestid);//流程id field.setView(true);//可查看 WorkflowRequestTableField[] newFields = new WorkflowRequestTableField[tableFields.length + 1]; for (int j = 0; j < tableFields.length; j++) { newFields[j] = tableFields[j]; } newFields[tableFields.length] = field; records[i].setWorkflowRequestTableFields(newFields); } } //明细表字段 关于印章公司 印章名称 WorkflowDetailTableInfo[] detailTableInfos = wri.getWorkflowDetailTableInfos(); if (detailTableInfos != null) { for (WorkflowDetailTableInfo detailTableInfo : detailTableInfos) { WorkflowRequestTableRecord[] records = detailTableInfo.getWorkflowRequestTableRecords(); for (int i = 0; i < records.length; i++) { WorkflowRequestTableField[] tableFields = records[i].getWorkflowRequestTableFields(); String yzgsmc = "", yzmc = ""; int idx_yzgsmc = 0, idx_yzmc = 0; for (int j = 0; j < tableFields.length; j++) { WorkflowRequestTableField field = tableFields[j]; if ("yzgsmc".equals(field.getFieldName())) {//印章公司名称 yzgsmc = field.getFieldValue(); log.error("获取到的流程id:"+yzgsmc); idx_yzgsmc = j; log.error("获取到的流程id:"+idx_yzgsmc); log.info("yzgsmc"); } if ("yzmc".equals(field.getFieldName())) {//印章名称 yzmc = field.getFieldValue(); log.error("获取到的流程id:"+yzmc); idx_yzmc = j; log.error("获取到的流程id:"+idx_yzmc); } } //remark:zdh 2023-11-13印章转换 recordSet2.executeQuery("SELECT uf_yztz.id, mode_selectitempagedetail.disorder\n" + "FROM mode_selectitempagedetail\n" + "INNER JOIN uf_yztz ON mode_selectitempagedetail.disorder = uf_yztz.yzmc\n" + "WHERE uf_yztz.yzgsmc = ?\n" + "AND mode_selectitempagedetail.name = ?", yzgsmc, yzmc); while (recordSet2.next()) { tableFields[idx_yzgsmc].setFieldValue(recordSet2.getString("id")); tableFields[idx_yzmc].setFieldValue(recordSet2.getString("disorder")); } } } } } } else { //remark: ganst 2022-3-22 增加夏谷人员ID转换功能 begin //客诉、服务商业合同,创建流程时需要转换相关字段 recordSet.executeQuery("select * from uf_ksjdpzb where rownum=1"); String lcid = ""; if (recordSet.next()) { lcid = recordSet.getString("lcid"); } log.info("userid:" + userid + ",lcid:" + lcid + ",getWorkflowId:" + wri.getWorkflowBaseInfo().getWorkflowId()); if (lcid.contains(wri.getWorkflowBaseInfo().getWorkflowId())) { recordSet.executeQuery("select a.id,a.DEPARTMENTID,a.SUBCOMPANYID1,a.JOBTITLE,b.departmentmark " + " from HRMRESOURCE a,hrmdepartment b where a.DEPARTMENTID=b.id and loginid=?", userid + ""); if (recordSet.next()) { log.info("recordSet.getInt():" + recordSet.getInt("id")); int ryid = recordSet.getInt("id");//得到查询人的id userid = recordSet.getInt("id");//得到id wri.setCreatorId(userid + "");//将申请人字段转换为id String departmentid = recordSet.getString("DEPARTMENTID");//所属部门id String subcompanyid = recordSet.getString("SUBCOMPANYID1");//所属分部1 id String jobtitle = recordSet.getString("JOBTITLE");//岗位 String departmentmark = recordSet.getString("departmentmark");//部门标识 //转换主表单的相关人员信息 WorkflowMainTableInfo mainTableInfo = wri.getWorkflowMainTableInfo(); if (mainTableInfo != null) { WorkflowRequestTableRecord[] records = mainTableInfo.getRequestRecords(); for (int i = 0; i < records.length; i++) { WorkflowRequestTableField[] tableFields = records[i].getWorkflowRequestTableFields(); String requestid = ""; for (int j = 0; j < tableFields.length; j++) { WorkflowRequestTableField field = tableFields[j]; if ("sqr".equals(field.getFieldName())) { //申请人字段 field.setFieldValue(String.valueOf(userid)); } if ("sqrbm".equals(field.getFieldName()) || "sjsqdw".equals(field.getFieldName()) || "fycdbm".equals(field.getFieldName())) { field.setFieldValue(departmentid); //申请人部门 ,实际申请单位 } if ("sqrgw".equals(field.getFieldName())) { //申请人岗位 field.setFieldValue(jobtitle); } if ("sqrssfb".equals(field.getFieldName())) { field.setFieldValue(subcompanyid); } if ("sqrssfb".equals(field.getFieldName())) { field.setFieldValue(subcompanyid); } if ("sjsqdwbmqc".equals(field.getFieldName()) || "sqrbmqc".equals(field.getFieldName())) {//部门全称, 实际申请单位全称 field.setFieldValue(departmentmark); } //总部经办人 if ("zbjbr".equals(field.getFieldName())||"gzjbr".equals(field.getFieldName())) { recordSet2.executeQuery("select id from hrmresource where loginid=?", field.getFieldValue()); while (recordSet2.next()) { field.setFieldValue(recordSet2.getString("id")); } } if ("oalcbh".equals(field.getFieldName())) { recordSet2.executeQuery("select requestid from workflow_requestbase where requestmark=?", field.getFieldValue()); while (recordSet2.next()) { requestid = recordSet2.getString("requestid"); } } } //浏览按钮 WorkflowRequestTableField field = new WorkflowRequestTableField(); field.setEdit(true);//可编辑 field.setFieldName("oaxglc");//字段名 field.setFieldShowName("oa相关流程");//展示名 field.setFieldValue(requestid);//流程id field.setView(true);//可查看 WorkflowRequestTableField[] newFields = new WorkflowRequestTableField[tableFields.length + 1]; for (int j = 0; j < tableFields.length; j++) { newFields[j] = tableFields[j]; } newFields[tableFields.length] = field; records[i].setWorkflowRequestTableFields(newFields); } } //明细表字段 WorkflowDetailTableInfo[] detailTableInfos = wri.getWorkflowDetailTableInfos(); if (detailTableInfos != null) { for (WorkflowDetailTableInfo detailTableInfo : detailTableInfos) { WorkflowRequestTableRecord[] records = detailTableInfo.getWorkflowRequestTableRecords(); for (int i = 0; i < records.length; i++) { WorkflowRequestTableField[] tableFields = records[i].getWorkflowRequestTableFields(); String yzgsmc = "", yzmc = ""; int idx_yzgsmc = 0, idx_yzmc = 0; for (int j = 0; j < tableFields.length; j++) { WorkflowRequestTableField field = tableFields[j]; if ("yzgsmc".equals(field.getFieldName())) {//印章公司名称 yzgsmc = field.getFieldValue(); idx_yzgsmc = j; } if ("yzmc".equals(field.getFieldName())) {//印章名称 yzmc = field.getFieldValue(); idx_yzmc = j; } } recordSet2.executeQuery("select a.id,b.disorder from uf_yztz a,mode_selectitempagedetail b where " + "a.yzmc=disorder and mainid=5501 and a.yzgsmc=? and b.name=?", yzgsmc, yzmc); while (recordSet2.next()) { tableFields[idx_yzgsmc].setFieldValue(recordSet2.getString("id")); tableFields[idx_yzmc].setFieldValue(recordSet2.getString("disorder")); } } } } } } } log.error("webservice创建流程,创建人:" + userid + "报文参数如下:" + wriInfo); long startCreateTime = System.currentTimeMillis(); wri = getActiveWorkflowRequestInfo(wri); RequestInfo ri = toRequestInfo(wri); if (ri.getCreatorid() == null || ri.getCreatorid().isEmpty()) { ri.setCreatorid(userid + ""); } if (userid == 0 && !ri.getCreatorid().equals("")) { //当userid=0,但在wri中设置了创建人,为了兼容这种情况,不需要再设置了。 } else { //如果发现人员id不一样,使用userid if (!ri.getCreatorid().equals(userid + "")) { ri.setCreatorid(userid + ""); } } ri.setIsNextFlow(wri.getIsnextflow()); String requestId = requestService.createRequest(ri); if (HrmClassifiedProtectionBiz.isOpenClassification()) {//开启涉密,更新流程密级 String defaultSecLevel = new HrmClassifiedProtectionBiz().getDefaultResourceSecLevel(); if ("".equals(wri.getSecLevel())) { wri.setSecLevel(defaultSecLevel); } new RequestSecLevelBiz().updateSecLevelByRequestId(requestId, wri.getSecLevel()); } //更新流程请求标题字段Start recordSet.executeQuery("select wr.currentnodeid,wr.requestname,wb.formid,wb.isbill from workflow_requestbase wr inner join workflow_base wb on wr.workflowid = wb.id where wr.requestid = ? ", requestId); if (recordSet.next()) { new SetNewRequestTitle().getAllRequestName(recordSet, requestId + "", recordSet.getString("requestname"), ri.getWorkflowid() + "", recordSet.getString("nodeid"), Util.getIntValue(recordSet.getString("formid")), Util.getIntValue(recordSet.getString("isbill")), new User(Integer.parseInt(ri.getCreatorid())).getLanguage()); } //更新流程请求标题字段End long endCreateTime = System.currentTimeMillis(); log.info("~~~webservice接口创建流程ID:" + requestId + "总耗时/ms~~~:" + (endCreateTime - startCreateTime)); return requestId; } catch (Exception e) { e.printStackTrace(); writeLog(e); } return null; }