비즈니스 프로세스 및 타스크 관련 오브젝트에 대한 조회

웹 서비스 API의 조회 인터페이스를 사용하여 비즈니스 프로세스 및 타스크에 대한 정보를 확보합니다.

클라이언트 응용프로그램은 SQL 유사 구문을 사용하여 데이터베이스를 조회합니다.

Java 웹 서비스의 예

string processTemplateName = "ProcessCustomerLR"; 
query query1 = new query(); 
query1.selectClause = "DISTINCT PROCESS_INSTANCE.STARTED, PROCESS_INSTANCE.PIID"; 
query1.whereClause = 
       "PROCESS_INSTANCE.TEMPLATE_NAME = '" + processTemplateName + "'"; 
query1.orderByClause = "PROCESS_INSTANCE.STARTED"; 
query1.threshold = null; 
query1.timeZone = "UTC"; query1.skipTuples = null;  
queryResponse queryResponse1 = proxy.query(query1);

데이터베이스에서 검색한 정보는 웹 서비스 API를 통해 조회 결과 세트로 리턴됩니다.

예를 들면,
QueryResultSetType queryResultSet = queryResponse1.queryResultSet; 
if (queryResultSet != null) { 
   Console.WriteLine("--> QueryResultSetType"); 
   Console.WriteLine(" . size= " + queryResultSet.size); 
   Console.WriteLine(" . numberColumns= " + queryResultSet.numberColumns);   
   string indent = " . ";  

   // -- the query column info  
   QueryColumnInfoType[] queryColumnInfo = queryResultSet.QueryColumnInfo; 
   if (queryColumnInfo.Length > 0) { 
      Console.WriteLine(); 
      Console.WriteLine("= . QueryColumnInfoType size= " + queryColumnInfo.Length);   
      Console.Write( " | tableName "); 
      for (int i = 0; i < queryColumnInfo.Length ; i++) { 
         Console.Write( " | " + queryColumnInfo[i].tableName.PadLeft(20) ); 
      } 
      Console.WriteLine();  
      Console.Write( " | columnName "); 
      for (int i = 0; i < queryColumnInfo.Length ; i++) { 
         Console.Write( " | " + queryColumnInfo[i].columnName.PadLeft(20) ); 
      } 
      Console.WriteLine();  
      Console.Write( " | data type "); 
      for (int i = 0; i < queryColumnInfo.Length ; i++) { 
         QueryColumnInfoTypeType tt = queryColumnInfo[i].type; 
         Console.WriteLine( " | " + tt.ToString()); 
      } 
         Console.WriteLine();  
   } 
   else { 
      Console.WriteLine("--> queryColumnInfo= <null>");     
   }       
     
   // - the query result values
   string[][] result = queryResultSet.result; 
   if (result !=null) {
      Console.WriteLine();
      Console.WriteLine("= . result size= " + result.Length);
      for (int i = 0; i &lt; result.Length; i++) {
        Console.Write(indent +i );
        string[] row = result[i];
        for (int j = 0; j &lt; row.Length; j++ ) {
           Console.Write(" | " + row[j]);
        }        
        Console.WriteLine();     
      }  
   } 
   else {     
      Console.WriteLine("--> result= <null>");
   }   
}  
else {     
   Console.WriteLine("--> QueryResultSetType= <null>");  
}

조회 함수는 호출자의 권한에 따라 오브젝트를 리턴합니다. 결과 조회 세트에는 호출자가 참조할 권한이 있는 오브젝트의 특성만 포함됩니다.

오브젝트 특성을 조회할 수 있도록 사전 정의된 데이터베이스 보기가 제공됩니다. 프로세스 템플리트의 경우 조회 함수에는 다음 구문이 있습니다.
ProcessTemplateData[] queryProcessTemplates 
                       (java.lang.String whereClause,
                        java.lang.String orderByClause,
                        java.lang.Integer threshold,
                        java.util.TimeZone timezone);
타스크 템플리트의 경우 조회 함수에는 다음 구문이 있습니다.
TaskTemplate[] queryTaskTemplates 
                (java.lang.String whereClause,
                 java.lang.String orderByClause,
                 java.lang.Integer threshold,
                 java.util.TimeZone timezone);
기타 비즈니스 프로세스 및 타스크 관련 오브젝트의 경우 조회 함수에는 다음 구문이 있습니다.
QueryResultSet query (java.lang.String selectClause,
                      java.lang.String whereClause,
                      java.lang.String orderByClause,
                      java.lang.Integer skipTuples
                      java.lang.Integer threshold,
                      java.util.TimeZone timezone);

조회 인터페이스에는 queryAll 메소드도 포함됩니다. 이 메소드를 사용하여 예를 들어 모니터링 목적으로 오브젝트의 연관된 데이터를 모두 검색할 수 있습니다. queryAll 메소드 호출자는 BPESystemAdministrator, BPESystemMonitor, TaskSystemAdministrator 또는 TaskSystemMonitor.method와 같은 J2EE(Java™ 2 Platform, Enterprise Edition) 역할 중 하나를 가지고 있어야 합니다. 오브젝트의 해당 작업 항목을 사용한 권한 점검은 적용되지 않습니다.

.NET의 예

 
ProcessTemplateType[] templates = null;

   try {
        queryProcessTemplates iW = new queryProcessTemplates();
        iW.whereClause = "PROCESS_TEMPLATE.STATE=PROCESS_TEMPLATE.STATE.STATE_STARTED";
        iW.orderByClause = null;
        iW.threshold = null;
        iW.timeZone = null;

        Console.WriteLine("--> queryProcessTemplates ... ");
        Console.WriteLine("--> query: WHERE " + iW.whereClause + " ORDER BY " + 
          iW.orderByClause + " THRESHOLD " + iW.threshold + " TIMEZONE" + iW.timeZone);

        templates = proxy.queryProcessTemplates(iW);

        if (templates.Length < 1) {
          Console.WriteLine("--> No templates found :-(");
        }
        else {
          for (int i = 0; i < templates.Length ; i++) {
            Console.Write("--> found template with ptid: " + templates[i].ptid);
            Console.WriteLine(" and name: " + templates[i].name);
           /*  ... other properties of ProcessTemplateType ... */
          }
        }
      }
      catch( Exception e ) { 
        Console.WriteLine("exception= " + e);
      }

ⓒ Copyright IBM Corporation 2005, 2006.
이 Information Center는 Eclipse 기술을 기반으로 합니다. (http://www.eclipse.org)