Oracle-BPM(十)

代码下载:git


BPM节点更新


例子(一):

[java]  view plain  copy
  1. package com.ui.bpm;  
  2.   
  3. import com.proxy.bpm.query.TaskQueryService;  
  4. import com.proxy.bpm.query.TaskQueryService_Service;  
  5.   
  6. import com.proxy.bpm.query.WorkflowErrorMessage;  
  7. import com.proxy.bpm.service.StaleObjectFaultMessage;  
  8. import com.proxy.bpm.service.TaskServiceContextTaskBaseType;  
  9. import com.proxy.bpm.service.TaskService_Service;  
  10.   
  11. import oracle.adf.share.logging.ADFLogger;  
  12.   
  13. import oracle.bpel.services.workflow.common.model.CredentialType;  
  14. import oracle.bpel.services.workflow.common.model.WorkflowContextType;  
  15.   
  16. import oracle.bpel.services.workflow.task.model.Task;  
  17. import com.proxy.bpm.service.TaskService_Service;  
  18. import com.proxy.bpm.service.TaskService;  
  19. import com.proxy.bpm.service.UpdateTaskOutcomeType;  
  20.   
  21. import oracle.bpel.services.workflow.query.model.TaskDetailsByIdRequestType;  
  22.   
  23. public class Test5 {  
  24.     //日志  
  25.     private static ADFLogger logger=ADFLogger.createADFLogger(Test5.class);  
  26.       
  27.     public Test5() {  
  28.         super();  
  29.     }  
  30.       
  31.     /** 
  32.      * 流程更新TaskService 
  33.       */  
  34.       
  35.     //参照XML  
  36. /*    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"   xmlns:tas=http://xmlns.oracle.com/bpel/workflow/taskService   xmlns:com=http://xmlns.oracle.com/bpel/workflow/common   xmlns:task=http://xmlns.oracle.com/bpel/workflow/task   xmlns:tas1="http://xmlns.oracle.com/bpel/workflow/TaskEvidenceService"> 
  37.        <soapenv:Header/> 
  38.        <soapenv:Body> 
  39.           <tas:updateTaskOutcome> 
  40.              <com:workflowContext> 
  41.                 <com:credential> 
  42.                    <com:login>humantask</com:login> 
  43.                    <com:password>Welcome01</com:password> 
  44.                 </com:credential> 
  45.              </com:workflowContext> 
  46.              <tas:taskId>3e80842f-75c9-4e3d-b441-a7f339df4109</tas:taskId> 
  47.              <tas:outcome>OK</tas:outcome> 
  48.           </tas:updateTaskOutcome> 
  49.        </soapenv:Body> 
  50.     </soapenv:Envelope> 
  51. */  
  52.       
  53.       
  54.     public static void updateWorkflow() throws WorkflowErrorMessage,  
  55.                                                StaleObjectFaultMessage {  
  56.         //启动一个TaskService服务  
  57.         TaskService_Service taskService_Service = new TaskService_Service();  
  58.         TaskService taskService = taskService_Service.getTaskServicePort();  
  59.           
  60.         //登陆验证启动一个taskQueryService服务  
  61.         TaskQueryService_Service taskQueryService_Service = new TaskQueryService_Service();  
  62.         TaskQueryService taskQueryService = taskQueryService_Service.getTaskQueryServicePort();  
  63.           
  64.           
  65.         //UpdateTaskOutcomeType  
  66.         UpdateTaskOutcomeType updateTaskOutcomeType = new UpdateTaskOutcomeType();  
  67.         //登录验证  
  68.         WorkflowContextType workflowContextType = new WorkflowContextType();  
  69.         CredentialType credentialType = new CredentialType();  
  70.         credentialType.setLogin("weblogic");  
  71.         credentialType.setPassword("xxx");  
  72.         try {  
  73.             workflowContextType = taskQueryService.authenticate(credentialType);  
  74.         } catch (WorkflowErrorMessage e) {  
  75.             e.printStackTrace();  
  76.         }  
  77.           
  78.         //根据taskId查询相关task  
  79.         TaskDetailsByIdRequestType taskDetailsByIdRequestType = new TaskDetailsByIdRequestType();  
  80.         taskDetailsByIdRequestType.setTaskId("3e80842f-75c9-4e3d-b441-a7f339df4109");  
  81.         taskDetailsByIdRequestType.setWorkflowContext(workflowContextType);  
  82.         Task task;  
  83.         try {  
  84.             task = taskQueryService.getTaskDetailsById(taskDetailsByIdRequestType);  
  85.         } catch (WorkflowErrorMessage e) {  
  86.             e.printStackTrace();  
  87.         }  
  88.           
  89.           
  90.         //update  
  91.         updateTaskOutcomeType.setOutcome("OK");  
  92.         updateTaskOutcomeType.setTaskId(task.getSystemAttributes().getTaskId());  
  93.         updateTaskOutcomeType.setTask(task);  
  94.         updateTaskOutcomeType.setWorkflowContext(workflowContextType);  
  95.           
  96.         //  
  97.         Task task_update;  
  98.         task_update = taskService.updateTaskOutcome(updateTaskOutcomeType)  
  99.     }  
  100. }  



例子(二):

[java]  view plain  copy
  1. package com.ui.bpm;  
  2.   
  3. import com.proxy.bpm.query.TaskQueryService;  
  4. import com.proxy.bpm.query.TaskQueryService_Service;  
  5. import com.proxy.bpm.query.WorkflowErrorMessage;  
  6. import com.proxy.bpm.service.TaskServiceContextTaskBaseType;  
  7. import com.proxy.bpm.service.TaskService_Service;  
  8. import com.proxy.bpm.service.UpdateTaskOutcomeType;  
  9.   
  10.   
  11. import java.util.HashMap;  
  12. import java.util.List;  
  13.   
  14. import java.util.Map;  
  15.   
  16. import oracle.adf.share.logging.ADFLogger;  
  17.   
  18. import oracle.bpel.services.workflow.common.model.CredentialType;  
  19. import oracle.bpel.services.workflow.common.model.WorkflowContextType;  
  20. import oracle.bpel.services.workflow.query.model.TaskDetailsByIdRequestType;  
  21. import oracle.bpel.services.workflow.task.model.Task;  
  22.   
  23. public class Test1 {  
  24.     //记录日志ADFLogger  
  25. //    ADF日志级别  
  26. //    1.        SEVERE 严重的错误,导致系统中止。期望这类信息能立即显示在状态控制台上  
  27. //    2.        WARNING 潜在问题的级别,它是不符合预期的状态但还不至于成为“错误”,例如使用了废弃的API等等。期望这类信息能立即显示在状态控制台上  
  28. //    3.        INFO 运行时产生的有意义的一些信息,主要用于报告消息的目的。期望这类信息能立即显示在状态控制台上  
  29. //    4.        CONFIG 静态配置消息,用来输出一些系统配置信息。期望这类信息仅被写入日志文件中  
  30. //    5.        FINE 指示提供跟踪信息,简单输出一些跟踪信息。期望这类信息仅被写入日志文件中  
  31. //    6.        FINER 指示提供一条相当详细的跟踪消息。期望这类信息仅被写入日志文件中  
  32. //    7.        FINEST 指示提供一条最详细的跟踪消息。期望这类信息仅被写入日志文件中  
  33.     private static ADFLogger logger = ADFLogger.createADFLogger(Test1.class);  
  34.       
  35.     //【一般流程的基本操作】  
  36.     //对于BPM Server的使用者认证、人工查询、人工单内容变更所需要的service  
  37.     //-------TaskService_Service/TaskService-----任务服务  
  38.     //-------TaskQueryService_Service/taskQueryService-----任务查询  
  39.     //*************之后就是各种各种的type了*******【参考XML】  
  40.     //【从网上某处看来的,借鉴一下】  
  41.     //一、初始化BPM Server连接。  
  42.     //二、认证使用者。  
  43.     //三、启动流程。  
  44.     //四、查询task,填写相关信息,完成task  
  45.     //注:通过authenticate()认证,连入BPM Server,通过queryTask()查询办事项,通过getTaskDetailByID()取出详细的pLayload资料,  
  46.     //   接下来根据设计时所设置的outcome,调用updateTaskOutcome()将其review的结果指定APPROVE或者REJECT  
  47.       
  48.       
  49.     //1、新建一个任务服务对象:TaskService_Service  
  50.     public static TaskService_Service taskService_Service = new TaskService_Service();  
  51.     //2、得到一个任务服务实例:TaskService  
  52.     public static com.mgear.proxy.bpm.service.TaskService taskService = taskService_Service.getTaskServicePort();  
  53.       
  54.       
  55.     public Test1() {  
  56.         super();  
  57.     }  
  58.       
  59.     /**  
  60.      * function Test1  
  61.      * 作用:更新流程  
  62.      * 参数:动态数据Map   
  63.      * return Boolean  
  64.      * */  
  65.     public static boolean updateFlow(Map map){  
  66.         //新建一个原始任务服务运行环境对象:TaskServiceContextTaskBaseType  
  67.         TaskServiceContextTaskBaseType baseType = new TaskServiceContextTaskBaseType();  
  68.         //3、新建一个任务服务查询对象:TaskQueryService_Service  
  69.         TaskQueryService_Service taskQueryService_Service = new TaskQueryService_Service();  
  70.         //4、得到一个任务服务查询实例:TaskQueryService  
  71.         TaskQueryService taskQueryService = taskQueryService_Service.getTaskQueryServicePort();  
  72.           
  73.         //定义一个Boolean  
  74.         Boolean bool = true;  
  75.         try{  
  76.             //通过taskid得到当前的task  
  77.             /*public static Task getTaskById(Map map){ 
  78.              *       Task task =null; 
  79.              *       String taskid = map.get("TASKID").toString(); 
  80.              *       //新建一个任务Task查询【通过Request参数taskid得到任务Task的详细数据】 
  81.              *       TaskDetailsByIdRequestType rType = new TaskDetailsByIdRequestType(); 
  82.              *       //设置Task查询的taskid【当前任务的taskid】 
  83.              *       rType.setTaskId(taskid); 
  84.              *       //设置Task查询的流程运行环境:参数:那个操作者的操作领域【已登陆验证】 
  85.              *       rType.setWorkflowContext(cxt(taskQueryService, map)); 
  86.              *       try{ 
  87.              *           //查询得到当前Task 
  88.              *           task = taskQueryService.getTaskDetailsById(rType); 
  89.              *       }catch(WorkflowErrorMessage e){ 
  90.              *        
  91.              *       return task; 
  92.              *        
  93.              *       } 
  94.              
  95.             }*/  
  96.             Task task = TaskService.getTaskById(map);  
  97.               
  98.             //如果task不为空,执行  
  99.             if(task != null){  
  100.                     TaskDetailsByIdRequestType detail = new TaskDetailsByIdRequestType();  
  101.                     detail.setTaskId(task.getSystemAttributes().getTaskId());  
  102.                     detail.setWorkflowContext(cxt(taskQueryService,map));  
  103.                       
  104.                     Task newTask = taskQueryService.getTaskDetailsById(detail);  
  105.                     //设置新Task的各种参数   getSystemMessageAttributes()页面得到的数据使用该函数----区别于getSystemAttributes()系统属性  
  106.                     newTask.getSystemMessageAttributes().setTextAttribute3(map.get("USERS").toString());  
  107.                     newTask.getSystemMessageAttributes().setTextAttribute6(map.get("SENDUSER").toString());  
  108.                     newTask.getSystemMessageAttributes().setTextAttribute7(map.get("SBSJ").toString());  
  109.                     newTask.getSystemMessageAttributes().setTextAttribute10(map.get("XYJDDM").toString());  
  110.                     newTask.getSystemMessageAttributes().setTextAttribute5(map.get("XYJDZT").toString());  
  111.                       
  112.                     baseType.setTask(newTask);//设置新流程task  
  113.                     baseType.setWorkflowContext(cxt(taskQueryService,map));//设置流程运行环境,这一步估计是为了确保是那个人来操作【有权限】  
  114.                       
  115.                     Task newTask2 = null;  
  116.                       
  117.                     newTask2 = taskService.updateTask(baseType);//更新task  
  118.                     UpdateTaskOutcomeType ott = new UpdateTaskOutcomeType();//更新task之后输出的东西【四个参数】  
  119.                     ott.setOutcome(map.get("OUTCOME").toString());//outcome,确定流程下一步走向哪里  
  120.                     ott.setTask(newTask);  
  121.                     ott.setTaskId(newTask.getSystemAttributes().getTaskId());  
  122.                     ott.setWorkflowContext(cxt(taskQueryService,map));  
  123.                     Task task1 = null;  
  124.                     task1 = taskService.updateTaskOutcome(ott);//更新输出  
  125.                       
  126.                 }  
  127.             else{  
  128.                 bool = false;  
  129.                 }  
  130.               
  131.         }catch(Exception e){  
  132.                 bool=false;  
  133.                 logger.severe("WorkFlowUpdate_exception", e);  
  134.             }  
  135.         return bool;  
  136.         }  
  137.       
  138.       
  139.     //操作者登陆、验证、取得运行环境【有效的状态下】  
  140.     public static WorkflowContextType cxt(TaskQueryService taskQueryService,Map m) throws WorkflowErrorMessage{  
  141.            //登陆的凭证  
  142.            CredentialType ct = new CredentialType();  
  143.            //取得用户名/密码  
  144.            ct.setLogin(m.get("CLR").toString());  
  145.            ct.setPassword(m.get("PWD").toString());  
  146.            //定义一个流程运行环境  
  147.            WorkflowContextType context = null;  
  148.            //验证  
  149.            context = taskQueryService.authenticate(ct);]  
  150.            return context;  
  151.     }  
  152. }  




例子(三)【转发的】:


[java]  view plain  copy
  1. package com.jeqo.htweb.view;  
  2.    
  3. import com.oracle.xmlns.bpel.workflow.task.Humantask1PayloadType;  
  4. import com.oracle.xmlns.bpel.workflow.taskqueryservice.TaskQueryService;  
  5. import com.oracle.xmlns.bpel.workflow.taskqueryservice.TaskQueryService_Service;  
  6. import com.oracle.xmlns.bpel.workflow.taskqueryservice.WorkflowErrorMessage;  
  7. import com.oracle.xmlns.bpel.workflow.taskservice.StaleObjectFaultMessage;  
  8. import com.oracle.xmlns.bpel.workflow.taskservice.TaskService;  
  9. import com.oracle.xmlns.bpel.workflow.taskservice.TaskServiceContextTaskBaseType;  
  10. import com.oracle.xmlns.bpel.workflow.taskservice.TaskService_Service;  
  11. import com.oracle.xmlns.bpel.workflow.taskservice.UpdateTaskOutcomeType;  
  12. import java.util.logging.Level;  
  13. import java.util.logging.Logger;  
  14. import javax.annotation.PostConstruct;  
  15. import javax.faces.bean.ManagedBean;  
  16. import javax.faces.bean.ViewScoped;  
  17. import javax.faces.context.FacesContext;  
  18. import javax.servlet.http.HttpServletRequest;  
  19. import javax.xml.bind.JAXBContext;  
  20. import javax.xml.bind.JAXBElement;  
  21. import javax.xml.bind.JAXBException;  
  22. import javax.xml.bind.Marshaller;  
  23. import javax.xml.bind.Unmarshaller;  
  24. import oracle.bpel.services.workflow.common.model.WorkflowContextType;  
  25. import oracle.bpel.services.workflow.query.model.TaskDetailsByIdRequestType;  
  26. import oracle.bpel.services.workflow.query.model.WorkflowContextRequestType;  
  27. import oracle.bpel.services.workflow.task.model.Task;  
  28. import org.w3c.dom.Node;  
  29.    
  30. /** 
  31.  * 
  32.  * @author Jorge Quilcate 
  33.  */  
  34. @ManagedBean  
  35. @ViewScoped  
  36. public class ApprovalTaskBean {  
  37.    
  38.     private Task task;  
  39.     private Humantask1PayloadType payload;  
  40.     private WorkflowContextType workflowContext;  
  41.     private JAXBElement<Humantask1PayloadType> payloadObject;  
  42.    
  43.     @PostConstruct  
  44.     public void init() {  
  45.         HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();  
  46.    
  47.         String taskId = request.getParameter("bpmWorklistTaskId");  
  48.         String context = request.getParameter("bpmWorklistContext");  
  49.    
  50.         System.out.println("Task ID: " + taskId);  
  51.         System.out.println("Context: " + context);  
  52.    
  53.         TaskQueryService_Service taskQueryServiceClient = new TaskQueryService_Service();  
  54.         TaskQueryService taskQueryService = taskQueryServiceClient.getTaskQueryServicePort();  
  55.    
  56.         try {  
  57.             WorkflowContextRequestType getWorkflowContextRequest = new WorkflowContextRequestType();  
  58.             getWorkflowContextRequest.setToken(context);  
  59.    
  60.             workflowContext = taskQueryService.getWorkflowContext(getWorkflowContextRequest);  
  61.             TaskDetailsByIdRequestType getTaskDetailsByIdRequest = new TaskDetailsByIdRequestType();  
  62.             getTaskDetailsByIdRequest.setTaskId(taskId);  
  63.             getTaskDetailsByIdRequest.setWorkflowContext(workflowContext);  
  64.    
  65.             task = taskQueryService.getTaskDetailsById(getTaskDetailsByIdRequest);  
  66.    
  67.             Node payloadNode = (Node) task.getPayload();  
  68.    
  69.             JAXBContext jaxbContext = JAXBContext.newInstance("com.oracle.xmlns.bpel.workflow.task");  
  70.             Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();  
  71.             payloadObject = (JAXBElement<Humantask1PayloadType>) unmarshaller.unmarshal(payloadNode, Humantask1PayloadType.class);  
  72.             payload = payloadObject.getValue();  
  73.         } catch (WorkflowErrorMessage | JAXBException ex) {  
  74.             Logger.getLogger(ApprovalTaskBean.class.getName()).log(Level.SEVERE, null, ex);  
  75.         }  
  76.     }  
  77.    
  78.     public String approve() {  
  79.    
  80.         try {  
  81.             payloadObject.setValue(payload);  
  82.    
  83.             JAXBContext jaxbContext = JAXBContext.newInstance("com.oracle.xmlns.bpel.workflow.task");  
  84.             Marshaller marshaller = jaxbContext.createMarshaller();  
  85.    
  86.             marshaller.marshal(payloadObject, (Node) task.getPayload());  
  87.    
  88.             TaskService_Service taskServiceClient = new TaskService_Service();  
  89.             TaskService taskService = taskServiceClient.getTaskServicePort();  
  90.    
  91.             TaskServiceContextTaskBaseType updateTaskRequest = new TaskServiceContextTaskBaseType();  
  92.             updateTaskRequest.setTask(task);  
  93.             updateTaskRequest.setWorkflowContext(workflowContext);  
  94.    
  95.             task = taskService.updateTask(updateTaskRequest);  
  96.    
  97.             UpdateTaskOutcomeType updateTaskOutcomeRequest = new UpdateTaskOutcomeType();  
  98.             updateTaskOutcomeRequest.setOutcome("APPROVE");  
  99.             updateTaskOutcomeRequest.setTask(task);  
  100.             updateTaskOutcomeRequest.setWorkflowContext(workflowContext);  
  101.    
  102.             taskService.updateTaskOutcome(updateTaskOutcomeRequest);  
  103.         } catch (StaleObjectFaultMessage | com.oracle.xmlns.bpel.workflow.taskservice.WorkflowErrorMessage | JAXBException ex) {  
  104.             Logger.getLogger(ApprovalTaskBean.class.getName()).log(Level.SEVERE, null, ex);  
  105.         }  
  106.    
  107.         return "completed";  
  108.     }  
  109.    
  110.     public String reject() {  
  111.         return "completed";  
  112.     }  
  113.    
  114.     public Humantask1PayloadType getPayload() {  
  115.         return payload;  
  116.     }  
  117.    
  118.     public void setPayload(Humantask1PayloadType payload) {  
  119.         this.payload = payload;  
  120.     }  
  121. }  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值