最近测试泛微E8的时候,业务反馈在外部系统提交流程(不是创建)时,将原来有值的字段设为空白后,E8表单中不会更新该字段的值。于是刨了代码,发现 WorkflowService 的接口定义长这样:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package weaver.workflow.webservices;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface WorkflowService {
@WebMethod(
operationName = "getToDoWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getToDoWorkflowRequestList"
)
WorkflowRequestInfo[] getToDoWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getToDoWorkflowRequestList4OS",
action = "urn:weaver.workflow.webservices.WorkflowService.getToDoWorkflowRequestList4OS"
)
WorkflowRequestInfo[] getToDoWorkflowRequestList4OS(int var1, int var2, int var3, int var4, String[] var5, boolean var6);
@WebMethod(
operationName = "getToDoWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getToDoWorkflowRequestCount"
)
int getToDoWorkflowRequestCount(int var1, String[] var2);
@WebMethod(
operationName = "getToDoWorkflowRequestCount4OS",
action = "urn:weaver.workflow.webservices.WorkflowService.getToDoWorkflowRequestCount4OS"
)
int getToDoWorkflowRequestCount4OS(int var1, String[] var2, boolean var3);
@WebMethod(
operationName = "getCCWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getCCWorkflowRequestList"
)
WorkflowRequestInfo[] getCCWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getCCWorkflowRequestList4OS",
action = "urn:weaver.workflow.webservices.WorkflowService.getCCWorkflowRequestList4OS"
)
WorkflowRequestInfo[] getCCWorkflowRequestList4OS(int var1, int var2, int var3, int var4, String[] var5, boolean var6);
@WebMethod(
operationName = "getCCWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getCCWorkflowRequestCount"
)
int getCCWorkflowRequestCount(int var1, String[] var2);
@WebMethod(
operationName = "getCCWorkflowRequestCount4OS",
action = "urn:weaver.workflow.webservices.WorkflowService.getCCWorkflowRequestCount4OS"
)
int getCCWorkflowRequestCount4OS(int var1, String[] var2, boolean var3);
@WebMethod(
operationName = "getHendledWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getHendledWorkflowRequestList"
)
WorkflowRequestInfo[] getHendledWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getHendledWorkflowRequestList4Ofs",
action = "urn:weaver.workflow.webservices.WorkflowService.getHendledWorkflowRequestList4Ofs"
)
WorkflowRequestInfo[] getHendledWorkflowRequestList4Ofs(int var1, int var2, int var3, int var4, String[] var5, boolean var6);
@WebMethod(
operationName = "getHendledWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getHendledWorkflowRequestCount"
)
int getHendledWorkflowRequestCount(int var1, String[] var2);
@WebMethod(
operationName = "getHendledWorkflowRequestCount4Ofs",
action = "urn:weaver.workflow.webservices.WorkflowService.getHendledWorkflowRequestCount4Ofs"
)
int getHendledWorkflowRequestCount4Ofs(int var1, String[] var2, boolean var3);
@WebMethod(
operationName = "getDoingWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getDoingWorkflowRequestList"
)
WorkflowRequestInfo[] getDoingWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5, boolean var6);
@WebMethod(
operationName = "getDoingWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getDoingWorkflowRequestCount"
)
int getDoingWorkflowRequestCount(int var1, String[] var2, boolean var3);
@WebMethod(
operationName = "getToBeReadWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getToBeReadWorkflowRequestList"
)
WorkflowRequestInfo[] getToBeReadWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5, boolean var6);
@WebMethod(
operationName = "getToBeReadWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getToBeReadWorkflowRequestCount"
)
int getToBeReadWorkflowRequestCount(int var1, String[] var2, boolean var3);
@WebMethod(
operationName = "getBeRejectWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getBeRejectWorkflowRequestList"
)
WorkflowRequestInfo[] getBeRejectWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getBeRejectWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getBeRejectWorkflowRequestCount"
)
int getBeRejectWorkflowRequestCount(int var1, String[] var2);
@WebMethod(
operationName = "getForwardWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getForwardWorkflowRequestList"
)
WorkflowRequestInfo[] getForwardWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getForwardWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getForwardWorkflowRequestCount"
)
int getForwardWorkflowRequestCount(int var1, String[] var2);
@WebMethod(
operationName = "getProcessedWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getProcessedWorkflowRequestList"
)
WorkflowRequestInfo[] getProcessedWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getProcessedWorkflowRequestList4OS",
action = "urn:weaver.workflow.webservices.WorkflowService.getProcessedWorkflowRequestList4OS"
)
WorkflowRequestInfo[] getProcessedWorkflowRequestList4OS(int var1, int var2, int var3, int var4, String[] var5, boolean var6);
@WebMethod(
operationName = "getProcessedWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getProcessedWorkflowRequestCount"
)
int getProcessedWorkflowRequestCount(int var1, String[] var2);
@WebMethod(
operationName = "getProcessedWorkflowRequestCount4OS",
action = "urn:weaver.workflow.webservices.WorkflowService.getProcessedWorkflowRequestCount4OS"
)
int getProcessedWorkflowRequestCount4OS(int var1, String[] var2, boolean var3);
@WebMethod(
operationName = "getMyWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getMyWorkflowRequestList"
)
WorkflowRequestInfo[] getMyWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getMyWorkflowRequestList4OS",
action = "urn:weaver.workflow.webservices.WorkflowService.getMyWorkflowRequestList4OS"
)
WorkflowRequestInfo[] getMyWorkflowRequestList4OS(int var1, int var2, int var3, int var4, String[] var5, boolean var6);
@WebMethod(
operationName = "getMyWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getMyWorkflowRequestCount"
)
int getMyWorkflowRequestCount(int var1, String[] var2);
@WebMethod(
operationName = "getMyWorkflowRequestCount4OS",
action = "urn:weaver.workflow.webservices.WorkflowService.getMyWorkflowRequestCount4OS"
)
int getMyWorkflowRequestCount4OS(int var1, String[] var2, boolean var3);
@WebMethod(
operationName = "getAllWorkflowRequestCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getAllWorkflowRequestCount"
)
int getAllWorkflowRequestCount(int var1, String[] var2);
@WebMethod(
operationName = "getAllWorkflowRequestList",
action = "urn:weaver.workflow.webservices.WorkflowService.getAllWorkflowRequestList"
)
WorkflowRequestInfo[] getAllWorkflowRequestList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getWorkflowRequest",
action = "urn:weaver.workflow.webservices.WorkflowService.getWorkflowRequest"
)
WorkflowRequestInfo getWorkflowRequest(int var1, int var2, int var3);
@WebMethod(
operationName = "getWorkflowRequest4split",
action = "urn:weaver.workflow.webservices.WorkflowService.getWorkflowRequest4split"
)
WorkflowRequestInfo getWorkflowRequest4split(int var1, int var2, int var3, int var4);
@WebMethod(
operationName = "getWorkflowRequestLogs",
action = "urn:weaver.workflow.webservices.WorkflowService.getWorkflowRequestLogs"
)
WorkflowRequestLog[] getWorkflowRequestLogs(String var1, String var2, int var3, int var4, int var5) throws Exception;
@WebMethod(
operationName = "submitWorkflowRequest",
action = "urn:weaver.workflow.webservices.WorkflowService.submitWorkflowRequest"
)
String submitWorkflowRequest(WorkflowRequestInfo var1, int var2, int var3, String var4, String var5);
@WebMethod(
operationName = "forwardWorkflowRequest",
action = "urn:weaver.workflow.webservices.WorkflowService.forwardWorkflowRequest"
)
String forwardWorkflowRequest(int var1, String var2, String var3, int var4, String var5);
@WebMethod(
operationName = "getCreateWorkflowList",
action = "urn:weaver.workflow.webservices.WorkflowService.getCreateWorkflowList"
)
WorkflowBaseInfo[] getCreateWorkflowList(int var1, int var2, int var3, int var4, int var5, String[] var6);
@WebMethod(
operationName = "getCreateWorkflowCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getCreateWorkflowCount"
)
int getCreateWorkflowCount(int var1, int var2, String[] var3);
@WebMethod(
operationName = "getCreateWorkflowTypeList",
action = "urn:weaver.workflow.webservices.WorkflowService.getCreateWorkflowTypeList"
)
WorkflowBaseInfo[] getCreateWorkflowTypeList(int var1, int var2, int var3, int var4, String[] var5);
@WebMethod(
operationName = "getCreateWorkflowTypeCount",
action = "urn:weaver.workflow.webservices.WorkflowService.getCreateWorkflowTypeCount"
)
int getCreateWorkflowTypeCount(int var1, String[] var2);
@WebMethod(
operationName = "getCreateWorkflowRequestInfo",
action = "urn:weaver.workflow.webservices.WorkflowService.getCreateWorkflowRequestInfo"
)
WorkflowRequestInfo getCreateWorkflowRequestInfo(int var1, int var2);
@WebMethod(
operationName = "doCreateWorkflowRequest",
action = "urn:weaver.workflow.webservices.WorkflowService.doCreateWorkflowRequest"
)
String doCreateWorkflowRequest(WorkflowRequestInfo var1, int var2);
@WebMethod(
operationName = "getLeaveDays",
action = "urn:weaver.workflow.webservices.WorkflowService.getLeaveDays"
)
String getLeaveDays(String var1, String var2, String var3, String var4, String var5);
@WebMethod(
operationName = "getWorkflowNewFlag",
action = "urn:weaver.workflow.webservices.WorkflowService.getWorkflowNewFlag"
)
String[] getWorkflowNewFlag(String[] var1, String var2);
@WebMethod(
operationName = "deleteRequest",
action = "urn:weaver.workflow.webservices.WorkflowService.deleteRequest"
)
boolean deleteRequest(int var1, int var2);
@WebMethod(
operationName = "writeWorkflowReadFlag",
action = "urn:weaver.workflow.webservices.WorkflowService.writeWorkflowReadFlag"
)
void writeWorkflowReadFlag(String var1, String var2);
@WebMethod(
operationName = "forward2WorkflowRequest",
action = "urn:weaver.workflow.webservices.WorkflowService.forward2WorkflowRequest"
)
String forward2WorkflowRequest(int var1, String var2, String var3, int var4, String var5);
@WebMethod(
operationName = "givingOpinions",
action = "urn:weaver.workflow.webservices.WorkflowService.givingOpinions"
)
String givingOpinions(int var1, int var2, String var3);
@WebMethod(
operationName = "doForceOver",
action = "urn:weaver.workflow.webservices.WorkflowService.doForceOver"
)
String doForceOver(int var1, int var2);
@WebMethod(
operationName = "getUserId",
action = "urn:weaver.workflow.webservices.WorkflowService.getUserid"
)
String getUserId(String var1, String var2);
@WebMethod(
operationName = "doCreateRequest",
action = "urn:weaver.workflow.webservices.WorkflowService.doCreateRequest"
)
String doCreateRequest(WorkflowRequestInfo var1, int var2);
}
调用的参数,和报文中各个属性的顺序是对应的。报文如下面所示,报文的 web:in0 、web:in1、web:in2、web:in3、web:in4 属性,依次和 submitWorkflowRequest 方法中的参数一一对应。
报文如下面所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="webservices.services.weaver.com.cn" xmlns:web1="http://webservices.workflow.weaver">
<soapenv:Header/>
<soapenv:Body>
<web:submitWorkflowRequest>
<web:in0>
<web1:creatorId>26539</web1:creatorId>
<web1:requestId>9377920</web1:requestId>
<web1:requestLevel>0</web1:requestLevel>
<web1:requestName>直调申请流程-北京朗惠时代家居用品-2022-02-28</web1:requestName>
<web1:workflowBaseInfo>
<web1:workflowId>42542</web1:workflowId>
</web1:workflowBaseInfo>
<web1:workflowDetailTableInfos>
<web1:WorkflowDetailTableInfo>
<web1:tableDBName/>
<web1:workflowRequestTableRecords>
<web1:WorkflowRequestTableRecord>
<web1:recordOrder>1</web1:recordOrder>
<web1:workflowRequestTableFields>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>OSS_ITEM_ROW_ID2</web1:fieldName>
<web1:fieldValue>1-AKT4J6</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>YTHSL</web1:fieldName>
<web1:fieldValue>0</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>WEIGHT</web1:fieldName>
<web1:fieldValue>0.25</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>ZDZTJ</web1:fieldName>
<web1:fieldValue>0.001</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>VOLUME</web1:fieldName>
<web1:fieldValue>.001</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>ZDZCL</web1:fieldName>
<web1:fieldValue>0.25</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>QRS</web1:fieldName>
<web1:fieldValue>1</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>JBDW</web1:fieldName>
<web1:fieldValue>片_SAP1</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>BLOCK</web1:fieldName>
<web1:fieldValue/>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>KCDD</web1:fieldName>
<web1:fieldValue>GR</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>GCBM</web1:fieldName>
<web1:fieldValue>3320</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>SQZDSL</web1:fieldName>
<web1:fieldValue>1</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>SL</web1:fieldName>
<web1:fieldValue>10</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>WLBM</web1:fieldName>
<web1:fieldValue>JJP2071AF</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>XMH</web1:fieldName>
<web1:fieldValue>000010</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>OSSDX</web1:fieldName>
<web1:fieldValue>1-AGJA3Z</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>DDBMMS</web1:fieldName>
<web1:fieldValue>直调+惠普2071A_不锈钢普通地漏100*100[带滤网]</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>XSDDH</web1:fieldName>
<web1:fieldValue>1110517783</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
</web1:workflowRequestTableFields>
</web1:WorkflowRequestTableRecord>
</web1:workflowRequestTableRecords>
</web1:WorkflowDetailTableInfo>
</web1:workflowDetailTableInfos>
<web1:workflowMainTableInfo>
<web1:requestRecords>
<web1:WorkflowRequestTableRecord>
<web1:workflowRequestTableFields>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>OSSSQDBH</web1:fieldName>
<web1:fieldValue>2202202281425404</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>KHBM2</web1:fieldName>
<web1:fieldValue>0000313382</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>XXSHDZ</web1:fieldName>
<web1:fieldValue>美丽路111</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>PSFS</web1:fieldName>
<web1:fieldValue>送货上门</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>LXFS</web1:fieldName>
<web1:fieldValue>13648595226</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>RECEIVER</web1:fieldName>
<web1:fieldValue>张三</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>DISTRICT</web1:fieldName>
<web1:fieldValue>历下区</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>CITY</web1:fieldName>
<web1:fieldValue>济南市</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>PROVINCE</web1:fieldName>
<web1:fieldValue>山东省</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>ZJHM</web1:fieldName>
<web1:fieldValue/>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>CP</web1:fieldName>
<web1:fieldValue> </web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>DRIVER</web1:fieldName>
<web1:fieldValue/>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>OSSDH</web1:fieldName>
<web1:fieldValue>2202202281425404</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>OSSID</web1:fieldName>
<web1:fieldValue>1-AKT37X</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>SQYY</web1:fieldName>
<web1:fieldValue>1套急上样</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>SQRQ</web1:fieldName>
<web1:fieldValue>2022-02-28</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>KHMC</web1:fieldName>
<web1:fieldValue>北京朗惠时代家居用品</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>TIPS</web1:fieldName>
<web1:fieldValue/>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>YWYGH</web1:fieldName>
<web1:fieldValue>洁具工程票据员</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
<web1:WorkflowRequestTableField>
<web1:edit>true</web1:edit>
<web1:fieldName>OSSUSER</web1:fieldName>
<web1:fieldValue>31338201</web1:fieldValue>
<web1:view>true</web1:view>
</web1:WorkflowRequestTableField>
</web1:workflowRequestTableFields>
</web1:WorkflowRequestTableRecord>
</web1:requestRecords>
<web1:tableDBName/>
</web1:workflowMainTableInfo>
</web:in0>
<web:in1>9377920</web:in1>
<web:in2>26539</web:in2>
<web:in3>submit</web:in3>
<web:in4>ok</web:in4>
</web:submitWorkflowRequest>
</soapenv:Body>
</soapenv:Envelope>
这里调用的是 submitWorkflowRequest 接口,在 Idea 开发工具右键点击接口的查找定义,看到了实现类。如下面所示:
接下来就是看实现类里面的处理逻辑了。反编译后的代码,我拷贝了一份写成同名的 java 源文件、在E8 项目的 /src 目录重新创建了包并放上 java 源文件。
public String submitWorkflowRequest(WorkflowRequestInfo var1, int var2, int var3, String var4, String var5) {
String var6 = "error";
try {
if (var1 != null && var1.getWorkflowBaseInfo() != null) {
var1.setRequestId(var2 + "");
var1 = this.getActiveWorkflowRequestInfo(var1);
}
RequestInfo var7 = this.toRequestInfo(var1);
if (var4.equals("submit")) {
if (this.requestService.nextNodeBySubmit(var7, var2, var3, var5)) {
var6 = "success";
} else {
var6 = "failed";
}
} else if (var4.equals("subnoback")) {
if (this.requestService.nextNodeBySubmit(var7, var2, var3, var5, "0")) {
var6 = "success";
} else {
var6 = "failed";
}
} else if (var4.equals("subback")) {
if (this.requestService.nextNodeBySubmit(var7, var2, var3, var5, "1")) {
var6 = "success";
} else {
var6 = "failed";
}
} else if (var4.equals("reject")) {
if (this.requestService.nextNodeByReject(var2, var3, var5)) {
var6 = "success";
} else {
var6 = "failed";
}
}
if (!"success".equals(var6)) {
String var8 = this.getMobileSuffix(var5);
if (var8 != null && !"".equals(var8)) {
var5 = var5.substring(0, var5.lastIndexOf(var8));
int var9 = this.getUser(var3).getLogintype().equals("1") ? 0 : 1;
RecordSet var10 = new RecordSet();
var10.executeSql("update workflow_requestlog set remark='" + var5 + "' where requestid='" + var2 + "' and operator='" + var3 + "' and operatortype='" + var9 + "' and logtype='1'");
}
}
} catch (Exception var11) {
var11.printStackTrace();
this.writeLog(var11);
}
return var6;
}
重新编译后,在源代码打上断点、提交到接口后进入断点了。观察这一步发现:既然是无法将字段的值更新为 空白,在第一步获取主表字段时(如图的 “车牌” 字段 - “CP”)还是有值的。
继续观察:在下一行的转换后,所有值为空白的字段都不见了,也就是提交不进去的原因。
经判断是 E8 产品本身的代码实现问题(对值为空的字段处理有误),如果有类似情况的朋友、建议联系泛微厂商解决(当然自己改一个也行 ... )。
下面是泛微厂商的解决方案。首先修改 weaver.workflow.service.WorkflowServiceImpl 类中的 toRequestInfo 方法。
public RequestInfo toRequestInfo(WorkflowRequestInfo var1) throws Exception {
if (var1 != null && var1.getWorkflowBaseInfo() != null) {
int var2 = 0;
String var3 = "0";
RecordSet var4 = new RecordSet();
int var5 = Util.getIntValue(var1.getWorkflowBaseInfo().getWorkflowId(), 0);
var4.executeProc("workflow_Workflowbase_SByID", var5 + "");
if (var4.next()) {
int var6 = Util.getIntValue(Util.null2String(var4.getString("activeversionid")));
if (var6 > 0) {
var5 = var6;
}
var1.getWorkflowBaseInfo().setWorkflowId("" + var5);
var2 = Util.getIntValue(var4.getString("formid"), 0);
var3 = "" + Util.getIntValue(var4.getString("isbill"), 0);
}
if ("1".equals(var3) && var2 == 158) {
String var27 = "0";
WorkflowDetailTableInfo[] var7 = var1.getWorkflowDetailTableInfos();
WorkflowRequestTableRecord[] var9;
int var10;
if (var7 != null) {
for(int var8 = 0; var8 < var7.length; ++var8) {
var9 = var7[var8].getWorkflowRequestTableRecords();
if (var9 != null) {
for(var10 = 0; var10 < var9.length; ++var10) {
if (var9[var10] != null && var9[var10].getRecordOrder() == -1) {
WorkflowRequestTableField[] var11 = var9[var10].getWorkflowRequestTableFields();
if (var11 != null) {
for(int var12 = 0; var12 < var11.length; ++var12) {
if (var11[var12] != null && "amount".equals(var11[var12].getFieldName())) {
var27 = var11[var12].getFieldValue();
}
}
}
}
}
}
}
}
WorkflowMainTableInfo var30 = var1.getWorkflowMainTableInfo();
if (var30 != null) {
var9 = var30.getRequestRecords();
if (var9 != null && var9.length > 0 && var9[0] != null) {
for(var10 = 0; var10 < var9[0].getWorkflowRequestTableFields().length; ++var10) {
WorkflowRequestTableField var34 = var9[0].getWorkflowRequestTableFields()[var10];
if (var34 != null && "total".equals(var34.getFieldName())) {
var34.setFieldValue(var27);
}
}
}
}
}
RequestInfo var28 = new RequestInfo();
if (Util.getIntValue(var1.getRequestId()) > 0) {
var28 = this.requestService.getRequest(Util.getIntValue(var1.getRequestId()), 10);
}
var28.setRequestid(var1.getRequestId());
var28.setWorkflowid(var1.getWorkflowBaseInfo().getWorkflowId());
var28.setCreatorid(var1.getCreatorId());
var28.setDescription(Util.processHtmlUnicode(var1.getRequestName()));
var28.setRequestlevel(var1.getRequestLevel());
var28.setRemindtype(var1.getMessageType());
var28.set_Remark(var1.getRemark() == null ? "" : var1.getRemark());
var28.setSecLevel(var1.getSecLevel());
MainTableInfo var29 = new MainTableInfo();
ArrayList var31 = new ArrayList();
WorkflowMainTableInfo var32 = var1.getWorkflowMainTableInfo();
if (var32 != null) {
WorkflowRequestTableRecord[] var33 = var32.getRequestRecords();
if (var33 != null && var33[0] != null) {
for(int var36 = 0; var36 < var33[0].getWorkflowRequestTableFields().length; ++var36) {
WorkflowRequestTableField var38 = var33[0].getWorkflowRequestTableFields()[var36];
/**
* modify: 1、增加判断是否已编辑,如已编辑则赋值 ""
*/
if (var38 != null && var38.getFieldName() != null && !"".equals(var38.getFieldName()) && var38.isView() && var38.isEdit()) {
if (var38.getFieldValue() == null) {
var38.setFieldValue("");
}
/**
* end modify
*/
Property var13 = new Property();
var13.setName(var38.getFieldName());
var13.setValue(Util.processHtmlUnicode(var38.getFieldValue()));
var13.setType(var38.getFieldType());
var31.add(var13);
}
}
}
}
Property[] var35 = (Property[])((Property[])var31.toArray(new Property[var31.size()]));
var29.setProperty(var35);
var28.setMainTableInfo(var29);
DetailTableInfo var37 = new DetailTableInfo();
WorkflowDetailTableInfo[] var39 = var1.getWorkflowDetailTableInfos();
ArrayList var40 = new ArrayList();
for(int var14 = 0; var39 != null && var14 < var39.length; ++var14) {
DetailTable var15 = new DetailTable();
var15.setId(var14 + 1 + "");
WorkflowDetailTableInfo var16 = var39[var14];
if (var16 != null) {
var15.setTableDBName(var16.getTableDBName() == null ? "" : var16.getTableDBName());
WorkflowRequestTableRecord[] var17 = var16.getWorkflowRequestTableRecords();
ArrayList var18 = new ArrayList();
for(int var19 = 0; var17 != null && var19 < var17.length; ++var19) {
Row var20 = new Row();
WorkflowRequestTableRecord var21 = var17[var19];
if (var21 != null) {
if (var21.getRecordOrder() > 0) {
var20.setId(String.valueOf(var21.getRecordOrder()));
} else {
var20.setId("");
}
WorkflowRequestTableField[] var22 = var21.getWorkflowRequestTableFields();
ArrayList var23 = new ArrayList();
for(int var24 = 0; var22 != null && var24 < var22.length; ++var24) {
WorkflowRequestTableField var25 = var22[var24];
/**
* modify: 2、如已编辑,则设置空字段为 ""
*/
if (var25 != null && var25.getFieldName() != null && !"".equals(var25.getFieldName()) && var25.isView() && var25.isEdit()) {
if (var25.getFieldValue() == null) {
var25.setFieldValue("");
}
/**
* end modify
*/
Cell var26 = new Cell();
var26.setName(var25.getFieldName());
var26.setValue(Util.processHtmlUnicode(var25.getFieldValue()));
var26.setType(var25.getFieldType());
var23.add(var26);
}
}
if (var23 != null && var23.size() > 0) {
Cell[] var43 = (Cell[])((Cell[])var23.toArray(new Cell[var23.size()]));
var20.setCell(var43);
}
var18.add(var20);
}
}
if (var18 != null && var18.size() > 0) {
Row[] var42 = (Row[])((Row[])var18.toArray(new Row[var18.size()]));
var15.setRow(var42);
}
var40.add(var15);
}
}
DetailTable[] var41 = (DetailTable[])((DetailTable[])var40.toArray(new DetailTable[var40.size()]));
var37.setDetailTable(var41);
var28.setDetailTableInfo(var37);
return var28;
} else {
return null;
}
}
然后修改weaver.workflow.service.WorkflowServiceImplXml 类中的 toRequestInfo 方法。
private RequestInfo toRequestInfo(WorkflowRequestInfo var1) throws Exception {
if (var1 == null) {
return null;
} else {
int var2 = 0;
String var3 = "0";
RecordSet var4 = new RecordSet();
int var5 = Util.getIntValue(var1.getWorkflowBaseInfo().getWorkflowId(), 0);
var4.executeProc("workflow_Workflowbase_SByID", var5 + "");
if (var4.next()) {
var2 = Util.getIntValue(var4.getString("formid"), 0);
var3 = "" + Util.getIntValue(var4.getString("isbill"), 0);
}
if ("1".equals(var3) && var2 == 158) {
String var6 = "0";
WorkflowDetailTableInfo[] var7 = var1.getWorkflowDetailTableInfos();
WorkflowRequestTableRecord[] var9;
int var10;
if (var7 != null) {
for(int var8 = 0; var8 < var7.length; ++var8) {
var9 = var7[var8].getWorkflowRequestTableRecords();
if (var9 != null) {
for(var10 = 0; var10 < var9.length; ++var10) {
if (var9[var10] != null && var9[var10].getRecordOrder() == -1) {
WorkflowRequestTableField[] var11 = var9[var10].getWorkflowRequestTableFields();
if (var11 != null) {
for(int var12 = 0; var12 < var11.length; ++var12) {
if (var11[var12] != null && "amount".equals(var11[var12].getFieldName())) {
var6 = var11[var12].getFieldValue();
}
}
}
}
}
}
}
}
WorkflowMainTableInfo var29 = var1.getWorkflowMainTableInfo();
if (var29 != null) {
var9 = var29.getRequestRecords();
if (var9 != null && var9[0] != null) {
for(var10 = 0; var10 < var9[0].getWorkflowRequestTableFields().length; ++var10) {
WorkflowRequestTableField var33 = var9[0].getWorkflowRequestTableFields()[var10];
if (var33 != null && "total".equals(var33.getFieldName())) {
var33.setFieldValue(var6);
}
}
}
}
}
RequestInfo var27 = new RequestInfo();
if (Util.getIntValue(var1.getRequestId()) > 0) {
var27 = this.requestService.getRequest(Util.getIntValue(var1.getRequestId()));
}
var27.setRequestid(var1.getRequestId());
var27.setWorkflowid(var1.getWorkflowBaseInfo().getWorkflowId());
var27.setCreatorid(var1.getCreatorId());
var27.setDescription(var1.getRequestName());
var27.setRequestlevel(var1.getRequestLevel());
var27.setRemindtype(var1.getMessageType());
MainTableInfo var28 = new MainTableInfo();
ArrayList var30 = new ArrayList();
WorkflowMainTableInfo var31 = var1.getWorkflowMainTableInfo();
if (var31 != null) {
WorkflowRequestTableRecord[] var32 = var31.getRequestRecords();
if (var32 != null && var32[0] != null) {
for(int var35 = 0; var35 < var32[0].getWorkflowRequestTableFields().length; ++var35) {
WorkflowRequestTableField var37 = var32[0].getWorkflowRequestTableFields()[var35];
/**
* modify: 如已修改,将空值的字段设置为 ""
*/
if (var37 != null && var37.getFieldName() != null && !"".equals(var37.getFieldName()) && var37.isView() && var37.isEdit()) {
if (var37.getFieldValue() == null) {
var37.setFieldValue("");
}
/**
* end modify
*/
Property var13 = new Property();
var13.setName(var37.getFieldName());
var13.setValue(var37.getFieldValue());
var13.setType(var37.getFieldType());
var30.add(var13);
}
}
}
}
Property[] var34 = (Property[])((Property[])var30.toArray(new Property[var30.size()]));
var28.setProperty(var34);
var27.setMainTableInfo(var28);
DetailTableInfo var36 = new DetailTableInfo();
WorkflowDetailTableInfo[] var38 = var1.getWorkflowDetailTableInfos();
ArrayList var39 = new ArrayList();
for(int var14 = 0; var38 != null && var14 < var38.length; ++var14) {
DetailTable var15 = new DetailTable();
var15.setId(var14 + 1 + "");
WorkflowDetailTableInfo var16 = var38[var14];
WorkflowRequestTableRecord[] var17 = var16.getWorkflowRequestTableRecords();
ArrayList var18 = new ArrayList();
for(int var19 = 0; var17 != null && var19 < var17.length; ++var19) {
Row var20 = new Row();
var20.setId(var19 + "");
WorkflowRequestTableRecord var21 = var17[var19];
WorkflowRequestTableField[] var22 = var21.getWorkflowRequestTableFields();
ArrayList var23 = new ArrayList();
for(int var24 = 0; var22 != null && var24 < var22.length; ++var24) {
WorkflowRequestTableField var25 = var22[var24];
/**
* modify: 1、如已修改,将空值的字段设置为 ""
*/
if (var25 != null && var25.getFieldName() != null && !"".equals(var25.getFieldName()) && var25.isView() && var25.isEdit()) {
if (var25.getFieldValue() == null) {
var25.setFieldValue("");
}
/**
* end modify
*/
Cell var26 = new Cell();
var26.setName(var25.getFieldName());
var26.setValue(var25.getFieldValue());
var26.setType(var25.getFieldType());
var23.add(var26);
}
}
if (var23 != null && var23.size() > 0) {
Cell[] var42 = (Cell[])((Cell[])var23.toArray(new Cell[var23.size()]));
var20.setCell(var42);
}
var18.add(var20);
}
if (var18 != null && var18.size() > 0) {
Row[] var41 = (Row[])((Row[])var18.toArray(new Row[var18.size()]));
var15.setRow(var41);
}
var39.add(var15);
}
DetailTable[] var40 = (DetailTable[])((DetailTable[])var39.toArray(new DetailTable[var39.size()]));
var36.setDetailTable(var40);
var27.setDetailTableInfo(var36);
return var27;
}
}
把编译好的 class 文件覆盖对应 jar 包目录下的文件、以及服务器的 /classbean 目录下的文件,重启服务器即可修复上述问题(修改原始设计,要慎之又慎啊 XD )。
(完)