Oracle-BPM(八)

代碼下載:git


8、bpm api之taskQueryService【不分頁__沒有測試】


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 java.math.BigInteger;

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.AssignmentFilterEnum;
import oracle.bpel.services.workflow.query.model.ClauseType;
import oracle.bpel.services.workflow.query.model.ColumnType;
import oracle.bpel.services.workflow.query.model.DisplayColumnType;
import oracle.bpel.services.workflow.query.model.CountTasksRequestType;
import oracle.bpel.services.workflow.query.model.DisplayColumnType;
import oracle.bpel.services.workflow.query.model.OrderingClauseType;
import oracle.bpel.services.workflow.query.model.PredicateClauseType;
import oracle.bpel.services.workflow.query.model.PredicateOperationEnum;
import oracle.bpel.services.workflow.query.model.PredicateType;
import oracle.bpel.services.workflow.query.model.SortOrderEnum;
import oracle.bpel.services.workflow.query.model.TaskDetailsByIdRequestType;
import oracle.bpel.services.workflow.query.model.TaskListRequestType;
import oracle.bpel.services.workflow.query.model.TaskListResponseType;
import oracle.bpel.services.workflow.query.model.TaskOptionalInfoEnum;
import oracle.bpel.services.workflow.query.model.TaskOptionalInfoType;
import oracle.bpel.services.workflow.query.model.TaskOrderingType;
import oracle.bpel.services.workflow.query.model.TaskPredicateQueryType;
import oracle.bpel.services.workflow.query.model.TaskPredicateType;
import oracle.bpel.services.workflow.query.model.ValueListType;
import oracle.bpel.services.workflow.task.model.Task;


public class Test3 {
    //日誌
    private static ADFLogger logger=ADFLogger.createADFLogger(Test3.class);
    public Test3() {
        super();
    }
    
    //TaskQueryService【流程查詢】
    //TaskService【流程更新】
    //bpm Human Task 的各種type【對照XML】
/*    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:tas="http://xmlns.oracle.com/bpel/workflow/taskQueryService" xmlns:com=http://xmlns.oracle.com/bpel/workflow/common" xmlns:tas1="http://xmlns.oracle.com/bpel/workflow/taskQuery"  xmlns:task="http://xmlns.oracle.com/bpel/workflow/task">
       <soapenv:Header/>
       <soapenv:Body>
          <tas:taskListRequest>
             <com:workflowContext>
                <com:credential>
                   <com:login>weblogic</com:login>
                   <com:password>weblogic1</com:password>
                </com:credential>
             </com:workflowContext>
             <tas1:taskPredicateQuery>
                <tas1:displayColumnList>
                   <tas1:displayColumn>textAttribute1</tas1:displayColumn>
                   <tas1:displayColumn>textAttribute2</tas1:displayColumn>
                   <tas1:displayColumn>textAttribute3</tas1:displayColumn>
                </tas1:displayColumnList>
                <tas1:optionalInfoList>
                   <tas1:taskOptionalInfo>Comments</tas1:taskOptionalInfo>
                   <tas1:taskOptionalInfo>Attachments</tas1:taskOptionalInfo>
                   <tas1:taskOptionalInfo>Payload</tas1:taskOptionalInfo>
                </tas1:optionalInfoList>
                <tas1:predicate>
                   <tas1:assignmentFilter>My+Group</tas1:assignmentFilter>
                   <tas1:predicate>
                      <tas1:clause>
                         <tas1:column tableName="WFTask">
                            <tas1:columnName>state</tas1:columnName>
                         </tas1:column>
                         <tas1:operator>IN</tas1:operator>
                         <tas1:valueList>
                            <tas1:value>ASSIGNED</tas1:value>
                            <tas1:value>INFO_REQUESTED</tas1:value>
                            <tas1:value>OUTCOME_UPDATED</tas1:value>
                         </tas1:valueList>
                      </tas1:clause>
                   </tas1:predicate>
                </tas1:predicate>
                <tas1:ordering>
                   <tas1:clause>
                      <tas1:column>priority</tas1:column>
                      <tas1:table>WFTask</tas1:table>
                      <tas1:sortOrder>ASCENDING</tas1:sortOrder>
                      <tas1:nullFirst>false</tas1:nullFirst>
                   </tas1:clause>
                   <tas1:clause>
                      <tas1:column>taskNumber</tas1:column>
                      <tas1:table>WFTask</tas1:table>
                      <tas1:sortOrder>DESCENDING</tas1:sortOrder>
                      <tas1:nullFirst>false</tas1:nullFirst>
                   </tas1:clause>
                </tas1:ordering>
             </tas1:taskPredicateQuery>
          </tas:taskListRequest>
       </soapenv:Body>
    </soapenv:Envelope>

*/    
    public static List<Task> queryTestNoPages() throws WorkflowErrorMessage {//該函數使用TaskQueryService,查詢功能
        //新建一個task查詢服務
        TaskQueryService_Service taskQueryService_Service = new TaskQueryService_Service();
        TaskQueryService taskQueryService = taskQueryService_Service.getTaskQueryServicePort();
        
        //1、登錄驗證
        WorkflowContextType workflowContextType = new WorkflowContextType();
        CredentialType credentialType = new CredentialType();
        credentialType.setLogin("weblogic");
        credentialType.setPassword("xxxxx");
        workflowContextType = taskQueryService.authenticate(credentialType);//try{}catch(){}WorkflowErrorMessage
        //成功登陸驗證之後,獲取可操作的環境workflowContextType
        
        //
        
        //2、開始準備各種需要查詢的task屬性
        TaskListRequestType taskListRequestType = new TaskListRequestType();
        TaskPredicateQueryType taskPredicateQueryType = new TaskPredicateQueryType();
        
        //DisplayColumnType【2級】
        DisplayColumnType displayColumnType = new DisplayColumnType();
        //查詢屬性少的時候,使用這種
        //displayColumnType.getDisplayColumn().add("textAttribute1");
        //displayColumnType.getDisplayColumn().add("textAttribute2");
        //displayColumnType.getDisplayColumn().add("textAttribute3");
        //查詢屬性很多時,用List
        List<String> DisplayColumn = displayColumnType.getDisplayColumn();
        DisplayColumn.add("textAttribute1");
        DisplayColumn.add("textAttribute2");
        DisplayColumn.add("textAttribute3");
        
        //TaskOptionalInfoType【方法和以上一樣】【2級】
        TaskOptionalInfoType taskOptionalInfoType = new TaskOptionalInfoType();
        taskOptionalInfoType.getTaskOptionalInfo().add(TaskOptionalInfoEnum.COMMENTS);
        taskOptionalInfoType.getTaskOptionalInfo().add(TaskOptionalInfoEnum.ATTACHMENTS);
        taskOptionalInfoType.getTaskOptionalInfo().add(TaskOptionalInfoEnum.PAYLOAD);
        
        //TaskPredicateType【3級】
        TaskPredicateType taskPredicateType = new TaskPredicateType();
        taskPredicateType.setAssignmentFilter(AssignmentFilterEnum.MY_GROUP);
        //PredicateType
        PredicateType predicateType = new PredicateType();
        taskPredicateType.setPredicate(predicateType);
        //PredicateClauseType【這個type比較坑爹,沒用上,改用ClauseType】
        //PredicateClauseType predicateClauseType = new PredicateClauseType();
        ClauseType clauseType = new ClauseType();
        //ColumnType 
        ColumnType columnType = new ColumnType();
        columnType.setTableName("WFTask");
        columnType.setColumnName("state");
        clauseType.setColumn(columnType);
        clauseType.setOperator(PredicateOperationEnum.IN);
        //ValueListType
        ValueListType valueListType = new ValueListType();
        valueListType.getValue().add("ASSIGNED");
        valueListType.getValue().add("INFO_REQUESTED");
        valueListType.getValue().add("OUTCOME_UPDATED");
        clauseType.setValueList(valueListType);
        predicateType.getClause().add(clauseType);
        
        //TaskOrderingType
        TaskOrderingType taskOrderingType = new TaskOrderingType();
        //OrderingClauseType
        OrderingClauseType orderingClauseType1 =new OrderingClauseType();
        orderingClauseType1.setColumn("priority");
        orderingClauseType1.setTable("WFTask");
        orderingClauseType1.setSortOrder(SortOrderEnum.ASCENDING);
        orderingClauseType1.setNullFirst(false);
        taskOrderingType.getClause().add(orderingClauseType1);
        //OrderingClauseType
        OrderingClauseType orderingClauseType2 = new OrderingClauseType();
        orderingClauseType2.setColumn("taskNumber");
        orderingClauseType2.setTable("WFTask");
        orderingClauseType2.setSortOrder(SortOrderEnum.DESCENDING);
        orderingClauseType2.setNullFirst(false);
        taskOrderingType.getClause().add(orderingClauseType2);
        
        //setXXX
        taskPredicateQueryType.setDisplayColumnList(displayColumnType);
        taskPredicateQueryType.setOptionalInfoList(taskOptionalInfoType);
        taskPredicateQueryType.setPredicate(taskPredicateType);
        taskPredicateQueryType.setOrdering(taskOrderingType);
        
        //實施查詢
        taskListRequestType.setTaskPredicateQuery(taskPredicateQueryType);
        taskListRequestType.setWorkflowContext(workflowContextType);
        
        //查出來之後,response
        TaskListResponseType taskListResponseType =taskQueryService.queryTasks(taskListRequestType);
        List<Task> list=  taskListResponseType.getTask();
        return list;
        }
    
    
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章