Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90989
  • 博文数量: 39
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-30 17:39
文章分类

全部博文(39)

文章存档

2011年(1)

2009年(21)

2008年(17)

我的朋友

分类: 项目管理

2008-11-23 13:45:37

会计凭证审核流程:
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) |
给主人留下些什么吧!~~