Oracle-BPM(九)

代碼下載:git


9、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.query.model.LogicalOperatorEnumType;
import oracle.bpel.services.workflow.query.model.PredicateOperationEnum;
import oracle.bpel.services.workflow.query.model.PredicateJoinOperatorEnum;
import oracle.bpel.services.workflow.task.model.Task;

public class Test4 {
    //日誌
    private static ADFLogger logger=ADFLogger.createADFLogger(Test3.class);
    
    public Test4() {
        super();
    }
    
    /**
     * 分頁
     * */
    
    //參照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 startRow="1" endRow="10">
                <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:lhs>
                         <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:lhs>
                      <tas1:logicalOperator>AND</tas1:logicalOperator>
                      <tas1:rhs>
                         <tas1:lhs>
                            <tas1:clause>
                               <tas1:column tableName="WFTask">
                                  <tas1:columnName>textAttribute1</tas1:columnName>
                               </tas1:column>
                               <tas1:operator>EQ</tas1:operator>
                               <tas1:value>MyTask</tas1:value>
                            </tas1:clause>
                            <tas1:clause joinOperator="AND">
                               <tas1:column tableName="WFTask">
                                  <tas1:columnName>textAttribute2</tas1:columnName>
                               </tas1:column>
                               <tas1:operator>EQ</tas1:operator>
                               <tas1:value>1234</tas1:value>
                            </tas1:clause>
                         </tas1:lhs>
                         <tas1:logicalOperator>OR</tas1:logicalOperator>
                         <tas1:rhs>
                            <tas1:clause>
                               <tas1:column tableName="WFTask">
                                  <tas1:columnName>textAttribute2</tas1:columnName>
                               </tas1:column>
                               <tas1:operator>EQ</tas1:operator>
                               <tas1:value>123</tas1:value>
                            </tas1:clause>
                        </tas1:rhs>
                     </tas1:rhs>
                   </tas1:predicate>
                </tas1:predicate>
             </tas1:taskPredicateQuery>
          </tas:taskListRequest>
       </soapenv:Body>
    </soapenv:Envelope>
*/
    
    
    public static List<Task> queryTestWithPages(){
        //啓動一個TaskQueryService服務
        TaskQueryService_Service taskQueryService_Service = new TaskQueryService_Service();
        TaskQueryService taskQueryService = taskQueryService_Service.getTaskQueryServicePort();
        
        //TaskListRequestType
        TaskListRequestType taskListRequestType = new TaskListRequestType();
        
        //操作者登錄驗證
        //WorkflowContextType
        WorkflowContextType workflowContextType = new WorkflowContextType();
        //CredentialType
        CredentialType credentialType = new CredentialType();
        credentialType.setLogin("weblogic");
        credentialType.setPassword("qw82232160");
        try{
            //驗證
            workflowContextType = taskQueryService.authenticate(credentialType);
        }catch(WorkflowErrorMessage e){
            e.printStackTrace();
            return null;
            
            }
        
        //設置需要查詢的屬性
        //TaskPredicateQueryType
        TaskPredicateQueryType taskPredicateQueryType = new TaskPredicateQueryType();
        //設置頁數(startRow, endRow): (1, 10) (11, 20) (21, 30)。。。
        int startRow = 1;
        int endRow = 10;
        taskPredicateQueryType.setStartRow(BigInteger.valueOf(startRow));
        taskPredicateQueryType.setEndRow(BigInteger.valueOf(endRow));
        
        //DisplayColumnType
        DisplayColumnType displayColumnType = new DisplayColumnType();
        displayColumnType.getDisplayColumn().add("textAttribute1");
        displayColumnType.getDisplayColumn().add("textAttribute2");
        displayColumnType.getDisplayColumn().add("textAttribute3");
        
        //TaskOptionalInfoType
        TaskOptionalInfoType taskOptionalInfoType = new TaskOptionalInfoType();
        taskOptionalInfoType.getTaskOptionalInfo().add(TaskOptionalInfoEnum.COMMENTS);
        taskOptionalInfoType.getTaskOptionalInfo().add(TaskOptionalInfoEnum.ATTACHMENTS);
        taskOptionalInfoType.getTaskOptionalInfo().add(TaskOptionalInfoEnum.PAYLOAD);
        
        //TaskPredicateType 
        TaskPredicateType taskPredicateType = new TaskPredicateType();
        taskPredicateType.setAssignmentFilter(AssignmentFilterEnum.MY_GROUP);
        //PredicateType
        PredicateType predicateType1 = new PredicateType();//lhs
        PredicateType predicateType2 = new PredicateType();//注意這裏的用法
        PredicateType predicateType3 = new PredicateType();
        PredicateType predicateType4 = new PredicateType();
        taskPredicateType.setPredicate(predicateType1);//
        predicateType1.setLhs(predicateType2);
        //PredicateClauseType
        //PredicateClauseType predicateClauseType = new PredicateClauseType();
        //ClauseType
        ClauseType clauseType1 = new ClauseType();
        //ColumnType
        ColumnType columnType1 = new ColumnType();
        columnType1.setTableName("WFTask");
        columnType1.setColumnName("state");
        clauseType1.setColumn(columnType1);
        clauseType1.setOperator(PredicateOperationEnum.IN);
        //ValueListType
        ValueListType valueListType = new ValueListType();
        valueListType.getValue().add("ASSIGNED");
        valueListType.getValue().add("INFO_REQUESTED");
        valueListType.getValue().add("OUTCOME_UPDATED");
        clauseType1.setValueList(valueListType);
        predicateType2.getClause().add(clauseType1);
        //PredicateJoinOperatorEnum
        predicateType1.setLogicalOperator(PredicateJoinOperatorEnum.AND);
        //rhs
        predicateType1.setRhs(predicateType3.getLhs());//這裏不知道正不正確???
        //ClauseType
        ClauseType clauseType2 = new ClauseType();
        ColumnType columnType2 = new ColumnType();
        columnType2.setTableName("WFTask");
        columnType2.setColumnName("textAttribute1");
        clauseType2.setColumn(columnType2);
        clauseType2.setOperator(PredicateOperationEnum.EQ);
        clauseType2.setValue("MyTask");
        predicateType3.getClause().add(clauseType2);
        //ClauseType
        ClauseType clauseType3 = new ClauseType();
        clauseType3.setJoinOperator(PredicateJoinOperatorEnum.AND);
        ColumnType columnType3 = new ColumnType();
        columnType3.setTableName("WFTask");
        columnType3.setColumnName("textAttribute2");
        clauseType3.setColumn(columnType3);
        clauseType3.setOperator(PredicateOperationEnum.EQ);
        clauseType3.setValue("1234");
        predicateType3.getClause().add(clauseType3);
        //logicalOperator
        predicateType3.setLogicalOperator(PredicateJoinOperatorEnum.OR);
        predicateType3.setRhs(predicateType4);
        ClauseType clauseType4 = new ClauseType();
        ColumnType columnType4 = new ColumnType();
        columnType4.setTableName("WFTask"); 
        columnType4.setColumnName("textAttribute2");
        clauseType4.setColumn(columnType4);
        clauseType4.setOperator(PredicateOperationEnum.EQ);
        clauseType4.setValue("123");
        predicateType4.getClause().add(clauseType4);
        
        //插入查詢的條件
        //taskPredicateQueryType.setStartRow(value);分頁條件
        //taskPredicateQueryType.setEndRow(value);
        taskPredicateQueryType.setDisplayColumnList(displayColumnType);
        taskPredicateQueryType.setOptionalInfoList(taskOptionalInfoType);
        taskPredicateQueryType.setPredicate(taskPredicateType);
        
        
        //實施查詢
        taskListRequestType.setTaskPredicateQuery(taskPredicateQueryType);//執行條件
        taskListRequestType.setWorkflowContext(workflowContextType);//執行環境
        //TaskListResponseType  應答
        TaskListResponseType taskListResponseType = new TaskListResponseType(); //
        try {
            taskListResponseType = taskQueryService.queryTasks(taskListRequestType);//調用taskQueryService來查詢task
            List<Task> list = taskListResponseType.getTask();//
            return list;
        } catch (WorkflowErrorMessage e) {
            e.printStackTrace();
            return null;
        }
        
    }
}


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