会计凭证审核流程:
1.QPAC:SCRIPT 取得创建人名称
port com.adobe.pof.omapi.POFQuery;
import com.adobe.pof.omapi.POFFilter;
import com.adobe.pof.omapi.POFObjectSet;
import com.adobe.pof.omapi.POFObjectManager;
import com.adobe.workflow.boi.BOIWorkflowPrincipal;
import com.adobe.workflow.boi.BOIWorkflowUser;
import java.text.*;
import java.util.*;
//得到流程发起者的USER ID
String creatorID = patExecContext.getProcessDataStringValue("");
//创建POFObjectManager对象
POFObjectManager _om = patServiceContext.getObjectManager();
//创建POFQuery对象
POFQuery qry = _om.newQuery("workflow",BOIWorkflowPrincipal.OBJECT_TYPE);
//创建filter, 查询流程发起者
qry.addFilter(BOIWorkflowPrincipal.A_ID,POFFilter.EQUALS, creatorID);
POFObjectSet os = _om.retrieveObjectSet(qry);
while (os.next()) {
BOIWorkflowPrincipal ui = (BOIWorkflowPrincipal)os.getBOIObject();
//得到用户displayname
System.out.println("creator name:"+ui.getCommonname());
patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/page1/titleForm/applicant",ui.getCommonname());
}
os=null;
POFQuery qry1 = _om.newQuery("workflow",BOIWorkflowUser.OBJECT_TYPE);
qry1.addFilter(BOIWorkflowUser.A_REFPRINCIPALID,POFFilter.EQUALS, creatorID);
POFObjectSet os1 = _om.retrieveObjectSet(qry1);
while (os1.next()) {
BOIWorkflowUser ui1 = (BOIWorkflowUser)os1.getBOIObject();
System.out.println("wf loginid:"+ui1.getUidstring());
patExecContext.setProcessDataStringValue("());
2.QPAC:SQL 校验1
SQL STATEMENT:
select count(*)
from dbo.Valid_FI008
where org_creator = (CAST(
(select OrgID
from dbo.WF_User
where LoginID = (
select WlID
from dbo.WfSapUserMap
where Slid = '{$/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/NAME$}')) AS CHAR(20)))
and approverId =
DATAMAPPING:
3.COUNT >0 ->SETID
COUNT =0 ->校验2
SQL STATEMENT:
select count(*)
from Valid_FI008
where org_creator = '{$/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/NAME$}'
and approverId = } '
DATAMAPPING:
4.count2 >0->setid
count2 =0->返回给审核人(无审核权限)
5.setid->apply filter QPAC:SCRIPT
import java.io.*;
import com.petrochina.common.xmlHelper;
import org.w3c.dom.*;
import java.util.*;
import java.text.*;
//get appvove date
Calendar cal=java.util.Calendar.getInstance();
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat date_time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date theDate = cal.getTime();
String approveDate=dateFormatter.format(theDate);
String approveDateTime= date_time.format(theDate);
//get approver name
String approverName = patExecContext.getProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/page1/titleForm/applicant");
Object FormData = patExecContext.getProcessDataValue("/process_data/formvar");
byte[] cContent =FormData.getXFAData();
xmlHelper xmlhelper = new xmlHelper();
Document docProcess = xmlhelper.createDom(new ByteArrayInputStream(cContent));
NodeList businessDataNodeList= docProcess.getDocumentElement().getElementsByTagName("BUSINESS");
Node itemParentNode=businessDataNodeList.item(0);
NodeList itemDataNodeList=itemParentNode.getChildNodes();
int itemsSize=itemDataNodeList.getLength();
//System.out.println("itemSize:"+itemsSize);
/////delete the resultForm-->valueFields///////////////
NodeList resultformDataNodeList= docProcess.getDocumentElement().getElementsByTagName("resultForm");
NodeList valuefieldsNodeList=docProcess.getDocumentElement().getElementsByTagName("valueFields");
Node valuefieldsParentNode=resultformDataNodeList.item(0);
//System.out.println(valuefieldsNodeList.getLength());
//过滤掉未选择的凭证
for (int j=itemsSize-1;j>=0;j--) {
//System.out.println(j);
Element itemEle = (Element)itemDataNodeList.item(j);
Element valuefieldsEle=(Element)valuefieldsNodeList.item(j);
NodeList nl=itemEle.getElementsByTagName("MANDT");
String nodevalue=nl.item(0).getFirstChild().getNodeValue();
if (nodevalue.equals("0")) {
itemParentNode.removeChild(itemEle);
valuefieldsParentNode.removeChild(valuefieldsEle);
}
}
itemsSize=itemDataNodeList.getLength();
for (int j=itemsSize-1;j>=0;j--) {
Element itemEle = (Element)itemDataNodeList.item(j);
NodeList nl=itemEle.getElementsByTagName("MANDT");
nl.item(0).getFirstChild().setNodeValue( "" );
NodeList nl1=itemEle.getElementsByTagName("USNAM");
nl1.item(0).appendChild(docProcess.createTextNode(approverName));
NodeList nl2=itemEle.getElementsByTagName("DATUM");
nl2.item(0).appendChild(docProcess.createTextNode(approveDate));
}
byte[] ss = xmlhelper.getElementXML(docProcess.getDocumentElement());
String tmpStr = new String(new String(ss,"utf-8").getBytes("gb2312"),"gb2312");
//System.out.println("form xml data:"+tmpStr);
FormData.setXFAData(ss);
patExecContext.setProcessDataValue("/process_data/formvar",FormData);
6.QPAC: SETVALUE SET WF_ID
LOCATION: WF_ID WFFI000008
PROCESSNAME LZSH-WFL-FI110
PROCESSID
CONNECTORNAME LZSHConnector
7.QPAC :CHAINED PROCESS 流程初始设置 SUBPROCESS: CREADE KEY VALUE
8.QPAC :SCRIPT CREATE KEY VALUE
//create key value for the process instance
import com.indigo.util.CreateKeyValue;
CreateKeyValue createKV=new CreateKeyValue("java:/LZSH");
String keyvalue=createKV.getNewKeyValue();
System.out.println("keyvalue initiated by WF:"+keyvalue);
//String pname=patExecContext.getProcessDataStringValue("");
//System.out.println("process name initiated by WF:"+pname);
patExecContext.setProcessDataStringValue(");
9.QPAC:SET VALUE
WF_NO
WF_ID /process_data/@
WF_STATUS '1.0'
WF_SERVER
WF_UNAME
10. 9->SPLIT
11.10 包含BRANCHO BRANCH1
12.BRANCH0
ROUTE0(/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/ERROR_COUNT = 0)
12->QPAC: SCRIPT REJECT FLITER
import java.io.*;
import com.petrochina.common.xmlHelper;
import org.w3c.dom.*;
Object FormData = patExecContext.getProcessDataValue("/process_data/formvar");
byte[] cContent =FormData.getXFAData();
xmlHelper xmlhelper = new xmlHelper();
Document docProcess = xmlhelper.createDom(new ByteArrayInputStream(cContent));
NodeList businessDataNodeList= docProcess.getDocumentElement().getElementsByTagName("BUSINESS");
Node itemParentNode=businessDataNodeList.item(0);
NodeList itemDataNodeList=itemParentNode.getChildNodes();
int itemsSize=itemDataNodeList.getLength();
//System.out.println("itemSize:"+itemsSize);
/////delete the resultForm-->valueFields///////////////
NodeList resultformDataNodeList= docProcess.getDocumentElement().getElementsByTagName("resultForm");
NodeList valuefieldsNodeList=docProcess.getDocumentElement().getElementsByTagName("valueFields");
Node valuefieldsParentNode=resultformDataNodeList.item(0);
//System.out.println(valuefieldsNodeList.getLength());
////////////////////////////////////////////////////////
for (int j=itemsSize-1;j>=0;j--) {
//System.out.println(j);
Element itemEle = (Element)itemDataNodeList.item(j);
Element valuefieldsEle=(Element)valuefieldsNodeList.item(j);
NodeList nl=itemEle.getElementsByTagName("AFLAG");
String nodevalue=nl.item(0).getFirstChild().getNodeValue();
if (nodevalue.equals("1")) {
itemParentNode.removeChild(itemEle);
valuefieldsParentNode.removeChild(valuefieldsEle);
}
}
byte[] ss = xmlhelper.getElementXML(docProcess.getDocumentElement());
String tmpStr = new String(new String(ss,"utf-8").getBytes("gb2312"),"gb2312");
//System.out.println("form xml data:"+tmpStr);
FormData.setXFAData(ss);
patExecContext.setProcessDataValue("/process_data/formvar",FormData);
13.QPAC:SQL get wfuser id
SQL STATEMENT:
SELECT WLID
FROM WfSapUserMap
WHERE (SLID = '{$/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/NAME$}')
DATA MAPPING:
14.QPAC:USER ,申请人
set xpath expression:
instructions:审核人:{$/process_data/formvar/form-data/data/xdp/datasets/data/fields/page1/titleForm/applicant$}
15:BRANCH1->QPAC:SQL_INDIGO_V3 insert message
inputs:
insert into message (keyvalue,processname,JobOperation,ConnectorName)
values ()
outputs:
16:QPAC:chained process BACK SAP AND FINISHED
SUBPROCESS:backtosapfinish
datamapping:
阅读(2984) | 评论(0) | 转发(0) |