ビジネス・プロセスおよびタスク関連オブジェクトに対する照会

Web サービス API の QUERY インターフェースを使用して、ビジネス・プロセスおよびタスクに関する情報を取得します。

クライアント・アプリケーションは、SQL 形式の構文を使用して、データベースを照会します。

Java Web サービスの例

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);

データベースから取り出した情報は、Web サービス 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);

QUERY インターフェースには、queryAll メソッドも含まれています。このメソッドを使用して、オブジェクトに関係のあるデータすべてを、モニターなどの目的で取得することができます。queryAll メソッドの呼び出し元には、 Java™ 2 Platform Enterprise Edition (J2EE) ロールの、BPESystemAdministrator、 BPESystemMonitor、TaskSystemAdministrator、または TaskSystemMonitor のいずれかが必要です。 オブジェクトの対応する作業項目を使用した許可検査は適用されません。

.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);
      }

(c) Copyright IBM Corporation 2005, 2006. All rights reserved.
(c) Copyright IBM Japan 2006
このインフォメーション・センターでは、Eclipse テクノロジー (http://www.eclipse.org) が採用されています。