Ricerca di processi e attività
TWSearch per definire quali colonne richiamare, quali filtri applicare, come ordinare e organizzare i risultati. I risultati possono essere analizzati anche in un elenco di variabili.Display all of the tasks for the Service Order Process that are active now or have been completed in the last 24 hours.TWSearch e gli oggetti correlati.- Le informazioni di riferimento per l'oggetto
TWSearchsono disponibili nella pagina JavaScript API in processes and service flows
pagina.
Struttura di una query TWSearch
TWSearch include i seguenti passi.- Definire le colonne di dati che si desidera richiamare. Consultare Colonne.
- Definire i filtri che si desidera applicare a una colonna. Vedere Filtri di ricerca.
- Definire il criterio di ordinamento per i record restituiti. Vedere Ordine dei risultati della ricerca.
- Definire come sono organizzati i risultati. Vedere Organizzazione dei risultati della ricerca.
- Eseguire la ricerca e analizzare i risultati in un elenco di variabili complesse. Vedere Esecuzione della ricerca.
TWSearch .var search = new TWSearch();Colonne
TWSearchColumn . Il seguente esempio di codice definisce una colonna che restituisce l'identificativo di una istanza del processo.var colInstanceId = new TWSearchColumn();
colInstanceId.type = TWSearchColumn.Types.ProcessInstance;
colInstanceId.name = TWSearchColumn.ProcessInstanceColumns.ID;ProcessInstance, Taske BusinessData.TWSearchColumn.Types.ProcessInstance
TWSearchColumn.Types.Task
TWSearchColumn.Types.BusinessDataI nomi per i tipi di colonna ProcessInstance e Task sono predefiniti e non modificabili. I nomi delle colonne per il tipo BusinessData sono definiti nelle definizioni dei processi quando una variabile è contrassegnata come Disponibile nella ricerca. Per ulteriori informazioni sulla ricerca di dati di business, consultare Come rendere i dati di business disponibili nelle ricerche e nelle viste.
serviceOrderNumber.var colServiceOrderNumber = new TWSearchColumn;
colServiceOrderNumber.type = TWSearchColumn.Types.BusinessData;
colServiceOrderNumber.name = "serviceOrderNumber";search.columns =
new Array(
colInstanceStatus,
colInstanceId,
colInstanceName,
colTaskId,
colTaskStatus,
colClosedDateTime,
colDueDateTime,
);
Filtri di ricerca
TWSearchCondition . Ad esempio, il seguente esempio di codice definisce una colonna che richiama il nome di un'istanza del processo e quindi restringe i risultati per elaborare i nomi dell'istanza che iniziano con Adempimento ordine di servizio.var colInstanceName = new TWSearchColumn();
colInstanceName.type = TWSearchColumn.Types.ProcessInstance;
colInstanceName.name = TWSearchColumn.ProcessInstanceColumns.Name;
var condInstanceName = new TWSearchCondition;
condInstanceName.column = colInstanceName;
condInstanceName.operator = TWSearchCondition.Operations.StartsWith;
condInstanceName.value = "Service Order Fulfillment:";
TWDate , è necessario prima convertire la data in una stringa quando si crea la condizione. Il seguente esempio di codice definisce una colonna per restituire la data di scadenza dell'attività e quindi una condizione di data di scadenza before e after .var colDueDateTime = new TWSearchColumn;
colDueDateTime.type = TWSearchColumn.Types.Task;
colDueDateTime.name = TWSearchColumn.TaskColumns.DueDate;
var condDueDateTimeBefore = new TWSearchCondition;
condDueDateTimeBefore.column = colDueDateTime;
condDueDateTimeBefore.operator = TWSearchCondition.Operations.LessThan;
condDueDateTimeBefore.value = tw.local.dueDateBefore.format("MM/dd/yyyy HH:mm:ss", "PST");
var condDueDateTimeAfter = new TWSearchCondition;
condDueDateTimeAfter.column = colDueDateTime;
condDueDateTimeAfter.operator = TWSearchCondition.Operations.GreaterThan;
condDueDateTimeAfter.value = tw.local.dueDateAfter.format("MM/dd/yyyy HH:mm:ss", "PST");var conditions = new Array(condInstanceName, condInstanceStatus, condTaskStatus);
search.conditions = conditions;Per applicare condizioni esclusive (OR esclusivo), è necessario eseguire più ricerche e combinarle da soli.
push , come mostrato nell'esempio di codice successivo.push su tutte le condizioni sull'array. Il codice sottostante effettua una copia dell'array.var conditions = new Array(condInstanceName, condInstanceStatus, condTaskStatus);
if(tw.local.fieldRepIdentifier != "All") {
conditions.push(condFieldRepIdentifier);
}
search.conditions = conditions;Ordine dei risultati della ricerca
TWSearchOrdering . Ad esempio, il seguente esempio di codice elenca gli identificatori dell'istanza di processo richiamati in ordine crescente.var orderInstanceId = new TWSearchOrdering();
orderInstanceId .column = colInstanceId;
orderInstanceId .order = TWSearchOrdering.Orders.Ascending;search.orderBy = new Array(orderInstanceId );
Organizzazione dei risultati della ricerca
TWSearch.organizedBy . Il comportamento è lo stesso di quello delle ricerche salvate in Process Portal. Se si sceglie di organizzare per istanza del processo, si ottiene un solo risultato per istanza del processo. Il seguente esempio di codice organizza i risultati della ricerca per attività.search.organizedBy = TWSearch.OrganizeByTypes.Task;Esecuzione della ricerca
var results = search.execute();Il metodo execute restituisce TWSearchResults oggetti.L'oggetto TWSearch supporta anche i metodi executeForProcessInstances e executeForTasks , che utilizzano gli stessi parametri e restituiscono array JavaScript nativi ma con tipi di restituzione differenti. Il metodo executeForTasks restituisce un TWTask[] array di attività mentre executeForProcessInstances restituisce un TWProcessInstance[] array di istanze di processi.
Se si desidera utilizzare questi risultati al di fuori del proprio blocco di script, è necessario analizzarli e inizializzare le variabili equivalenti.
tw.local.serviceOrderTasks = new tw.object.listOf.ServiceOrderTask();
for(var i = 0; i < results.rows.length; i++) {
var row = results.rows[i];
tw.local.serviceOrderTasks[i] = new tw.object.ServiceOrderTask();
tw.local.serviceOrderTasks[i].processInstanceId = row.values[0].toString();
tw.local.serviceOrderTasks[i].processInstanceName = row.values[1].toString();
tw.local.serviceOrderTasks[i].taskId = row.values[2].toString();
tw.local.serviceOrderTasks[i].taskStatus = row.values[3].toString();
if(null != row.values[4])
{
tw.local.serviceOrderTasks[i].closedDate = row.values[4].toString();
}
if(null != row.values[5])
{
tw.local.serviceOrderTasks[i].dueDate = row.values[5].toString();
}
}Se si sta scrivendo il codice per elaborare i risultati di TWSearch e controllare i valori null, è necessario specificare il valore null sul lato sinistro dell'operatore piuttosto che sul lato destro, come mostrato nel frammento di codice di esempio precedente. In caso contrario, è possibile che il seguente errore venga emesso nel file SystemErr.log :
SystemErr R RHINO USAGE WARNING: Missed Context.javaToJS()
conversion:
Rhino runtime detected object Tue May 05 08:00:00 EDT 2020 of
class java.util.Date where it expected String, Number, Boolean
or Scriptable instance. Please check your code for missing
Context.javaToJS() call.