代碼下載: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;
}
}