Query sugli oggetti di processi aziendali e relativi alle attività

Utilizzare l'interfaccia query delle API del servizio Web per ottenere le informazioni sulle attività e sui processi aziendali.

Le applicazioni client utilizzano una sintassi simile a SQL per effettuare query nel database.

Esempio di servizi Web 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);

Le informazioni richiamate dal database vengono restituite attraverso le API dei servizi Web come una serie di risultati di query.

Ad esempio:
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>");  
}

La funzione query restituisce gli oggetti in base all'autorizzazione del chiamante. La serie di risultati della query contiene solo le proprietà degli oggetti che il chiamante è autorizzato a visualizzare.

Le viste del database predefinite sono fornite per eseguire la query delle proprietà dell'oggetto. Per le maschere di processo, la funzione di query ha la seguente sintassi:
ProcessTemplateData[] queryProcessTemplates 
                       (java.lang.String whereClause,
                        java.lang.String orderByClause,
                        java.lang.Integer threshold,
                        java.util.TimeZone timezone);
Per le maschere di processo, la funzione di query ha la seguente sintassi:
TaskTemplate[] queryTaskTemplates 
                (java.lang.String whereClause,
                 java.lang.String orderByClause,
                 java.lang.Integer threshold,
                 java.util.TimeZone timezone);
Per altri oggetti del processo aziendale e degli oggetti correlati alle attività, la funzione di query ha la seguente sintassi:
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);

L'interfaccia query contiene anche un metodo queryAll. È possibile utilizzare questo metodo per richiamare tutti i dati rilevanti per un oggetto, ad esempio per scopi di monitoraggio. Il chiamante del metodo queryAll deve disporre di uno dei seguenti ruoli di Java 2 Platform, Enterprise Edition (J2EE): BPESystemAdministrator, BPESystemMonitor, TaskSystemAdministrator o TaskSystemMonitor. La verifica dell'autorizzazione mediante l'elemento di lavoro corrispondente dell'oggetto non è applicata.

Esempio per .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.
This information center is powered by Eclipse technology (http://www.eclipse.org)