代码下载:git
BPM节点更新
例子(一):
- package com.ui.bpm;
- import com.proxy.bpm.query.TaskQueryService;
- import com.proxy.bpm.query.TaskQueryService_Service;
- import com.proxy.bpm.query.WorkflowErrorMessage;
- import com.proxy.bpm.service.StaleObjectFaultMessage;
- import com.proxy.bpm.service.TaskServiceContextTaskBaseType;
- import com.proxy.bpm.service.TaskService_Service;
- import oracle.adf.share.logging.ADFLogger;
- import oracle.bpel.services.workflow.common.model.CredentialType;
- import oracle.bpel.services.workflow.common.model.WorkflowContextType;
- import oracle.bpel.services.workflow.task.model.Task;
- import com.proxy.bpm.service.TaskService_Service;
- import com.proxy.bpm.service.TaskService;
- import com.proxy.bpm.service.UpdateTaskOutcomeType;
- import oracle.bpel.services.workflow.query.model.TaskDetailsByIdRequestType;
- public class Test5 {
- //日志
- private static ADFLogger logger=ADFLogger.createADFLogger(Test5.class);
- public Test5() {
- super();
- }
- /**
- * 流程更新TaskService
- */
- //参照XML
- /* <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">
- <soapenv:Header/>
- <soapenv:Body>
- <tas:updateTaskOutcome>
- <com:workflowContext>
- <com:credential>
- <com:login>humantask</com:login>
- <com:password>Welcome01</com:password>
- </com:credential>
- </com:workflowContext>
- <tas:taskId>3e80842f-75c9-4e3d-b441-a7f339df4109</tas:taskId>
- <tas:outcome>OK</tas:outcome>
- </tas:updateTaskOutcome>
- </soapenv:Body>
- </soapenv:Envelope>
- */
- public static void updateWorkflow() throws WorkflowErrorMessage,
- StaleObjectFaultMessage {
- //启动一个TaskService服务
- TaskService_Service taskService_Service = new TaskService_Service();
- TaskService taskService = taskService_Service.getTaskServicePort();
- //登陆验证启动一个taskQueryService服务
- TaskQueryService_Service taskQueryService_Service = new TaskQueryService_Service();
- TaskQueryService taskQueryService = taskQueryService_Service.getTaskQueryServicePort();
- //UpdateTaskOutcomeType
- UpdateTaskOutcomeType updateTaskOutcomeType = new UpdateTaskOutcomeType();
- //登录验证
- WorkflowContextType workflowContextType = new WorkflowContextType();
- CredentialType credentialType = new CredentialType();
- credentialType.setLogin("weblogic");
- credentialType.setPassword("xxx");
- try {
- workflowContextType = taskQueryService.authenticate(credentialType);
- } catch (WorkflowErrorMessage e) {
- e.printStackTrace();
- }
- //根据taskId查询相关task
- TaskDetailsByIdRequestType taskDetailsByIdRequestType = new TaskDetailsByIdRequestType();
- taskDetailsByIdRequestType.setTaskId("3e80842f-75c9-4e3d-b441-a7f339df4109");
- taskDetailsByIdRequestType.setWorkflowContext(workflowContextType);
- Task task;
- try {
- task = taskQueryService.getTaskDetailsById(taskDetailsByIdRequestType);
- } catch (WorkflowErrorMessage e) {
- e.printStackTrace();
- }
- //update
- updateTaskOutcomeType.setOutcome("OK");
- updateTaskOutcomeType.setTaskId(task.getSystemAttributes().getTaskId());
- updateTaskOutcomeType.setTask(task);
- updateTaskOutcomeType.setWorkflowContext(workflowContextType);
- //
- Task task_update;
- task_update = taskService.updateTaskOutcome(updateTaskOutcomeType)
- }
- }
例子(二):
- package com.ui.bpm;
- import com.proxy.bpm.query.TaskQueryService;
- import com.proxy.bpm.query.TaskQueryService_Service;
- import com.proxy.bpm.query.WorkflowErrorMessage;
- import com.proxy.bpm.service.TaskServiceContextTaskBaseType;
- import com.proxy.bpm.service.TaskService_Service;
- import com.proxy.bpm.service.UpdateTaskOutcomeType;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import oracle.adf.share.logging.ADFLogger;
- import oracle.bpel.services.workflow.common.model.CredentialType;
- import oracle.bpel.services.workflow.common.model.WorkflowContextType;
- import oracle.bpel.services.workflow.query.model.TaskDetailsByIdRequestType;
- import oracle.bpel.services.workflow.task.model.Task;
- public class Test1 {
- //记录日志ADFLogger
- // ADF日志级别
- // 1. SEVERE 严重的错误,导致系统中止。期望这类信息能立即显示在状态控制台上
- // 2. WARNING 潜在问题的级别,它是不符合预期的状态但还不至于成为“错误”,例如使用了废弃的API等等。期望这类信息能立即显示在状态控制台上
- // 3. INFO 运行时产生的有意义的一些信息,主要用于报告消息的目的。期望这类信息能立即显示在状态控制台上
- // 4. CONFIG 静态配置消息,用来输出一些系统配置信息。期望这类信息仅被写入日志文件中
- // 5. FINE 指示提供跟踪信息,简单输出一些跟踪信息。期望这类信息仅被写入日志文件中
- // 6. FINER 指示提供一条相当详细的跟踪消息。期望这类信息仅被写入日志文件中
- // 7. FINEST 指示提供一条最详细的跟踪消息。期望这类信息仅被写入日志文件中
- private static ADFLogger logger = ADFLogger.createADFLogger(Test1.class);
- //【一般流程的基本操作】
- //对于BPM Server的使用者认证、人工查询、人工单内容变更所需要的service
- //-------TaskService_Service/TaskService-----任务服务
- //-------TaskQueryService_Service/taskQueryService-----任务查询
- //*************之后就是各种各种的type了*******【参考XML】
- //【从网上某处看来的,借鉴一下】
- //一、初始化BPM Server连接。
- //二、认证使用者。
- //三、启动流程。
- //四、查询task,填写相关信息,完成task
- //注:通过authenticate()认证,连入BPM Server,通过queryTask()查询办事项,通过getTaskDetailByID()取出详细的pLayload资料,
- // 接下来根据设计时所设置的outcome,调用updateTaskOutcome()将其review的结果指定APPROVE或者REJECT
- //1、新建一个任务服务对象:TaskService_Service
- public static TaskService_Service taskService_Service = new TaskService_Service();
- //2、得到一个任务服务实例:TaskService
- public static com.mgear.proxy.bpm.service.TaskService taskService = taskService_Service.getTaskServicePort();
- public Test1() {
- super();
- }
- /**
- * function Test1
- * 作用:更新流程
- * 参数:动态数据Map
- * return Boolean
- * */
- public static boolean updateFlow(Map map){
- //新建一个原始任务服务运行环境对象:TaskServiceContextTaskBaseType
- TaskServiceContextTaskBaseType baseType = new TaskServiceContextTaskBaseType();
- //3、新建一个任务服务查询对象:TaskQueryService_Service
- TaskQueryService_Service taskQueryService_Service = new TaskQueryService_Service();
- //4、得到一个任务服务查询实例:TaskQueryService
- TaskQueryService taskQueryService = taskQueryService_Service.getTaskQueryServicePort();
- //定义一个Boolean
- Boolean bool = true;
- try{
- //通过taskid得到当前的task
- /*public static Task getTaskById(Map map){
- * Task task =null;
- * String taskid = map.get("TASKID").toString();
- * //新建一个任务Task查询【通过Request参数taskid得到任务Task的详细数据】
- * TaskDetailsByIdRequestType rType = new TaskDetailsByIdRequestType();
- * //设置Task查询的taskid【当前任务的taskid】
- * rType.setTaskId(taskid);
- * //设置Task查询的流程运行环境:参数:那个操作者的操作领域【已登陆验证】
- * rType.setWorkflowContext(cxt(taskQueryService, map));
- * try{
- * //查询得到当前Task
- * task = taskQueryService.getTaskDetailsById(rType);
- * }catch(WorkflowErrorMessage e){
- *
- * return task;
- *
- * }
- }*/
- Task task = TaskService.getTaskById(map);
- //如果task不为空,执行
- if(task != null){
- TaskDetailsByIdRequestType detail = new TaskDetailsByIdRequestType();
- detail.setTaskId(task.getSystemAttributes().getTaskId());
- detail.setWorkflowContext(cxt(taskQueryService,map));
- Task newTask = taskQueryService.getTaskDetailsById(detail);
- //设置新Task的各种参数 getSystemMessageAttributes()页面得到的数据使用该函数----区别于getSystemAttributes()系统属性
- newTask.getSystemMessageAttributes().setTextAttribute3(map.get("USERS").toString());
- newTask.getSystemMessageAttributes().setTextAttribute6(map.get("SENDUSER").toString());
- newTask.getSystemMessageAttributes().setTextAttribute7(map.get("SBSJ").toString());
- newTask.getSystemMessageAttributes().setTextAttribute10(map.get("XYJDDM").toString());
- newTask.getSystemMessageAttributes().setTextAttribute5(map.get("XYJDZT").toString());
- baseType.setTask(newTask);//设置新流程task
- baseType.setWorkflowContext(cxt(taskQueryService,map));//设置流程运行环境,这一步估计是为了确保是那个人来操作【有权限】
- Task newTask2 = null;
- newTask2 = taskService.updateTask(baseType);//更新task
- UpdateTaskOutcomeType ott = new UpdateTaskOutcomeType();//更新task之后输出的东西【四个参数】
- ott.setOutcome(map.get("OUTCOME").toString());//outcome,确定流程下一步走向哪里
- ott.setTask(newTask);
- ott.setTaskId(newTask.getSystemAttributes().getTaskId());
- ott.setWorkflowContext(cxt(taskQueryService,map));
- Task task1 = null;
- task1 = taskService.updateTaskOutcome(ott);//更新输出
- }
- else{
- bool = false;
- }
- }catch(Exception e){
- bool=false;
- logger.severe("WorkFlowUpdate_exception", e);
- }
- return bool;
- }
- //操作者登陆、验证、取得运行环境【有效的状态下】
- public static WorkflowContextType cxt(TaskQueryService taskQueryService,Map m) throws WorkflowErrorMessage{
- //登陆的凭证
- CredentialType ct = new CredentialType();
- //取得用户名/密码
- ct.setLogin(m.get("CLR").toString());
- ct.setPassword(m.get("PWD").toString());
- //定义一个流程运行环境
- WorkflowContextType context = null;
- //验证
- context = taskQueryService.authenticate(ct);]
- return context;
- }
- }
- package com.jeqo.htweb.view;
- import com.oracle.xmlns.bpel.workflow.task.Humantask1PayloadType;
- import com.oracle.xmlns.bpel.workflow.taskqueryservice.TaskQueryService;
- import com.oracle.xmlns.bpel.workflow.taskqueryservice.TaskQueryService_Service;
- import com.oracle.xmlns.bpel.workflow.taskqueryservice.WorkflowErrorMessage;
- import com.oracle.xmlns.bpel.workflow.taskservice.StaleObjectFaultMessage;
- import com.oracle.xmlns.bpel.workflow.taskservice.TaskService;
- import com.oracle.xmlns.bpel.workflow.taskservice.TaskServiceContextTaskBaseType;
- import com.oracle.xmlns.bpel.workflow.taskservice.TaskService_Service;
- import com.oracle.xmlns.bpel.workflow.taskservice.UpdateTaskOutcomeType;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.annotation.PostConstruct;
- import javax.faces.bean.ManagedBean;
- import javax.faces.bean.ViewScoped;
- import javax.faces.context.FacesContext;
- import javax.servlet.http.HttpServletRequest;
- import javax.xml.bind.JAXBContext;
- import javax.xml.bind.JAXBElement;
- import javax.xml.bind.JAXBException;
- import javax.xml.bind.Marshaller;
- import javax.xml.bind.Unmarshaller;
- import oracle.bpel.services.workflow.common.model.WorkflowContextType;
- import oracle.bpel.services.workflow.query.model.TaskDetailsByIdRequestType;
- import oracle.bpel.services.workflow.query.model.WorkflowContextRequestType;
- import oracle.bpel.services.workflow.task.model.Task;
- import org.w3c.dom.Node;
- /**
- *
- * @author Jorge Quilcate
- */
- @ManagedBean
- @ViewScoped
- public class ApprovalTaskBean {
- private Task task;
- private Humantask1PayloadType payload;
- private WorkflowContextType workflowContext;
- private JAXBElement<Humantask1PayloadType> payloadObject;
- @PostConstruct
- public void init() {
- HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
- String taskId = request.getParameter("bpmWorklistTaskId");
- String context = request.getParameter("bpmWorklistContext");
- System.out.println("Task ID: " + taskId);
- System.out.println("Context: " + context);
- TaskQueryService_Service taskQueryServiceClient = new TaskQueryService_Service();
- TaskQueryService taskQueryService = taskQueryServiceClient.getTaskQueryServicePort();
- try {
- WorkflowContextRequestType getWorkflowContextRequest = new WorkflowContextRequestType();
- getWorkflowContextRequest.setToken(context);
- workflowContext = taskQueryService.getWorkflowContext(getWorkflowContextRequest);
- TaskDetailsByIdRequestType getTaskDetailsByIdRequest = new TaskDetailsByIdRequestType();
- getTaskDetailsByIdRequest.setTaskId(taskId);
- getTaskDetailsByIdRequest.setWorkflowContext(workflowContext);
- task = taskQueryService.getTaskDetailsById(getTaskDetailsByIdRequest);
- Node payloadNode = (Node) task.getPayload();
- JAXBContext jaxbContext = JAXBContext.newInstance("com.oracle.xmlns.bpel.workflow.task");
- Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- payloadObject = (JAXBElement<Humantask1PayloadType>) unmarshaller.unmarshal(payloadNode, Humantask1PayloadType.class);
- payload = payloadObject.getValue();
- } catch (WorkflowErrorMessage | JAXBException ex) {
- Logger.getLogger(ApprovalTaskBean.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- public String approve() {
- try {
- payloadObject.setValue(payload);
- JAXBContext jaxbContext = JAXBContext.newInstance("com.oracle.xmlns.bpel.workflow.task");
- Marshaller marshaller = jaxbContext.createMarshaller();
- marshaller.marshal(payloadObject, (Node) task.getPayload());
- TaskService_Service taskServiceClient = new TaskService_Service();
- TaskService taskService = taskServiceClient.getTaskServicePort();
- TaskServiceContextTaskBaseType updateTaskRequest = new TaskServiceContextTaskBaseType();
- updateTaskRequest.setTask(task);
- updateTaskRequest.setWorkflowContext(workflowContext);
- task = taskService.updateTask(updateTaskRequest);
- UpdateTaskOutcomeType updateTaskOutcomeRequest = new UpdateTaskOutcomeType();
- updateTaskOutcomeRequest.setOutcome("APPROVE");
- updateTaskOutcomeRequest.setTask(task);
- updateTaskOutcomeRequest.setWorkflowContext(workflowContext);
- taskService.updateTaskOutcome(updateTaskOutcomeRequest);
- } catch (StaleObjectFaultMessage | com.oracle.xmlns.bpel.workflow.taskservice.WorkflowErrorMessage | JAXBException ex) {
- Logger.getLogger(ApprovalTaskBean.class.getName()).log(Level.SEVERE, null, ex);
- }
- return "completed";
- }
- public String reject() {
- return "completed";
- }
- public Humantask1PayloadType getPayload() {
- return payload;
- }
- public void setPayload(Humantask1PayloadType payload) {
- this.payload = payload;
- }
- }