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.
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 < result.Length; i++) { Console.Write(indent +i ); string[] row = result[i]; for (int j = 0; j < 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.
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)