泛微E8工作流接口不更新空字段解惑

最近测试泛微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 )。

(完) 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 泛微ecology工作流webservice接口文档是用于描述泛微ecology工作流系统中提供的webservice接口的文档。该文档包含了接口的详细说明、请求和响应的数据格式、参数的定义以及示例代码等内容。 泛微ecology是一款基于云计算和大数据技术的企业级应用平台,提供了完善的工作流管理功能。工作流webservice接口泛微ecology提供的一种与其他系统或服务进行数据交互的方式,通过调用接口可以实现对工作流系统的操作。 接口文档中通常会包含以下内容: 1. 接口说明:对接口的作用、功能和使用场景进行详细介绍,帮助用户了解该接口的用途和优势。 2. 接口方法:列举了所有可供调用的接口方法,每个方法都有详细的描述和参数说明。 3. 请求和响应数据格式:描述了调用接口时需要传入的参数及其格式要求,以及接口返回的数据格式。 4. 参数定义:对接口中使用的参数进行详细的定义和说明,包括参数名称、类型、取值范围等。 5. 示例代码:提供了调用接口的示例代码,帮助用户理解接口的使用方法,并快速上手。 通过阅读泛微ecology工作流webservice接口文档,开发人员可以了解接口的功能和使用方式,从而能够更加灵活地与其他系统进行数据交互,实现工作流系统的定制化需求。同时,接口文档还可以作为开发人员进行接口对接和调试的参考资料,提高开发效率和准确性。 ### 回答2: 泛微ecology工作流是一款用于企业内部流程管理的软件平台,提供了一系列的工作流程管理功能。而webservice接口文档则是该软件平台提供给开发人员使用的技术文档,用于说明如何通过webservice接口工作流平台进行交互和集成。 泛微ecology工作流webservice接口文档包含了以下内容: 1.接口概述:介绍了webservice接口的基本作用和功能,以及开发人员可以通过接口实现的操作和功能。 2.接口权限:说明了不同接口对应的访问权限,开发人员需要了解在使用接口时需要具备的权限。 3.接口调用方式:介绍了webservice接口的调用方式,包括SOAP协议和HTTP协议等,并提供了调用示例。 4.接口参数说明:详细说明了每个接口的输入参数和输出参数,开发人员需要了解参数的格式和含义。 5.接口返回结果:说明了不同接口的返回结果格式和含义,开发人员可以根据返回结果进行后续的处理和判断。 6.常见问题解答:提供了一些常见的问题和解答,方便开发人员在使用接口时遇到问题时进行参考和解决。 通过泛微ecology工作流webservice接口文档,开发人员可以了解并掌握如何使用webservice接口工作流平台进行集成和交互。这样可以更灵活地扩展和定制工作流平台的功能,满足企业特定的需求。同时,接口文档也提供了一些示例代码和常见问题解答,方便开发人员快速上手和解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值