Przeszukiwanie procesów i zadań
TWSearch w celu zdefiniowania, które kolumny mają zostać pobrane, jakie filtry mają zostać zastosowane, jak sortować i organizować wyniki. Wyniki
można również przeanalizować, aby uzyskać listę zmiennych.Display all of the tasks for the Service Order Process that are active now or have been completed in the last 24 hours.TWSearch i powiązanych z nim obiektów.- Informacje uzupełniające dotyczące obiektu
TWSearchsą dostępne na stronie Interfejs API języka JavaScript w procesach i przepływach usług.
Struktura zapytania TWSearch
TWSearch zawiera następujące kroki.- Zdefiniuj kolumnę danych, które mają zostać pobrane. Patrz Kolumny.
- Zdefiniuj filtry, które mają zostać zastosowane do kolumny. Patrz sekcja Filtry wyszukiwania.
- Zdefiniuj porządek sortowania zwracanych rekordów. Patrz Kolejność wyników wyszukiwania.
- Zdefiniuj sposób organizowania wyników. Patrz: organizacja wyników wyszukiwania.
- Wykonaj wyszukiwanie i przeanalizuj wyniki w celu uzyskania listy zmiennych złożonych. Patrz: Wykonanie wyszukiwania.
TWSearch.var search = new TWSearch();Kolumny
TWSearchColumn. W poniższym kodzie przykładowym jest
definiowana kolumna, która zwraca identyfikator instancji procesu.var colInstanceId = new TWSearchColumn();
colInstanceId.type = TWSearchColumn.Types.ProcessInstance;
colInstanceId.name = TWSearchColumn.ProcessInstanceColumns.ID;ProcessInstance, Task i BusinessData.TWSearchColumn.Types.ProcessInstance
TWSearchColumn.Types.Task
TWSearchColumn.Types.BusinessDataNazwy typów kolumn ProcessInstance i Task są predefiniowane i nie można ich edytować. Nazwy kolumn dla typu BusinessData są definiowane w definicjach definicji BPD, gdy zmienna jest oznaczona jako Dostępna w wyszukiwaniu. Więcej informacji na temat wyszukiwania danych biznesowych zawiera sekcja Udostępnianie danych biznesowych w wyszukiwakach i widokach.
serviceOrderNumber.var colServiceOrderNumber = new TWSearchColumn;
colServiceOrderNumber.type = TWSearchColumn.Types.BusinessData;
colServiceOrderNumber.name = "serviceOrderNumber";search.columns =
new Array(
colInstanceStatus,
colInstanceId,
colInstanceName,
colTaskId,
colTaskStatus,
colClosedDateTime,
colDueDateTime,
);
Filtry wyszukiwania
TWSearchCondition. W
poniższym przykładowym kodzie jest definiowana kolumna, która pobiera nazwę
instancji procesu, a następnie zawęża wyniki do nazw instancji procesów, które
rozpoczynają się od łańcucha Service Order Fulfillment (Realizacja
zamówienia na usługę).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, należy najpierw przekształcić datę w łańcuch, gdy zostanie skonstruowany warunek. Następujący kod przykładowy definiuje kolumnę, która zwraca datę zakończenia zadania, a następnie definiuje before i after jako warunek daty zakończenia.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;Aby zastosować warunki wykluczające (warunek logiczny XOR), należy samodzielnie wykonać wiele operacji wyszukiwania i złożyć ich wyniki.
push przedstawioną w kolejnym przykładzie kodu.push we wszystkich warunkach na tablicy. Kod bazowy tworzy
kopię tablicy.var conditions = new Array(condInstanceName, condInstanceStatus, condTaskStatus);
if(tw.local.fieldRepIdentifier != "All") {
conditions.push(condFieldRepIdentifier);
}
search.conditions = conditions;Porządek wyników wyszukiwania
TWSearchOrdering. Poniższy kod przykładowy wyświetla listę pobranych identyfikatorów instancji
procesów w porządku rosnącym.var orderInstanceId = new TWSearchOrdering();
orderInstanceId .column = colInstanceId;
orderInstanceId .order = TWSearchOrdering.Orders.Ascending;search.orderBy = new Array(orderInstanceId );
Organizacja wyników wyszukiwania
TWSearch.organizedBy. Zachowanie jest takie samo jak zachowanie zapisanych wyszukiwań w Process Portal. W
przypadku organizowania wg instancji procesu zostanie uzyskany jeden
wynik na instancję procesu. Poniższy kod przykładowy organizuje wyniki
wyszukiwania wg zadania.search.organizedBy = TWSearch.OrganizeByTypes.Task;Wykonanie wyszukiwania
var results = search.execute();Metoda execute zwraca obiekty TWSearchResults.Obiekt TWSearch obsługuje również metody executeForProcessInstances i executeForTasks, które przyjmują te same parametry i zwracają rodzime tablice języka JavaScript, ale z różnymi typami zwracanych wartości. Metoda executeForTasks zwraca tablicę zadań TWTask[], podczas gdy program executeForProcessInstances zwraca tablicę TWProcessInstance[] instancji procesów.
Aby użyć tych wyników poza blokiem skryptu, należy je przeanalizować i zainicjować odpowiednie zmienne.
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();
}
}Jeśli piszesz kod przetwarzający wyniki TWSearch i sprawdzasz, czy wartości nie są równe null, rozważ umieszczenie wartości null po lewej, a nie po prawej stronie operatora, jak to pokazano w powyższym przykładowym fragmencie kodu. W przeciwnym razie możliwe jest, że do pliku SystemErr.log mogą zostać wyświetlone następujące błędy:
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.