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

全部博文(39)

文章存档

2011年(1)

2009年(21)

2008年(17)

我的朋友

分类: 项目管理

2008-11-22 16:27:04


 
1.设置流程WF_ID QPAC: setvalue
LOCATION: WF_ID PROCESSNAME PROCESSID CONNECTORNAME NO
2.取得申请人姓名 发起时间 QPAC: SCRIPT
import 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.*;
String createdate="";
Calendar cal=java.util.Calendar.getInstance();      //调用日历
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd");   //设置日期格式
java.util.Date theDate = cal.getTime();             //取得当前系统时间
createdate=dateFormatter.format(theDate);
patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/Date",createdate);
//得到流程发起者的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("",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("());
}
os1=null;
_om=null;
3. SET KEY VALUE QPAC:chained process引入子流程
4.设置WF_ATTRIBUTE QPAC:setvalue
WF_ATTRIBUTE-WF_NO      = KEYVALUE
WF_ATTRIBUTE-WF_ID      = WF_ID
WF_ATTRIBUTE-WF_STATUS  = '1.0'
WF_ATTRIBUTE-WF_SEVER   = PSEVER
WF_ATRIBUTE-WF_UNAME    = WFLOGINID
5.获取审核人 QPAC:queryuserII
inputs:
orgpath
rolename
outputs:

6.审核人QPAC:user
set xpath expression :/process_data/@manager
7.获取审核人中文名称QPAC:SCRIPT
import 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("());                 
        }
7.组织签核意见:QPAC:script
import java.text.*;
import java.util.*;
String createdate="";
Calendar cal=java.util.Calendar.getInstance();      //调用日历
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");   //设置日期格式
java.util.Date theDate = cal.getTime();             //取得当前系统时间
createdate=dateFormatter.format(theDate);
String res = "";
String title = "生产处处长";
String adviceList="";//patExecContext.getProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/VIEW_DATA/ADVICELIST");
String advice=patExecContext.getProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/ManagerOpinion");
String displayName=patExecContext.getProcessDataStringValue("();;
String opinion = patExecContext.getProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/list");
if(opinion.equals("1")){
   res = createdate+" "+title+" "+displayName+" 【通过】:"+advice;
}else if(opinion.equals("2")){
   res = createdate+" "+title+" "+displayName+" 【驳回】:"+advice;
}else
   res = createdate+" "+title+"  "+displayName+"  【"+opinion+"】:"+advice;
adviceList = res+"\r\n";
patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/hisOpinion",adviceList);
patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/ProcessData/ManagerOpinion","");
//patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/VIEW_DATA/OPINI","1");
8.若生产处处长审批通过则获取公司副总经理QPAC:queryuserII 不通过则返回到发起人
inputs:
orgpath
rolename
outputs:/process_data/@manager
9.总经理审批:QPAC:USER
10.获取中文名:QPAC:SCRIPT
11.组织签核意见
12.如副总经理审批通过则获取电子商务部审批岗QPAC:QUERYUSERII 不通过则返回到发起人
inputs:
orgpath
rolename
outputs:/process_data/@manager
13.电子商务部审批QPAC:USER
14.获取商务部审批人中文名 QPAC:SCRIPT
15.组织签核意见QPAC:SCRIPT通过则BACK TO SAP 不通过则返回发起人

独立的QPAC :
SQL 获取签核人中文名称1
SELECT UserDisplayName
FROM WF_User
WHERE (LoginID = )
SQL 获取签核人中文名称2
SELECT UserDisplayName
FROM WF_User
WHERE (LoginID = )
补充1:SET KEY VALUE  QPAC:chained process
1.QPAC:script 创建KEYVALUE
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(");
2.QPAC:SQL_INDIGO_V3 查询SAP变量信息
INPUTES:
SELECT SAPRootName,SAPRootAttr,SAPRootAttrVal  ,InitialForm From WF_Process_InitForm Where
OUTPUTS:
3.QPAC:script 解析SAP变量信息
import java.io.*;
import com.petrochina.common.xmlHelper;
import org.w3c.dom.*;
String SQLResultStr = patExecContext.getProcessDataStringValue("");
System.out.println(SQLResultStr);
xmlHelper xmlhelper = new xmlHelper();
Document doc = xmlhelper.createDom(new  ByteArrayInputStream(SQLResultStr.getBytes()));
NodeList nl = doc.getDocumentElement().getElementsByTagName("SAPRootName");
String tmpStr= "";
if(nl.getLength()>0){
 try{
  tmpStr= nl.item(0).getFirstChild().getNodeValue();
 }catch(Exception e){
  System.out.println("get SAPRoot error:"+e.getMessage());
 }
}
//patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/SYS_SAPROOT",tmpStr);
patExecContext.setProcessDataStringValue(");
System.out.println("root name:"+tmpStr);
nl = doc.getDocumentElement().getElementsByTagName("SAPRootAttr");
String tmpStr= "";
if(nl.getLength()>0){
 try{
  tmpStr= nl.item(0).getFirstChild().getNodeValue();
 }catch(Exception e){
  System.out.println("get SAPRootAttr error:"+e.getMessage());
 }
}
//patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/SYS_SAPROOTATTR",tmpStr);
patExecContext.setProcessDataStringValue(");
System.out.println("root attribute:"+tmpStr);
nl = doc.getDocumentElement().getElementsByTagName("SAPRootAttrVal");
String tmpStr= "";
if(nl.getLength()>0){
 try{
  tmpStr= nl.item(0).getFirstChild().getNodeValue();
 }catch(Exception e){
  System.out.println("get SAPRootAttrVal error:"+e.getMessage());
 }
}
//patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/SYS_SAPROOTATTRVAL",tmpStr);
patExecContext.setProcessDataStringValue(");
System.out.println("root attribute value:"+tmpStr);
nl = doc.getDocumentElement().getElementsByTagName("InitialForm");
String tmpStr= "";
if(nl.getLength()>0){
 try{
  tmpStr= nl.item(0).getFirstChild().getNodeValue();
 }catch(Exception e){
  System.out.println("get InitialForm error:"+e.getMessage());
 }
}
patExecContext.setProcessDataStringValue(");
System.out.println("InitialForm value:"+tmpStr);
4.QPAC:SQL_INDIGO_V3查询SAP SERVER
INPUTS:
SELECT SAPServerName as P_SERVER from SAPServerConfig Where
OUTPUTS:
5.QPAC:SCRIPT 取得SAP SERVER名称
import java.io.*;
import com.petrochina.common.xmlHelper;
import org.w3c.dom.*;
String SQLResultStr = patExecContext.getProcessDataStringValue("");
//System.out.println(SQLResultStr);
xmlHelper xmlhelper = new xmlHelper();
Document doc = xmlhelper.createDom(new  ByteArrayInputStream(SQLResultStr.getBytes()));

NodeList nl = doc.getDocumentElement().getElementsByTagName("P_SERVER");
String pserver = "";
if(nl.getLength()>0){
 try{
  pserver = nl.item(0).getFirstChild().getNodeValue();
 }catch(Exception e){
  System.out.println("get pserver error:"+e.getMessage());
 }
}
//patExecContext.setProcessDataStringValue("/process_data/formvar/form-data/data/xdp/datasets/data/fields/WF_ATTRIBUTE/P_SERVER",pserver);
patExecContext.setProcessDataStringValue(");
System.out.println("sap server:"+pserver);
6.QPAC:SQL_INDIGO_V3 根据process name查询function name
inputs:
SELECT functionname from functionconfig where
outputs:
7.QPAC:script 取得FUNCTION NAME
import java.io.*;
import com.petrochina.common.xmlHelper;
import org.w3c.dom.*;
String SQLResultStr = patExecContext.getProcessDataStringValue("");
//System.out.println(SQLResultStr);
xmlHelper xmlhelper = new xmlHelper();
Document doc = xmlhelper.createDom(new  ByteArrayInputStream(SQLResultStr.getBytes()));

NodeList nl = doc.getDocumentElement().getElementsByTagName("functionname");
String functionname = "";
if(nl.getLength()>0){
 try{
  functionname = nl.item(0).getFirstChild().getNodeValue();
 }catch(Exception e){
  System.out.println("get functionname error:"+e.getMessage());
 }
}
patExecContext.setProcessDataStringValue(");
System.out.println("function name:"+functionname);
8.QPAC:SQL_INDIGO_V3    Search SAP LoginID
inputs:
select s.loginID as SAPLoginID from sapuser s ,wf_user w ,wf_sap_mapping m
where  s.id=m.sapuserid and m.wfuserid=w.id and }
outputs:
8.QPAC:SCRIPT  GET SAP LOGINID
import java.io.*;
import com.petrochina.common.xmlHelper;
import org.w3c.dom.*;
String SQLResultStr = patExecContext.getProcessDataStringValue("");
//System.out.println(SQLResultStr);
xmlHelper xmlhelper = new xmlHelper();
Document doc = xmlhelper.createDom(new  ByteArrayInputStream(SQLResultStr.getBytes()));

NodeList nl = doc.getDocumentElement().getElementsByTagName("SAPLoginID");
String saploginid = "";
if(nl.getLength()>0){
 try{
  saploginid = nl.item(0).getFirstChild().getNodeValue();
 }catch(Exception e){
  System.out.println("get sap loginID error:"+e.getMessage());
 }
}
patExecContext.setProcessDataStringValue(");
System.out.println("SAPLoginID:"+saploginid);
9.QPAC:SQL_INDIGO_V3 增加新记录到PAM MESSAGE
inputs;
insert into message (keyvalue,processname,JobOperation,ConnectorName)
values ()
outputs:

补充2.back to sap 子流程
1.QPAC:SCRIPT 组织返回SAP的XML
import java.io.*;
import com.petrochina.common.xmlHelper;
import org.w3c.dom.*;
String[] avaliableTagName = new String[6];
   
avaliableTagName[0] = "ProcessData";
avaliableTagName[1] = "SYS_SAPROOT";
avaliableTagName[2] = "SYS_SAPROOTATTR";
avaliableTagName[3] = "SYS_SAPROOTATTRVAL";
avaliableTagName[4] = "BUSINESS";
avaliableTagName[5] = "WF_ATTRIBUTE";
String SAPRootName = patExecContext.getProcessDataStringValue("");
String SAPRootAttrName = patExecContext.getProcessDataStringValue("");
String SAPRootAttrVal = patExecContext.getProcessDataStringValue("");
String WF_REFUNC = patExecContext.getProcessDataStringValue("");
Object FormData = patExecContext.getProcessDataValue("/process_data/formvar");
byte[] cContent = FormData.getXFAData();
//System.out.write(cContent);
xmlHelper xmlhelper = new xmlHelper();
Document docProcess = xmlhelper.createDom(new  ByteArrayInputStream(cContent));
NodeList nl = docProcess.getElementsByTagName("fields").item(0).getChildNodes();
docProcess.removeChild(docProcess.getDocumentElement());
 
//SAPRootName = SAPRootName.split(":")[0]+":"+WF_REFUNC; //if the rootname is database is right ,then do not change the rootname ,WF_REFUNC will not be used
Element nsEle = docProcess.createElement(SAPRootName);
nsEle.setAttribute(SAPRootAttrName,SAPRootAttrVal);
docProcess.appendChild(nsEle);
 
for(int i=0;i      System.out.println("sss"+nl.item(i).getNodeName());
      boolean canAppend = false;
        for(int js=0;js           System.out.println("js:"+avaliableTagName[js]);
    System.out.println("is:"+nl.item(i).getNodeName().equalsIgnoreCase(avaliableTagName[js]));
            if(nl.item(i).getNodeName().equalsIgnoreCase(avaliableTagName[js])){
      docProcess.getElementsByTagName(SAPRootName).item(0).appendChild(nl.item(i).cloneNode(true));
     }
        }
}
Node statusNode = docProcess.getElementsByTagName("WF_STATUS").item(0);
if(statusNode!=null){
  if(statusNode.getFirstChild()!=null){
     statusNode.getFirstChild().setNodeValue("S");
  }else{
     Node textNode = docProcess.createTextNode("S");
     statusNode.appendChild(textNode);
  }
}
byte[] ss = xmlhelper.getElementXML(docProcess.getDocumentElement());
String tmpStr = new String(new String(ss,"utf-8").getBytes("gb2312"),"gb2312");
tmpStr = tmpStr.replaceAll("xfa:dataNode=","xfadataNode=");
docProcess = null;
patExecContext.setProcessDataStringValue(");
System.out.println(tmpStr);
2.QPAC:PAMSUBMITMSGQPAC
INPUTS:
ENDPOINT:
Connector Name:{$/process_data/@connectorname$}
Process Name:{$/process_data/@processname$}
Form name:{$/process_data/@formname$}
OPERATION: finish
instance id:{$/process_data/@id$}
key value:{$/process_data/@keyvalue$}
APPXMLDATA:{$/process_data/@appxmldata$}
阅读(1690) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~