Język skryptowy systemu: Funkcje workflow

Spis treści

Język skryptowy systemu jest używany w Workflow Management, na przykład do formułowania warunku wstępnego lub warunku przejścia lub do określania operatorów, którzy nie są podsumowani w roli workflow.

Mechanizm workflow obsługuje zarówno własny język skryptowy systemu, jak i JavaScript w celu wyrażania złożonych relacji. Niniejsza dokumentacja zawiera szczegółowe informacje na temat poszczególnych funkcji workflow w języku skryptowym systemu. Funkcje workflow to funkcje, których kontekst użycia wymaga definicji działania. Funkcje workflow, które wymagają istnienia działania, nie mogą być używane w warunkach przejścia, ponieważ działanie nie zostało jeszcze utworzone, gdy oceniany jest warunek przejścia. Przykładami funkcji workflow są setActivityWorkDuration i setActivityPriority, które określają czas trwania przetwarzania lub priorytet, gdy tworzona jest działanie workflow.

Przykłady przedstawione w niniejszym dokumencie mają pomóc w zrozumieniu sposobu korzystania z funkcji i poleceń języka skryptowego systemu. Aby użyć przykładów w innych kontekstach aplikacji, może być konieczne ich dostosowanie. Niniejszy dokument zawiera również przykłady funkcji, które nie są częścią języka skryptowego systemu. W takim przypadku przykłady wskazują, w jaki sposób można osiągnąć tę samą lub podobną funkcjonalność przy użyciu języka skryptowego systemu.

Grupa docelowa

Grupą docelową tego dokumentu są programiści i konsultanci techniczni, którzy tworzą lub dostosowują workflow dla klientów, a także klienci, którzy zarządzają workflow.

Niniejszy dokument zakłada zrozumienie zakresu funkcji Workflow Management widocznych dla użytkownika. Ponadto, czytelnik powinien posiadać podstawową znajomość SQL lub innego języka programowania w celu zrozumienia języka skryptowego systemu.

Definicje terminów

Definicje działania

Definicja działania jest szablonem dla działań generowanych na jej podstawie. Jeśli definicja działania jest aktywna, silnik workflow generuje nowe działanie, gdy wystąpi zarejestrowane zdarzenie, pod warunkiem spełnienia warunku przejścia. Definicje działań są niezależne od bazy danych OLTP i systemu, w którym zostały zarejestrowane, ponieważ nie zawierają ani danych specyficznych dla systemu, ani danych specyficznych dla OLTP. Definicje działań są zapisywane w bazie danych repozytorium.

Deklaracje

Deklaracje to skrypty w definicjach procesów i działań, które zapewniają metody wywoływane podczas tworzenia działań, zmiany statusu i wprowadzania określonych wartości parametrów. Właściwości procesów i działań można elastycznie definiować, dostosowując deklaracje. Deklaracje są zapisywane w języku skryptowym.

GUID

GUID jest skrótem od Globally Unique Identifier i odpowiada globalnie unikalnemu identyfikatorowi. GUID to 128-bitowy numer obliczany zgodnie ze schematem Open Software Foundation (OSF) dla rozproszonych środowisk obliczeniowych (DCE). Zawiera on między innymi adres IP komputera generującego, składnik czasu i składnik losowy. Oznacza to, że dwa niezależne komputery mogą zawsze obliczyć różne identyfikatory GUID bez synchronizacji. W Comarch ERP Enterprise identyfikatory GUID są reprezentowane jako tablice bajtów Java o długości 16 i są używane głównie jako kompaktowe klucze podstawowe i obce w Business Objects.

Systemowy język skryptowy

Wyrażenia, warunki, polecenia, funkcje i deklaracje są używane do wyrażania złożonych relacji. Wszystkie te wyrażenia są częścią wspólnego języka skryptowego zwanego językiem skryptowym systemu. Składnia języka skryptowego systemu jest oparta na SQL, Pascal i Java. Język skryptowy systemu jest używany w Workflow Management, na przykład do formułowania warunku wstępnego lub warunku przejścia lub do określania operatorów, którzy nie są podsumowani w roli workflow.

Silnik workflow

Wraz z usługą zdarzeń, silnik workflow koordynuje i monitoruje wykonywanie workflow Silnik workflow jest wykonywany na serwerze komunikatów w każdym systemie.

Funkcje workflow

Funkcje workflow to funkcje, których kontekst użycia wymaga definicji działania. Funkcje workflow, które wymagają istnienia działania, nie mogą być używane w warunkach przejścia, ponieważ działanie nie zostało jeszcze utworzone, gdy oceniany jest warunek przejścia. Niniejszy dokument dzieli funkcje workflow na następujące grupy:

  • Funkcje dla procesów (funkcje procesowe)
  • Funkcje dla działań (funkcje działań)
  • Funkcje dla edytorów (funkcje edytora)
  • Funkcje wyników działań (Funkcje wyników działań)
  • Funkcje wiadomości e-mail i węzłów e-mail (funkcje e-mail)
  • Funkcje węzłów usług (funkcje węzłów usług)
  • Funkcje dla węzłów usług internetowych
  • Polecenia dla wskaźników dynamicznych (polecenia wskaźników dynamicznych)
  • Funkcje dla aplikacji listy (funkcje listy)

Funkcje dla procesów (funkcje procesowe)

Funkcje dla procesów obejmują zarówno polecenia, które definiują właściwości tworzonego procesu, jak i funkcje zapytań o właściwości, które są trudne do zapytania przy użyciu określonych parametrów procesu:

  • abortProcess
  • processOwner
  • setProcessWorkDuration
abortProcess

Nazwa

abortProcess

Opis

Anuluje generowanie działania i kończy proces.

Oznaczenia

abortProcess()

Parametry

Brak

Wynik

W funkcji tworzenia węzła początkowego, abortProcess anuluje tworzenie procesu bez tworzenia procesu i działania początkowego. Jeśli funkcja abortProcess zostanie użyta w węźle innym niż węzeł początkowy, wszystkie działania, które są nadal otwarte, zostaną zakończone bez przetwarzania, a proces zakończy się za pośrednictwem węzła błędu z kodem błędu WFL-00576 Process aborted.

Źródła błędów

Użycie abortProcess w funkcji innej niż create może prowadzić do błędu.

Przykłady

abortProcess() w funkcji tworzenia węzła początkowego anuluje tworzenie procesu.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Polecenie abortProcess może być użyte na przykład, jeśli warunek przejścia w polu o tej samej nazwie w definicji działania dla węzła początkowego nie może być w pełni odwzorowany, np. ze względu na przestrzeń lub wydajność.

Odniesienia

abort

Przykład
Poniższy przykład pochodzi z węzła początkowego definicji procesu. Podczas usuwania instancji jednostki biznesowej com.cisag.app.inventory.obj.UnitOnhand, tworzenie procesu jest anulowane, jeśli nie wszystkie lokalizacje pojemników są puste. Ta kontrola została nie tylko przeniesiona z warunku przejścia do funkcji tworzenia, aby zaoszczędzić miejsce. Przeniesienie pozwala również uniknąć niepotrzebnego dostępu do bazy danych, jeśli warunek przejścia ma wartość false z powodu innych kryteriów.

function create()

{

/* if the storage location has more UnitOnhand then the location is not empty */

if (cast(Number, getResultList(„SELECT COUNT(*) FROM

com.cisag.app.inventory.obj.UnitOnhand uoh WHERE

 uoh:storageLocation = ?”,

list(parameters.oldObject:storageLocation), 1)[0][0]) > 0) {

abortProcess();

}

}

process.owner

Nazwa

process.owner

Opis

Zwraca listę właścicieli procesów.

Oznaczenia

Guid[] processOwner()

Parametry

Brak

Wynik

Funkcja processOwner zwraca listę zawierającą identyfikatory właścicieli procesów. Jeśli proces nie ma odpowiedzialnego użytkownika, zwracana jest pusta lista.

Źródła błędów

Brak

Przykłady

isEmpty(processOwner()) sprawdza, czy do procesu przypisany jest odpowiedzialny użytkownik.

Poniższy skrypt wyświetla nazwy wszystkich właścicieli procesów w dzienniku:

var owners := processOwner();

for (u as Guid : owners) {

echo(userName(u));

}

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

 
Przykład
Przykład: processOwner

Poniższy przykład z definicji działania help.processOwner zwraca identyfikatory wszystkich właścicieli procesów.

function create()

{

const ProcessOwnerOrigin as valueSet(com.cisag.sys.workflow.ProcessOwnerOrigin);

var owners as Guid[];

var ownerNames as String;

var pd := getByBusinessKey(„REPOSITORY”, CisObject(com.cisag.sys.workflow.obj.ProcessDefinition), parameters.PROCESS_DEFINITION, parameters.ORIGIN);

if (definition->ProcessDefinition:processData.sourceOfOwner = ProcessOwnerOrigin.WORKFLOW_ROLE) {

if (not isNull(definition->ProcessDefinition:ownerRole))

owners := resolveRole(definition->ProcessDefinition:ownerRole);

}

else {

if (not isNull(definition->ProcessDefinition:owner))

owners := list(userGuid(definition->ProcessDefinition:owner));

}

for (u : owners) {

ownerNames := ownerNames + ” ” + userName(u);

}

result.OWNERS := trim(ownerNames);

}

setProcessWorkDuration

Nazwa

setProcessWorkDuration

Opis

Zastępuje wartość pola Czas przetwarzania w definicji procesu.

Oznaczenia

setProcessWorkDuration(Number milliseconds)

Parametry

milliseconds to czas przetwarzania w milisekundach.

Wynik

Funkcja setProcessWorkDuration zastępuje wartość pola Czas przetwarzania w definicji procesu. Jeśli liczba milisekund jest ujemna, czas trwania przetwarzania jest ustawiany na wartość 0.

Źródła błędów

Brak

Przykłady

setProcessWorkDuration(3600*24*1000) ustawia czas trwania przetwarzania na 24 godziny. Czas zakończenia procesu jest dokładnie 24 godziny po czasie w polu Moment rozpoczęcia.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Późniejsza zmiana planowanego czasu zakończenia może prowadzić do zmiany statusu procesu. Zmiana nie ma wpływu na harmonogram działań, które zostały już utworzone.

Odniesienia

setActivityWorkDuration

Funkcje dla działań (funkcje działań)

Funkcje dla działań zawierają przede wszystkim polecenia definiujące właściwości tworzonego działania. Takie polecenia mogą być używane tylko w funkcji tworzenia deklaracji.

  • abort
  • addAttachment
  • formatDescription
  • formatDescriptionHTML
  • formatSubject
  • primaryAttachment
  • setActivityCategory
  • setActivityPriority
  • setActivityResult
  • setActivityWorkDelay
  • setActivityWorkDuration
  • setSeriesDuration
abort

Nazwa

abort

Opis

Anuluje generowanie działania.

Oznaczenia

abort()

Parametry

Brak

Wynik

W funkcji create, abort anuluje generowanie działania bez jego generowania.

Źródła błędów

Użycie funkcji abort w funkcji innej niż create może prowadzić do błędu.

Jeśli przerwanie zostanie użyte w węźle działania lub zdarzenia, następny krok procesu nie może zostać wygenerowany, a proces może zostać zakończony przez węzeł błędu.

Przykłady

abort() w funkcji create definicji działania typu Pojedyncze działanie anuluje tworzenie działania bez jego tworzenia.

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

Polecenie przerwania może być użyte na przykład, jeśli warunek przejścia w polu o tej samej nazwie definicji działania dla pojedynczego działania nie może być całkowicie odwzorowany, np. ze względu na przestrzeń lub wydajność.

Odniesienia

abortProcess
addAttachment

Nazwa

addAttachment

Opis

Dodaje link do obiektu biznesowego dla działania.

Oznaczenia

addAttachment(CisObject object)

Parametry

object jest obiektem biznesowym, który ma być powiązany z działaniem.

Wynik

Polecenie addAttachment dodaje do działania łącze do obiektu biznesowego.

W przypadku zdarzenia typu Działanie użytkownika obiekt biznesowy przekazany w parametrze zdarzenia parameters.object jest automatycznie łączony z węzłem początkowym.

Źródła błędów

Jeśli obiekt i działanie nie są przechowywane w tej samej bazie danych, wystąpi błąd runtime.

Przykłady

addAttachment(parameters.object) w funkcji tworzenia węzła początkowego łączy obiekt biznesowy, dla którego zdarzenie zostało wywołane, z działaniem.

addAttachment(activity->Process) łączy działanie z procesem.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Pierwszy link dodany za pomocą polecenia addAttachment jest linkiem preferowanym. Na karcie Powiązania i aplikacji Działania można oznaczyć dowolny załącznik jako preferowany.

Jeśli działanie użytkownika nie jest powiązane z aplikacją, preferowany powiązany obiekt biznesowy jest otwierany po otwarciu zadania. Wszystkie obiekty biznesowe powiązane z działaniem można otworzyć za pomocą menu kontekstowego zadania i zakładki Powiązania w aplikacji Działania.

W aplikacjach Lista: Działania/Baza danych repozytorium i Lista: Działania/Baza danych OLTP można wyszukiwać działania za pomocą powiązanych z nimi obiektów biznesowych. Jeśli obiekt biznesowy jest powiązany z węzłem początkowym procesu, wyszukiwanie jest również możliwe w aplikacjach Lista: Procesy/Baza danych repozytorium i Lista: Procesy/Baza danych OLTP.

Pole wyszukiwania dla połączonego obiektu biznesowego można wstępnie przypisać w menu kontekstowym jednostek biznesowych.

Odniesienia

primaryAttachment
formatDescription

Nazwa

formatDescription

Opis

Zastępuje symbol zastępczy w opisie działania konkretną wartością.

Oznaczenia

formatDescription(String name, String value)

Parametry

name to nazwa symbolu zastępczego.

value to wartość, która ma być wyświetlana zamiast symbolu zastępczego.

Wynik

Polecenie formatDescription zastępuje wszystkie wystąpienia nazwy zastępczej w polu edytora tekstu Oznaczenie w definicji działania określoną wartością, która ma być wyświetlana w działaniu.

Źródła błędów

Jeśli działanie zostało już utworzone, nie można już zmienić jej opisu. Oznacza to, że polecenie formatDescription może być używane tylko w funkcji create.

Przykłady

formatDescription(„item”, loadItem(„10010”):number) w funkcji create zastępuje wszystkie wystąpienia elementu zastępczego numerem elementu 10010.

Polecenie formatDescription(„item”, loadItem(„10010”):description) w funkcji create zastępuje element zastępczy opisem elementu 10010 w bieżącym języku treści.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

formatDescriptionHTML, formatSubject
formatDescriptionHTML

Nazwa

formatDescriptionHTML

Opis

Zastępuje symbol zastępczy w opisie działania fragmentem HTML.

Oznaczenia

formatDescriptionHTML(String key, String value)

Parametry

name to nazwa symbolu zastępczego.

value to wartość, która ma być wyświetlana zamiast symbolu zastępczego.

Wynik

Polecenie formatDescription zastępuje wszystkie wystąpienia nazwy zastępczej w polu edytora tekstu Oznaczenie w definicji działania określoną wartością, która ma być wyświetlana w działaniu.

Źródła błędów

Jeśli działanie zostało już utworzone, nie można już zmienić jego opisu. Oznacza to, że polecenie formatDescriptionHTML może być używane tylko w funkcji create.

Przykłady

formatDescriptionHTML(„item”, loadItem(„10010”):number) w funkcji create zastępuje wszystkie wystąpienia elementu zastępczego numerem elementu 10010.

Polecenie formatDescriptionHTML(„item”, loadItem(„10010”):description) w funkcji create zastępuje element zastępczy opisem elementu 10010 w bieżącym języku treści.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

formatDescriptionHTML, formatSubject,
Przykład
Przykład: Tabela z hiperłączami w wiadomości e-mail

Poniższy przykład wyświetla opis artykułu testowego 10010 we wszystkich aktywnych językach treści. Najpierw funkcja getCisObjectList określa aktywne języki treści. Artykuł testowy jest następnie otwierany raz dla każdego aktywnego języka treści w celu określenia nazwy w odpowiednim języku. Wynik jest zapisywany jako wiersz w tabeli HTML. Korzystając z funkcji getURL i znacznika zakotwiczenia w HTML, numer artykułu jest wyświetlany jako klikalne hiperłącze w opisie działania.

function create()

{

/* item number of this example */

const ItemNumber := „10010”;

/* get system and database names */

var systemName := getSystemName();

var databaseName := getDatabaseName();

/* get system and database Guid */

var system := getByBusinessKey(„CONFIGURATION”,

CisObject(com.cisag.sys.configuration.obj.System), systemName, 1);

var database := getByBusinessKey(„CONFIGURATION”, CisObject(com.cisag.sys.configuration.obj.Database), system:guid,

databaseName, 1);

/* query configuration database for active content languages */

var params as Unknown[];

add(params, database:guid);

add(params, 1); /* active version */

var activeLanguages := getCisObjectList(„CONFIGURATION”, „SELECT

FROM com.cisag.sys.configuration.obj.DatabaseLanguage

o WHERE o:databaseGuid = ? AND o:version = ?”, params, 99);

/* build HTML table with one row for each content language */

var item as CisObject(com.cisag.app.general.obj.Item);

var url := getURL(loadItem(ItemNumber));

var htmlTable := „” + char(13);

for (l as

CisObject(com.cisag.sys.configuration.obj.DatabaseLanguage) :

activeLanguages) {

setNLSContentLanguage(l:language);

item := loadItem(ItemNumber);

htmlTable := htmlTable + „” + char(13);

echo(htmlTable);

}

htmlTable := htmlTable + „</table>”;

/* format activity */

formatDescriptionHTML(„table”, htmlTable);

}

Aby zaoszczędzić na otwieraniu dwóch obiektów System i Database, definicja działania typu Wywołanie funkcji mogłaby zwracać Guid bazy danych. Definicja działania musiałaby zostać wprowadzona w JavaScript i mogłaby wyglądać następująco:

function create()

{

var db = Java.type(’com.cisag.pgm.appserver.CisEnvironment’).getInstance();

result.GUID = com.cisag.pgm.datatype.Guid.toHexString(db.getDatabaseGuid());

}

Identyfikator GUID jest zwracany za pośrednictwem parametru zdarzenia GUID. Funkcja tworzenia rozpocznie się w następujący sposób:

function create()

{

/* item number of this example */

const ItemNumber := „10010”;

/* query configuration database for active content languages in
the database */

var params as Unknown[];

add(params, @getDatabaseGuid().GUID;

add(params, 1); /* active version */

var activeLanguages := getCisObjectList(„CONFIGURATION”, „SELECT

FROM com.cisag.sys.configuration.obj.DatabaseLanguage o WHERE

o:databaseGuid = ? AND o:version = ?”, params, 99);

formatSubject

Nazwa

formatSubject

Opis

Zastępuje symbol zastępczy w temacie działania konkretną wartością.

Oznaczenia

formatSubject(String key, String value)

Parametry

key to nazwa symbolu zastępczego.

value to wartość, która ma być wyświetlana zamiast symbolu zastępczego.

Wynik

Polecenie formatSubject zastępuje wszystkie wystąpienia klucza zastępczego w polu Przedmiot definicji działania określoną wartością, która ma być wyświetlana w działaniu.

Źródła błędów

Jeśli działanie zostało już utworzone, nie można już zmienić jej tematu. Oznacza to, że polecenie formatSubject może być używane tylko w funkcji create.

Przykłady

formatSubject(„item”, loadItem(„10010”):number) w funkcji create zastępuje element zastępczy numerem elementu 10010.

Polecenie formatSubject(„item”, loadItem(„10010”):description) w funkcji create zastępuje element zastępczy nazwą elementu 10010 w bieżącym języku treści.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

formatDescription, formatDescriptionHTML
primaryAttachment

Nazwa

primaryAttachment

Opis

Zwraca obiekt biznesowy preferowanego łącza.

Oznaczenia

CisObjectReference primaryAttachment()

Parametry

Brak

Wynik

Funkcja primaryAttachment zwraca odniesienie do obiektu biznesowego preferowanego łącza działania. Jeśli działanie nie ma powiązań, zwracana jest domyślna wartość zero typu danych CisObjectReference.

W przypadku zdarzenia typu Działanie użytkownika obiekt biznesowy przekazany w parametrze zdarzenia parameters.object jest automatycznie łączony z węzłem początkowym.

Źródła błędów

Brak

Przykłady

isNull(primaryAttachment()) sprawdza, czy działanie ma powiązanie.

cast(CisObjectReference(com.cisag.app.general.obj.Item), primaryAttachment()) zwraca odniesienie do preferowanego powiązanego obiektu biznesowego wpisanego na elemencie.

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

Pierwszy link dodany za pomocą polecenia addAttachment jest linkiem preferowanym. W zakładce Powiązania aplikacji Działania można ustawić dowolny załącznik jako preferowany.

Jeśli działanie użytkownika nie jest powiązane z aplikacją, preferowany powiązany obiekt biznesowy jest otwierany po otwarciu zadania. Wszystkie obiekty biznesowe powiązane z działaniem można otworzyć za pomocą menu kontekstowego zadania i zakładki Powiązania w aplikacji Działania.

W aplikacjach Lista: Działania/Baza danych repozytorium i Lista: Działania/Baza danych OLTP można wyszukiwać działania poprzez powiązane z nimi obiekty biznesowe. Jeśli obiekt biznesowy jest powiązany z węzłem początkowym procesu, wyszukiwanie jest również możliwe w aplikacjach Lista: Procesy/Baza danych repozytorium i Lista: Procesy/Baza danych OLTP.

Pole wyszukiwania dla połączonego obiektu biznesowego można wstępnie przypisać za pomocą odpowiednich akcji w menu kontekstowym jednostek biznesowych.

Odniesienia

addAttachment
setActivityCategory

Nazwa

setActivityCategory

Opis

Określa kategorię działania.

Oznaczenia

setActivityCategory(String categoryConstant)

Parametry

categoryConstant jest stałą wartością ValueSet com.cisag.sys.workflow.ActivityClass:
  • Termin
  • E-mail
  • Fax
  • List
  • Telefon
  • Zadanie

Wynik

Polecenie setActivityCategory definiuje kategorię działania, a tym samym ikonę zadań w dokowanym oknie Wyszukiwanie zadań. Kategoria wybrana w definicji działania jest zmieniana za pomocą tego polecenia.

Źródła błędów

Jeśli działanie zostało już utworzone, kategoria nie może zostać zmieniona. Oznacza to, że polecenie setActivityCategory może być używane tylko w funkcji create.

Przykłady

setActivityCategory(„EMAIL”) przypisuje kategorię E-mail do działania.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setActivityPriority
setActivityPriority

Nazwa

setActivityPriority

Opis

Określa priorytet działania.

Oznaczenia

setActivityPriority(Number priorityId)

Parametry

priorityId jest wartością liczbową ValueSet com.cisag.sys.workflow.ActivityPriority. Jeśli priorityId jest mniejsze niż 1 lub większe niż 9, używana jest najniższa lub najwyższa dopuszczalna wartość.

Wynik

Polecenie setActivityPriority ustawia priorytet działania, a zatem także ikonę priorytetu zadań w dokowanym oknie Wyszukiwanie zadań. Polecenie to zmienia priorytet wybrany w definicji działania.

Źródła błędów

Jeśli działanie zostało już utworzone, nie można już zmienić jego priorytetu. Oznacza to, że polecenie setActivityPriority może być używane tylko w funkcji create.

Przykłady

setActivityPriority(1) przypisuje działaniu najwyższy priorytet.

setActivityPriority(9) przypisuje działaniu najniższy priorytet.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setActivityCategory
setActivityResult

Nazwa

setActivityResult

Opis

Określa wynik działania.

Oznaczenia

setActivityResult(String result)

Parametry

result to wynik działania w postaci ciągu znaków.

Wynik

Polecenie setActivityResult ustawia wynik działania. Wynik jest wyświetlany w aplikacji Działania na karcie Wyniki. Wynik można również ustawić w funkcji create przed utworzeniem działania.

Źródła błędów

Model danych ogranicza wynik do 80 znaków.

Przykłady

setActivityResult(„Hello World!”) ustawia wynik działania na Hello World!.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

 
setActivityWorkDelay

Nazwa

setActivityWorkDelay

Opis

Określa czas trwania do rozpoczęcia okresu przetwarzania.

Oznaczenia

setActivityWorkDelay(Number seconds)

Parametry

seconds to czas w sekundach do rozpoczęcia okresu przetwarzania.

Wynik

Polecenie setActivityWorkDelay określa czas trwania w sekundach do rozpoczęcia okresu przetwarzania tworzonego działania. Czas trwania wprowadzony w polu Rozpoczęcie w/za definicji działania jest zmieniany przez to polecenie.

Źródła błędów

Jeśli działanie zostało już utworzone, nie można już zmienić czasu jego trwania. Oznacza to, że polecenie setActivityWorkDelay może być używane tylko w funkcji create.

Przykłady

setActivityWorkDelay(3600) ustawia czas trwania do rozpoczęcia okresu przetwarzania na jedną godzinę.

setActivityWorkDelay(seconds(activity:creationTime, addDays(startOfDay(activity:creationTime), 1)) + 1) ustawia początek okresu przetwarzania na początek następnego dnia.

setActivityWorkDelay(seconds(activity:creationTime, addWorkingDays(„90310”, startOfDay(activity:creationTime), 3)) + 1) ustawia początek okresu przetwarzania na początek trzeciego dnia roboczego zgodnie z kalendarzem pracy organizacji 90310.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Czas trwania jest dodawany do wartości atrybutu creationTime działania.

Odniesienia

setActivityWorkDuration
setActivityWorkDuration

Nazwa

setActivityWorkDuration

Opis

Określa czas przetwarzania.

Oznaczenia

setActivityWorkDuration(Number seconds)

Parametry

seconds to czas trwania w sekundach.

Wynik

Polecenie setActivityWorkDuration definiuje czas trwania przetwarzania w sekundach. Czas trwania wprowadzony w polu Czas opracowania w definicji działania jest zmieniany za pomocą tego polecenia.

Źródła błędów

Jeśli działanie zostało już utworzone, nie można już zmienić czasu trwania przetwarzania. Oznacza to, że polecenie setActivityWorkDuration może być używane tylko w funkcji create.

Przykłady

setActivityWorkDuration(3600) ustawia czas trwania przetwarzania na jedną godzinę po rozpoczęciu okresu przetwarzania.

Jeśli czas trwania do rozpoczęcia okresu przetwarzania wynosi 0, a aktywność rozpoczyna się natychmiast, wówczas setActivityWorkDuration(seconds(activity:creationTime, addDays(endOfDay(activity:creationTime), 1))) ustawia koniec okresu przetwarzania na koniec następnego dnia.

Jeśli początek okresu przetwarzania został ustawiony na początek następnego dnia za pomocą polecenia setActivityWorkDuration(seconds(activity:creationTime, addDays(startOfDay(activity:creationTime), 1)) + 1)), wówczas setActivityWorkDuration(60 * 60 * 24 – 1) ustawia koniec okresu przetwarzania na koniec następnego dnia.

setActivityWorkDuration(seconds(activity:creationTime, addWorkingDays(„90310”, endOfDay(activity:creationTime), 3))) ustawia koniec okresu przetwarzania na koniec trzeciego dnia roboczego zgodnie z kalendarzem zakładowym organizacji 90310.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Czas przetwarzania jest dodawany do początku okresu przetwarzania.

Odniesienia

setActivityWorkDelay
setSeriesDuration

Nazwa

setSeriesDuration

Opis

Określa czas trwania serii.

Oznaczenia

setSeriesDuration(Number seconds)

Parametry

seconds to czas trwania w sekundach.

Wynik

Polecenie setSeriesDuration definiuje czas trwania serii działania typu Szablon seryjny lub Zdarzenie czasowe w sekundach. Czas trwania wprowadzony w polu Czas trwania serii w definicji działania jest zmieniany za pomocą tego polecenia.

Źródła błędów

Jeśli działanie zostało już utworzone, nie można już zmienić czasu trwania przetwarzania. Oznacza to, że polecenie setSeriesDuration może być używane tylko w funkcji create.

Przykłady

setSeriesDuration(3600 * 24 * 7) ustawia czas trwania serii na jeden tydzień.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setActivityWorkDuration

Funkcje dla edytorów (Funkcje edytora)

Funkcje dla edytorów obejmują przede wszystkim funkcje określania operatorów z zadaniami o określonym statusie. Funkcje te mogą być używane na przykład do określania operatorów do dalszych działań w przypadku przekroczenia limitu czasu:

  • activeParticipants
  • activeWorkers
  • allParticipants
  • allWorkers
  • cancelledWorkers
  • closedWorkers
  • currentParticipants
  • currentWorkers
  • doneWorkers
  • forwardedWorkers
  • overdueWorkers
activeParticipants

Nazwa

activeParticipants

Opis

Zwraca aktywnych użytkowników zaangażowanych w proces.

Oznaczenia

Guid[] activeParticipants()

Parametry

Brak

Wynik

Funkcja activeParticipants zwraca listę z identyfikatorami wszystkich aktywnych użytkowników zaangażowanych w proces. Użytkownik jest uważany za aktywnego uczestnika, jeśli ma zadanie o statusie W opracowaniu. Jeśli w procesie nie ma aktywnych użytkowników, zwracana jest pusta lista.

Źródła błędów

Jeśli funkcja activeParticipants jest używana w definicji działania, która nie jest powiązana z definicją procesu, ocena jest anulowana z błędem.

Przykłady

Wyrażenie size(activeParticipants()) zwraca liczbę użytkowników zaangażowanych w otwarte zadanie w procesie.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników zaangażowanych w otwarte zadanie:

var users := activeParticipants();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

activeWorkers, allParticipants, currentParticipants
activeWorkers

Nazwa

activeWorkers

Opis

Zwraca aktywnych operatorów działania.

Oznaczenia

Guid[] activeWorkers()

Parametry

Brak

Wynik

Funkcja activeWorkers zwraca listę z identyfikatorami wszystkich aktywnych operatorów działania. Pracownik jest uważany za aktywnego, jeśli ma zadanie o statusie W opracowaniu. Jeśli proces nie ma aktywnego pracownika, zwracana jest pusta lista.

Źródła błędów

Brak

Przykłady

Wyrażenie size(activeWorkers()) zwraca liczbę pracowników z otwartym zadaniem.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników z otwartym zadaniem:

var users := activeWorkers();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

activeParticipants, allWorkers, canceledWorkers, closedWorkers, currentWorkers, doneWorkers, forwardedWorkers, overdueWorkers
allParticipants

Nazwa

allParticipants

Opis

Zwraca wszystkich użytkowników zaangażowanych w proces.

Oznaczenia

Guid[] allParticipants()

Parametry

Brak

Wynik

Funkcja allParticipants zwraca listę z identyfikatorami wszystkich użytkowników zaangażowanych w proces. Użytkownik jest uważany za uczestnika, jeśli ma zadanie powiązane z procesem. Status zadania jest nieistotny. Jeśli proces nie ma uczestniczących użytkowników, zwracana jest pusta lista.

Źródła błędów

Jeśli funkcja allParticipants zostanie użyta w definicji działania, która nie jest powiązana z definicją procesu, ocena zostanie anulowana z błędem.

Przykłady

Wyrażenie size(allParticipants()) zwraca liczbę wszystkich użytkowników zaangażowanych w proces.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników zaangażowanych w proces:

var users := allParticipants();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

allWorkers, activeParticipants, currentParticipants

Przykład
Przykład: possibleParticipants

Poniższy przykład z definicji działania help.possibleParticipants zwraca możliwych operatorów wszystkich definicji działania definicji procesu.

function create()

{

const PerformerType as valueSet(com.cisag.sys.workflow.PerformerType);

const ProcessOwnerOrigin as valueSet(com.cisag.sys.workflow.ProcessOwnerOrigin);

var users as Guid[];

var userNames as String;

var pd := getByBusinessKey(„REPOSITORY”, CisObject(com.cisag.sys.workflow.obj.ProcessDefinition), parameters.PROCESS_DEFINITION, parameters.ORIGIN);

var OQL := „SELECT FROM com.cisag.sys.workflow.obj.ActivityDefinition ad WHERE ad:processDefinition = ?”;

var adList := getCisObjectList(„REPOSITORY”, OQL, list(pd:guid), 100);

for (ad as CisObject(com.cisag.sys.workflow.obj.ActivityDefinition) : adList)

{

if (ad:data.performer.type = PerformerType.ROLE) {

users := union(users, resolveRole(ad:data.performer.guid));

}

if (ad:data.performer.type = PerformerType.USER) {

users := union(users, list(ad:data.performer.guid));

}

if (ad:data.performer.type = PerformerType.INITIATOR) {

users := union(users, list(userGuid(„process.Initiator”)));

}

if (ad:data.performer.type = PerformerType.OWNER) {

if (pd:processData.sourceOfOwner = ProcessOwnerOrigin.PROCESS_DEFINITION)

users := union(users, list(userGuid(pd:owner)));

if (pd:processData.sourceOfOwner = ProcessOwnerOrigin.WORKFLOW_ROLE)

users := union(users, resolveRole(pd:ownerRole));

}

}

for (u : users) {

userNames := userNames + ” ” + userName(u);

}

result.PARTICIPANTS := trim(userNames);

}

allWorkers

Nazwa

allWorkers

Opis

Zwraca wszystkich operatorów danego działania.

Oznaczenia

Guid[] activeWorkers()

Parametry

Brak

Wynik

Funkcja activeWorkers zwraca listę z identyfikatorami wszystkich aktywnych pracowników danego działania. Użytkownik jest uważany za pracownika, jeśli ma zadanie powiązane z działaniem. Status zadania jest nieistotny. Jeśli aktywność nie ma agentów, zwracana jest pusta lista.

Źródła błędów

Brak.

Przykłady

Wyrażenie size(allWorkers()) zwraca liczbę pracowników z otwartym zadaniem.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników z otwartym zadaniem:

var users := activeWorkers();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

allParticipants, activeWorkers, canceledWorkers, closedWorkers, currentWorkers, doneWorkers, forwardedWorkers, overdueWorkers
cancelledWorkers

Nazwa

cancelledWorkers

Opis

Zwraca wszystkich użytkowników z ukończonym zadaniem bez zmian.

Oznaczenia

Guid[] canceledWorkers()

Parametry

Brak

Wynik

Funkcja canceledWorkers zwraca listę z identyfikatorami wszystkich użytkowników, którzy mają zadanie powiązane z działaniem o statusie Zakończone bez opracowania. Jeśli działanie nie ma pracownika z niedokończonym zadaniem, zwracana jest pusta lista.

Źródła błędów

Brak

Przykłady

Wyrażenie size(canceledWorkers()) zwraca liczbę pracowników z niedokończonym zadaniem.

Wyrażenie union(canceledWorkers(), doneWorkers()) zwraca wszystkich użytkowników, którzy ukończyli lub nie ukończyli swojego zadania.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników z niedokończonym zadaniem:

var users := canceledWorkers();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

activeWorkers, allWorkers, closedWorkers, currentWorkers, doneWorkers, forwardedWorkers, overdueWorkers
closedWorkers
Nazwa closedWorkers
Opis Zwraca wszystkich operatorów z zablokowanym zadaniem.
Podpisy Guid[] closedWorkers()
Parametry Brak
Wynik Funkcja closedWorkers zwraca listę z identyfikatorami wszystkich użytkowników, którzy mają zadanie powiązane z działaniem o statusie Zablokowane. Jeśli działanie nie ma edytora z zablokowanym zadaniem, zwracana jest pusta lista.
Źródła błędów Brak
Przykłady Wyrażenie size(closedWorkers()) zwraca liczbę pracowników z zamkniętym zadaniem.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników z zablokowanym zadaniem:

var users := closedWorkers();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP
Uwagi  
Zobacz także activeWorkers, allWorkers, canceledWorkers, currentWorkers, doneWorkers, forwardedWorkers, overdueWorkers
currentParticipants

Nazwa

currentParticipants

Opis

Zwraca użytkowników aktualnie zaangażowanych w proces.

Oznaczenia

Guid[] currentParticipants()

Parametry

Brak

Wynik

Funkcja currentParticipants zwraca listę z identyfikatorami wszystkich użytkowników aktualnie zaangażowanych w proces. Obejmuje to użytkowników, którzy są przypisani do zadania z jednym z następujących statusów:

  • Do opracowania
  • W opracowaniu
  • Zaległe
  • Zablokowany
  • Odebrane

Jeśli żaden użytkownik nie jest aktualnie zaangażowany w proces, zwracana jest pusta lista.

Źródła błędów

Jeśli funkcja currentParticipants jest używana w definicji działania, która nie jest powiązana z definicją procesu, ocena jest anulowana z błędem.

Przykłady

Wyrażenie size(currentParticipants()) zwraca liczbę aktualnie uczestniczących użytkowników.

Poniższy skrypt wyświetla nazwy wszystkich użytkowników aktualnie zaangażowanych w proces:

var users := currentParticipants();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

currentWorkers, activeParticipants, allParticipants
currentWorkers

Nazwa

currentWorkers

Opis

Zwraca wszystkich operatorów z otwartym zadaniem.

Oznaczenia

Guid[] currentWorkers()

Parametry

Brak

Wynik

Funkcja currentWorkers zwraca listę z identyfikatorami wszystkich użytkowników, którzy mają zadanie powiązane z działaniem w jednym z następujących statusów:

  • Do opracowania
  • W opracowaniu
  • Zaległe
  • Zablokowane
  • Odebrane

Jeśli działanie nie ma operatora z otwartym zadaniem, zwracana jest pusta lista.

Źródła błędów

Brak

Przykłady

Wyrażenie size(currentWorkers()) zwraca liczbę pracowników z otwartym zadaniem.

Wyrażenie currentWorkers() jako operator akcji następczej po przekroczeniu czasu może tworzyć nowe zadania dla wszystkich procesorów, którzy jeszcze nie ukończyli swoich zadań, ukończyli je nieprzetworzone lub przekazali je dalej.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników z otwartym zadaniem:

var users := currentWorkers();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

currentParticipants, activeWorkers, allWorkers, canceledWorkers, closedWorkers, doneWorkers, forwardedWorkers, overdueWorkers
doneWorkers

Nazwa

doneWorkers

Opis

Zwraca wszystkich operatorów z ukończonym zadaniem.

Oznaczenia

Guid[] doneWorkers()

Parametry

Brak

Wynik

Funkcja doneWorkers zwraca listę z identyfikatorami wszystkich użytkowników, którzy mają zadanie powiązane z działaniem ze statusem Zakończone. Jeśli działanie nie ma pracownika z ukończonym zadaniem, zwracana jest pusta lista.

Źródła błędów

Brak

Przykłady

Wyrażenie size(doneWorkers()) zwraca liczbę pracowników z ukończonym zadaniem.

Wyrażenie union(canceledWorkers(), doneWorkers()) zwraca wszystkich użytkowników, którzy ukończyli lub nie ukończyli swojego zadania.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników, którzy ukończyli zadanie:

var users := doneWorkers();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

activeWorkers, allWorkers, canceledWorkers, closedWorkers, currentWorkers, forwardedWorkers, overdueWorkers
forwardedWorkers

Nazwa

forwardedWorkers

Opis

Zwraca wszystkich operatorów z przekazanym zadaniem.

Oznaczenia

Guid[] forwardedWorkers()

Parametry

Brak

Wynik

Funkcja forwardedWorkers zwraca listę z identyfikatorami wszystkich użytkowników, którzy mają zadanie powiązane z działaniem o statusie Przekazane. Jeśli działanie nie ma operatora z przekazanym zadaniem, zwracana jest pusta lista.

Źródła błędów

Brak

Przykłady

Wyrażenie size(forwardWorkers()) zwraca liczbę pracowników z przekazanym zadaniem.

Poniższy skrypt wyświetla nazwy wszystkich użytkowników z przekazanym zadaniem do dziennika:

var users := forwardedWorkers();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

activeWorkers, allWorkers, canceledWorkers, closedWorkers, currentWorkers, doneWorkers, overdueWorkers
overdueWorkers

Nazwa

overdueWorkers

Opis

Zwraca wszystkich operatorów z zaleglym zadaniem.

Oznaczenia

Guid[] overdueWorkers()

Parametry

Brak

Wynik

Funkcja overdueWorkers zwraca listę z identyfikatorami wszystkich użytkowników, którzy mają zadanie powiązane z działaniem o statusie Zaległe. Jeśli działanie nie ma pracownika z zaległym zadaniem, zwracana jest pusta lista.

Źródła błędów

Brak

Przykłady

Wyrażenie size(overdueWorkers()) zwraca liczbę pracowników z zaległym zadaniem.

Poniższy skrypt wyświetla w dzienniku nazwy wszystkich użytkowników z zaleglym zadaniem:

var users := overdueWorkers();

for (u as Guid : users) {

echo(userName(u));

}

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

activeWorkers, allWorkers, canceledWorkers, closedWorkers, currentWorkers, doneWorkers, forwardedWorkers

Funkcje wyników działania (Funkcje wyników działania)

Funkcje wyników działania inicjują elementy okien dialogowych wprowadzania wyników działania i wprowadzania wyników procesu:

  • formatEntityField
  • formatSelectionField
  • setResultFieldEditable
  • setResultFieldVisible
formatEntityField

Nazwa

formatEntityField

Opis

Inicjuje pole encji w wynikach działania.

Oznaczenia

formatEntityField(String name, String ldtPath)

formatEntityField(String name, String ldtPath, HashMap<String, Object> presets)

Parametry

name to nazwa pola encji.

ldtPath jest nazwą logicznego typu danych (opis danych LDT) zawierającego ścieżkę.

presets to tablica hash z wartościami domyślnymi dla pomocy wejściowej logicznego typu danych.

Wynik

Polecenie formatEntityField inicjalizuje nazwę pola wyników typu Pole jednostki biznesowej lub Powiązanie jednostki biznesowej w oknie dialogowym wprowadzania wyników działania i wprowadzania wyników procesu.

Wstępne ustawienia tabeli hash zajmują pola wyboru w wyszukiwaniu wartości pomocy i uniemożliwiają wprowadzanie danych we wstępnie przypisanych polach wyboru (tylko do odczytu).

Źródła błędów

Jeśli logiczny typ danych pola wyniku i logiczny typ danych ldtPath nie są zgodne, wystąpi błąd wykonania.

Błąd runtime pojawia się również, jeśli nie można ustawić wartości domyślnych dla pomocy wejściowej.

Przykłady

formatEntityField(„partner”, „com.cisag.app.general:Partner.lt”) inicjuje pole encji partner zgodnie z logicznym typem danych com.cisag.app.general.Partner.

formatEntityField(„partner”, „com.cisag.app.sales:SalesOrderNumber.lt”, hashMap(customerNumber := „10010”, status:=2)

inicjalizuje pole encji partner zgodnie z logicznym typem danych com.cisag.app.sales.SalesOrderNumber i wstępnie przypisuje pola wyboru Zamawiający i Status z wartością 10010 i 2 dla statusu Zwolniony i chroni pola wyboru przed wprowadzeniem.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Funkcja oczekuje logicznego typu danych z dwukropkiem (:) oddzielonym od ścieżki i z przyrostkiem .lt. Na przykład logiczny typ danych com.cisag.app.sales.SalesOrderNumber jest przekazywany do funkcji jako ciąg znaków com.cisag.app.sales:SalesOrderNumber.lt.

Odpowiedni logiczny typ danych dla pola encji można zwykle znaleźć za pomocą klucza biznesowego encji biznesowej. Na przykład klucz biznesowy zamówienia sprzedaży składa się z dwóch atrybutów: rodzaju i numeru. Trudno jest wyszukać lub wybrać zamówienie sprzedaży za pomocą rodzaju, więc numer zamówienia sprzedaży jest bardziej obiecującym atrybutem.

Atrybut number posiada logiczny typ danych com.cisag.app.sales.SalesOrderNumber. Logiczny typ danych zawiera opis danych o tej samej nazwie com.cisag.app.sales.SalesOrderNumber. Wyszukiwanie .obj.SalesOrderFieldSearch jest przechowywane w opisie danych. W obiekcie deweloperskim tego wyszukiwania nazwy, które mają być używane w parametrze ustawień wstępnych, znajdują się w kolumnie Nazwy na zakładce podrzędnej OQL.

Tylko pola wyboru wyświetlane w oknie dialogowym wyszukiwania mogą być wstępnie przypisane. Jeśli w kolumnie Pozycja atrybutu wyszukiwania nie jest zapisana żadna sekwencja, atrybut zwykle nie może zostać wstępnie przypisany. Pola wyboru niektórych typów danych również nie mogą być wstępnie przypisane. Na przykład, aby wstępnie przypisać pole wyboru dla rodzaju zamówienia sprzedaży, lepiej jest użyć atrybutu typeCode jako ctxSalesOrderType, ponieważ łatwiej jest wstępnie przypisać ciąg znaków.

Nawet jeśli pomoc dotycząca wprowadzania danych może być ograniczona poprzez wstępne przypisanie pól wyboru, jednostki biznesowe, które nie są oferowane w pomocy dotyczącej wprowadzania danych, mogą być wprowadzane poprzez kopiowanie i wklejanie. Wstępne przypisanie pól wyboru nie zastępuje zatem sprawdzania poprawności za pomocą funkcji walidacji.

Odniesienia

formatSelectionField
formatSelectionField

Nazwa

formatSelectionField

Opis

Inicjuje dynamiczne pole wyboru w wynikach działania.

Oznaczenia

formatSelectionField(String name, HashMap values)

Parametry

name to nazwa pola wyboru.

values to tablica haszująca z nazwami i wartościami selekcji.

Wynik

Polecenie formatSelectionField inicjalizuje pole wyniku nazwy w oknie dialogowym wprowadzania wynikóe działań i wprowadzania wyników procesu.

Polecenie może być używane tylko w funkcji applyDefaults.

Źródła błędów

Nazwa pola wyników musi być zdefiniowana jako Dynamiczne pole wyboru lub Dynamiczne pole wielokrotnego wyboru.

Przykłady

formatSelectionField(„approvalStatus”, hashMap(APPROVED:=”Yes”, REJECTED:=”No”)) definiuje dwie wartości wyboru APPROVED i REJECTED dla dynamicznego pola wyboru approvalStatus.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

W funkcjach zatwierdzania i zamykania wynik można sprawdzić za pomocą zmiennej results.approvalStatus.

Odniesienia

formatEntityField
Przykład
Przykład: Działanie użytkownika dla osoby zależnej

Zdarzenie typu Zdarzenie użytkownika jest możliwe tylko dla jednostek biznesowych. Aby rozpocząć proces dla elementu zależnego, takiego jak pozycja zamówienia sprzedaży, pole wyboru dynamicznego Szczegóły jest inicjowane numerem i opisem artykułu pozycji zamówienia sprzedaży.

function applyDefaults()
{
/* initialize dynamic result field with line items */
var hm := new(HashMap);
var details := getCisObjectList(„SELECT FROM
com.cisag.app.sales.obj.SalesOrderDetail o WHERE o:header = ? ORDER
BY o:number”, list(parameters.object:guid), 100);
for (detail as
CisObject(com.cisag.app.sales.obj.SalesOrderDetail) : details) {
hm[format(detail:number, „0”)] := cast(String, detail:number) +
” ” + detail->Item:number + ” ” + detail->Item:description;
}
formatSelectionField(„details”, hm);
}

Poniższy warunek przejścia dezaktywuje zdarzenie użytkownika w menu kontekstowym, jeśli zamówienie sprzedaży nie zawiera pozycji:

parameters.object:detailCount > 0

setResultFieldEditable

Nazwa

setResultFieldEditable

Opis

Określa możliwość edycji pola wyników.

Oznaczenia

setResultFieldEditable(String name, Boolean editable)

Parametry

name to nazwa pola wyników.

editable to możliwość edycji pola wyniku.

Wynik

Polecenie setResultFieldEditable definiuje możliwość edycji nazwy pola wyniku w oknie dialogowym wprowadzania wyników działania i wprowadzania wyników procesu.

Polecenie może być używane tylko w funkcji applyDefaults.

Źródła błędów

Brak

Przykłady

setResultFieldEditable(„approvalStatus”, false) określa, że pole wyniku approvalStatus nie jest edytowalne.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setResultFieldVisible
setResultFieldVisible

Nazwa

setResultFieldVisible

Opis

Określa widoczność pola wyników.

Oznaczenia

setResultFieldVisible(String name, Boolean editable)

Parametry

name to nazwa pola wyników.

editable to widoczność pola wyników.

Wynik

Polecenie setResultFieldVisible ustawia widoczność nazwy pola wyniku w oknie dialogowym wprowadzania wyników działań i wprowadzania wynikow procesu.

Polecenie może być używane tylko w funkcji applyDefaults.

Źródła błędów

Brak

Przykłady

setResultFieldVisible(„approvalStatus”, false) określa, że pole wyniku approvalStatus nie jest wyświetlane.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setResultFieldEditable
Funkcje wiadomości e-mail i węzłów e-mail (funkcje e-mail)

Można użyć funkcji wiadomości e-mail i węzłów wiadomości e-mail, aby skonfigurować wysyłanie wiadomości e-mail w tych dwóch typach działań:

  • addMailAttachment
  • setMailLinkTarget
  • setMailRecipientsBCC
  • setMailRecipientsCC
  • setMailRecipientsTo
  • setMailReplyTo
  • setMailSender
  • setMailTemplate
addMailAttachment

Nazwa

addMailAttachment

Opis

Dołącza plik do wysyłanej wiadomości e-mail.

Oznaczenia

addMailAttachment(String fileName, Bytes content)

Parametry

fileName to nazwa pliku nadana załącznikowi w wiadomości e-mail.

content zawiera zawartość załączonego pliku.

Wynik

Polecenie addMailAttachment dołącza plik do wysyłanej wiadomości e-mail. Do obliczenia tego parametru można użyć funkcji readFile. To polecenie działa tylko w definicjach działań typu Węzeł e-mail lub Interaktywny węzeł e-mail.

Źródła błędów

Brak

Przykłady

addMailAttachment(„MyFileName.html”, readFile(„kstore://” + getDatabaseName() + „/Documents/Workflow/Mailtemplate_en.html”)) dołącza szablon wiadomości e-mail Mailtemplate_en.html z katalogu Workflow w Knowledge Store do wysyłanej wiadomości e-mail i nadaje załącznikowi nazwę MyFileName.html.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

readFile (więcej informacji znajduje się w dokumentacji Systemowy język skryptowy: Funkcje podstawowe)
setMailLinkTarget

Nazwa

setMailLinkTarget

Opis

Ustawia serwer aplikacji dla linków w wiadomościach e-mail.

Oznaczenia

setMailLinkTarget(String serverName)

Parametry

serverName to nazwa serwera aplikacji.

Wynik

Polecenie setMailLinkTarget ustawia serwer aplikacji, którego adres URL jest używany w generowanych linkach wysyłanych wiadomości e-mail. Przesłany serwer aplikacji jest ignorowany, jeśli serwery docelowe dla odbiorcy wiadomości e-mail zostały skonfigurowane przez użytkownika i jeśli serwer aplikacji dla odbiorcy nie został przypisany.

Jeśli polecenie setMailLinkTarget nie zostanie wywołane, serwer docelowy dla linków jest określany zgodnie z opisem w dokumentacji Silnik workflow.

Źródła błędów

Brak

Przykłady

setMailLinkTarget(getServerName()) używa serwera aplikacji bieżącego uruchomionego środowiska dla adresów URL w linkach w wysyłanych wiadomościach e-mail.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

W systemach z serwerem aplikacji nie jest wymagana dalsza konfiguracja. Serwerem docelowym jest serwer aplikacji, na którym uruchomiony jest silnik workflow.

Jeśli system składa się z kilku serwerów aplikacji, należy wprowadzić serwer aplikacji dialogu w polu Docelowy serwer dla atrybutów linka dla wszystkich serwerów aplikacji w aplikacji Panel System. Serwer ten jest używany dla wszystkich łączy w wiadomościach e-mail workflow wysyłanych przez serwer wiadomości.

Jeśli serwer docelowy jest zależny od użytkownika, można również przypisać serwery docelowe specyficzne dla roli workflow w aplikacji Role workflow.

Odniesienia

formatDescriptionHTML, serverLinkTarget (więcej informacji znajduje się w dokumentacji Język skryptowy systemu: Funkcje podstawowe), setMailTemplate
setMailRecipientsBCC

Nazwa

setMailRecipientsBCC

Opis

Ustawia odbiorcę BCC wysyłanej ‑wiadomości e-mail.

Oznaczenia

setMailRecipientsBCC(String mailAddress)

Parametry

mailAddress to adres e-mail odbiorcy BCC. Można wprowadzić wiele adresów e-mail oddzielonych przecinkiem.

Wynik

Polecenie setMailRecipientsBCC ustawia odbiorcę BCC (blind carbon copy) wysyłanej ‑wiadomości e-mail.

Źródła błędów

To polecenie działa tylko w definicjach działań typu Węzeł e-mail i Interaktywny węzeł e-mail.

Przykłady

setMailRecipientsBCC(„workflow@comarch.com”) ustawia odbiorcę BCC na workflow@comarch.com.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setMailRecipientsCC, setMailRecipientsTo, setMailReplyTo, setMailSendertsetMailTemplate
setMailRecipientsCC

Nazwa

setMailRecipientsCC

Opis

Ustawia odbiorcę CC wysyłanej ‑wiadomości e-mail.

Oznaczenia

setMailRecipientsCC(String mailAddress)

Parametry

mailAddress to adres e-mail odbiorcy CC. Można wprowadzić wiele adresów e-mail, oddzielając je przecinkiem.

Wynik

Polecenie setMailRecipientsCC ustawia odbiorcę CC (carbon copy) wysyłanej ‑wiadomości e-mail.

Źródła błędów

To polecenie działa tylko w definicjach działania typu Węzeł e-mail i Interaktywny węzeł e-mail.

Przykłady

setMailRecipientsCC(„workflow@comarch.com”) ustawia odbiorcę CC na workflow@comarch.com.

setMailRecipientsCC(userMailAddress(process.Initiator)) ustawia wyzwalacz procesu jako odbiorcę CC.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setMailRecipientsBCC, setMailRecipientsTo, setMailReplyTo, setMailSender, setMailTemplate
setMailRecipientsTo

Nazwa

setMailRecipientsTo

Opis

Ustawia odbiorcę ‑wiadomości e-mail, która ma zostać wysłana.

Oznaczenia

setMailRecipientsTo(String mailAddress)

Parametry

mailAddress to adres e-mail odbiorcy. Można wprowadzić wiele adresów e-mail, oddzielając je przecinkiem.

Wynik

Polecenie setMailRecipientsTo ustawia odbiorcę wysyłanej wiadomości ‑e-mail.

Jeśli procesorem działania nie jest system lub zlecenie przetwarzania, ale jeden lub więcej użytkowników, silnik workflow wysyła wiadomość e-mail do każdego z tych użytkowników. Silnik workflow używa adresu e-mail użytkownika przechowywanego w panelu systemu. Polecenie setMailReplyTo zastępuje wszystkie adresy e-mail operatorów działania adresem e-mail określonym w parametrze mailAddress.

Źródła błędów

To polecenie działa tylko w definicjach działania typu Węzeł e-mail i Interaktywny węzeł e-mail.

Przykłady

setMailRecipientsTo(„workflow@comarch.com”) ustawia odbiorcę na workflow@comarch.com.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setMailRecipientsBCC, setMailRecipientsCC, setMailReplyTo, setMailSender, setMailTemplate
setMailReplyTo

Nazwa

setMailReplyTo

Opis

Ustawia adres e-mail odpowiedzi na ‑wiadomość e-mail, która ma zostać wysłana.

Oznaczenia

setMailReplyTo(String mailAddress)

Parametry

mailAddress to adres e-mail odpowiedzi.

Wynik

Polecenie setMailReplyTo ustawia adres e-mail odpowiedzi na ‑wiadomość e-mail, która ma zostać wysłana.

Polecenie setMailReplyTo zastępuje ten adres e-mail odpowiedzi adresem e-mail określonym w parametrze mailAddress.

Źródła błędów

To polecenie działa tylko w definicjach działań typu Węzeł e-mail i Interaktywny węzeł e-mail.

Używany serwer pocztowy może uniemożliwiać użycie adresu e-mail odpowiedzi określonego za pomocą mailAddress. Jeśli to konieczne, należy sorawdzić dzienniki błędów serwera poczty, jeśli wiadomości e-mail z innym adresem e-mail odpowiedzi nie są dostarczane poprawnie.

Przykłady

setMailReplyTo(„workflow@comarch.com”) ustawia adres e-mail odpowiedzi na workflow@comarch.com.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setMailRecipientsBCC, setMailRecipientsCC, setMailRecipientsTo, setMailSender, setMailTemplate
setMailSender

Nazwa

setMailSender

Opis

Ustawia nadawcę wiadomości e-mail, która ma zostać wysłana.

Oznaczenia

setMailSender(String mailAddress)

Parametry

mailAddress to adres e-mail nadawcy.

Wynik

Polecenie setMailSender ustawia nadawcę wiadomości ‑e-mail, która ma zostać wysłana.

Mechanizm workflow używa adresu e-mail przechowywanego w dla nadawcy. Polecenie setMailSender zastępuje tego nadawcę adresem e-mail określonym w parametrze mailAddress.

Źródła błędów

To polecenie działa tylko w definicjach działań typu Węzeł e-mail i Interaktywny węzeł e-mail.

Używany serwer pocztowy może uniemożliwiać użycie adresu e-mail podanego w mailAddress jako nadawcy. Jeśli to konieczne, należy sprawdzić dzienniki błędów serwera poczty, jeśli wiadomości e-mail z innym adresem e-mail odpowiedzi nie są dostarczane poprawnie.

Przykłady

setMailSender(„workflow@comarch.com”) ustawia nadawcę na workflow@comarch.com.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setMailRecipientsBCC, setMailRecipientsCC, setMailRecipientsTo, setMailReplyTo, setMailTemplate
setMailTemplate

Nazwa

setMailTemplate

Opis

Zmienia szablon wiadomości e-mail, która ma zostać wysłana.

Oznaczenia

setMailtemplate(String templateName)

Parametry

templateName to nazwa szablonu wiadomości e-mail.

Należy w szczególności pamiętać, że należy podać nazwę szablonu wiadomości e-mail bez skrótu językowego i typu pliku. Język wyświetlania użytkownika określa, który z możliwych plików szablonów o określonej nazwie jest używany. Na przykład, jeśli templateName ma wartość Mailtemplate, a językiem wyświetlania użytkownika jest en, wówczas używany jest plik szablonu wiadomości e-mail Mailtemplate_en.html. Jeśli język treści jest przechowywany w ustawieniach użytkownika odbiorcy, dla którego nie ma szablonu wiadomości e-mail o określonej nazwie, wówczas używany jest plik szablonu wiadomości e-mail dla domyślnego języka systemu.

Wynik

Polecenie setMailTemplate zmienia szablon wiadomości e-mail, która ma zostać wysłana. Oznacza to, że można używać szablonów wiadomości e-mail, które różnią się od standardowego szablonu wiadomości e-mail. Polecenie działa nie tylko w definicjach działania typu Węzeł e-mail i Interaktywny węzeł e-mail, ale ma również zastosowanie we wszystkich typach działań dla powiadomień e-mail przez silnik workflow, np. w przypadku przekroczenia limitu czasu lub błędu w procesie.

Jeśli templateName jest pustym ciągiem znaków, używany jest pusty szablon wiadomości e-mail, który wykorzystuje tylko tekst zdefiniowany w opisie. Użycie pustego szablonu wiadomości e-mail może być szczególnie przydatne w przypadku definicji aktywności typu Węzeł e-mail i Interaktywny węzeł e-mail.

Jeśli templateName nie jest prawidłowym szablonem wiadomości e-mail, używany jest domyślny szablon wiadomości e-mail.

Źródła błędów

Brak

Przykłady

setMailTemplate(„Mailtemplate”) używa plików szablonów wiadomości e-mail Mailtemplate_en.html, Mailtemplate_en.html, Mailtemplate_fr.html itd.

setMailTemplate(„”) nie używa pustego szablonu wiadomości e-mail.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Rozdział Dostosowywanie szablonów wiadomości e-mail w dokumentacji Silnik workflow opisuje sposób dostosowywania szablonów wiadomości e-mail.

Domyślny szablon wiadomości e-mail jest zdefiniowany w stałej DEFAULT tabeli łańcuchowej com.cisag.sys.workflow.template.MailTemplates. Pusty szablon wiadomości e-mail jest zdefiniowany w stałej EMPTY.

Odniesienia

setMailRecipientsBCC, setMailRecipientsCC, setMailRecipientsTo, setMailReplyTo, setMailSender

Funkcje węzłów usług (funkcje węzłów usług)

Funkcje węzłów usług oferują opcje konfiguracji aktywności ze zleceniem przetwarzania jako obsługującym:

  • formatBatchJobResult
  • formatBatchJobOutputResult
  • getJobResults
  • isJobToBeScheduled
  • setJobName
  • setJobQueue
  • setJobServer
  • setJobUser
  • setJobVoucherTemplateOutputOptions
  • setJobWaitFinish
formatBatchJobResult

Nazwa

formatBatchJobResult

Opis

Tworzy tekst dla wyników przetwarzania w tle.

Oznaczenia

formatBatchJobResult(HashMap parameters)

Parametry

parameters są parametrami zdarzenia com.cisag.pgm.services.batch.BatchJobStateChanged.

Wynik

Opcjonalnie przetwarzanie w tle aktywnie informuje użytkownika o pomyślnym lub nieprawidłowym zakończeniu zadania przetwarzania. W takim przypadku w przeglądarce internetowej automatycznie pojawia się okno dialogowe powiadomienia, z którego można przełączyć się bezpośrednio do aplikacji Zlecenia przetwarzania lub Zlecenia wydania przy użyciu odpowiednich parametrów. Alternatywnie, powiadomienie może zostać wysłane za pośrednictwem zdarzenia workflow com.cisag.pgm.services.batch.BatchJobStateChanged. Aby wysłać powiadomienie o tej samej lub podobnej treści co dialog powiadomienia przy użyciu definicji działania, dostępne są dwie funkcje formatBatchJobResult i formatBatchJobOutputResult, które konwertują parametry zdarzenia bezpośrednio na tekst.

Źródła błędów

 

Przykłady

formatBatchJobResult(parameters) formatuje wynik przetwarzania w tle na podstawie parametrów zdarzenia com.cisag.pgm.services.batch.BatchJobStateChanged.

Kontekst

WF_REPOSITORY

Uwagi

 

Odniesienia

formatBatchJobOutputResult, isJobToBeScheduled
formatBatchJobOutputResult

Nazwa

formatBatchJobOutputResult

Opis

Tworzy tekst dla wyników przetwarzania w tle.

Oznaczenia

formatBatchJobOutputResult(HashMap parameters)

Parametry

parameters są parametrami zdarzenia com.cisag.pgm.services.batch.BatchJobStateChanged.

Wynik

Opcjonalnie przetwarzanie w tle aktywnie informuje użytkownika o pomyślnym lub nieprawidłowym zakończeniu zadania przetwarzania. W takim przypadku w przeglądarce internetowej automatycznie pojawia się okno dialogowe powiadomienia, z którego można przełączyć się bezpośrednio do aplikacji Zlecenia przetwarzania lub Zlecenia wydania przy użyciu odpowiednich parametrów. Alternatywnie, powiadomienie może zostać wysłane za pośrednictwem zdarzenia workflow com.cisag.pgm.services.batch.BatchJobStateChanged. Aby wysłać powiadomienie o tej samej lub podobnej treści co dialog powiadomienia przy użyciu definicji działania, dostępne są dwie funkcje formatBatchJobResult i formatBatchJobOutputResult, które konwertują parametry zdarzenia bezpośrednio na tekst.

Źródła błędów

 

Przykłady

formatBatchJobOutputResult(parameters) formatuje wynik wyjściowy przetwarzania w tle na podstawie parametrów zdarzenia com.cisag.pgm.services.batch.BatchJobStateChanged.

Kontekst

WF_REPOSITORY

Uwagi

 

Odniesienia

formatBatchJobResult, isJobToBeScheduled
getJobResult

Nazwa

getJobResult

Opis

Zwraca wynik połączonej aplikacji działającej w tle w postaci HashMap.

Oznaczenia

HashMap getJobResults()

Parametry

Brak

Wynik

Funkcja getJobResult zwraca wyniki działania aplikacji w tle zapisane w parametrze resultParmeters (należy zwrócić uwagę na pisownię!) w postaci HashMap. Wyniki te można wyświetlić na karcie Wyniki w oknie dialogowym właściwości zlecenia przetwarzania.

Jeśli obsługujący działanie nie jest zleceniem przetwarzania, polecenie nie ma żadnego efektu.

Źródła błędów

Funkcja getJobResult zwraca wiarygodny wynik tylko wtedy, gdy jest używana w funkcji zamykania, a działanie oczekuje na zlecenie przetwarzania, albo za pomocą polecenia setJobWaitFinish(true), albo poprzez aktywację pola wyboru Oczekuje na zadanie przetwarzania w definicji działania.

Przykłady

getJobResult() zwraca HashMap z wynikami aplikacji działającej w tle.

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

setJobWaitFinish
Przykład
Przykład: Analiza wygenerowanych list inwentaryzacyjnych

Akcja CreateCountLists (45) aplikacji działającej w tle com.cisag.app.inventory.physical.log.PhysicalInventoryCountProcessing zwraca listę z identyfikatorami GUID wygenerowanych list inwentaryzacyjnych:

{resultParmeters:CisParameterList:

{ResultNumberOfSuccessfulResults:1}

{ResultPhysicalInventoryCountListGuids:[[B@5570b91]}}.

W węźle usługi funkcja zamknięcia wywołuje funkcję getJobResults w celu oceny wygenerowanych list inwentaryzacyjnych i wysyła identyfikację wygenerowanych list do dziennika.

function close(state as Number)

{

var rp as HashMap;

var clGenerated as Number;

var clGuids as Guid[];

var cl as CisObject(com.cisag.app.inventory.physical.obj.PhysicalInventoryCountList);

rp := cast(HashMap, getJobResult().resultParmeters);

clGenerated := cast(Number, rp.ResultNumberOfSuccessfulResults);

clGuids := cast(Guid[], rp.ResultPhysicalInventoryCountListGuids);

echo(format(clGenerated, „0”) + ” count list(s) generated:”);

for (g : clGuids) {

cl := getByPrimaryKey(CisObject(com.cisag.app.inventory.physical.obj.PhysicalInventoryCountList), g);

echo(cl->PhysicalInventory->Type:code + „-” + cl->PhysicalInventory:number + ” ” + cl:number);

}

}

isJobToBeScheduled

Nazwa

isJobToBeScheduled

Opis

Zapytanie o status przetwarzania w tle.

Oznaczenia

Boolean isJobToBeScheduled(Guid guid)

Boolean isJobToBeScheduled(CisObject job)

Boolean isJobToBeScheduled(CisObjectReference job)

Parametry

guid to identyfikator GUID zlecenia przetwarzania.

job jest zleceniem przetwarzania lub odwołaniem do zlecenia przetwarzania.

Wynik

Funkcja isJobToBeScheduled wysyła zapytanie o stan przetwarzania w tle. Oceniany jest atrybut getActivityAbortMode. Funkcja zwraca wartość true, jeśli przetwarzanie w tle jest zaplanowane i może zostać wykonane.

Źródła błędów

Brak

Przykłady

isJobToBeScheduled(parameters.batchJobGuid) sprawdza, czy przetwarzanie w tle jest zaplanowane dla zaprogramowanego zdarzenia com.cisag.pgm.services.batch.BatchJobStateChanged (status zadania przetwarzania został zmieniony).

Kontekst

WF_ACTIVITY_REPOSITORY

Uwagi

 

Odniesienia

formatBatchJobResult, formatBatchJobOutputResult
setJobName

Nazwa

setJobName

Opis

Określa nazwę zleceniaprzetwarzania.

Oznaczenia

setJobName(String jobName)

Parametry

jobName to nazwa zlecenia przetwarzania.

Wynik

Polecenie setJobName określa nazwę zlecenia przetwarzania powiązanego z działaniem. Nazwa jest wyświetlana w kolumnie Zlecenie przetwarzania aplikacji Zlecenia przetwarzania. Specyfikacja może zatem uprościć ocenę zleceń przetwarzania. Jeśli nie określono nazwy, nie jest ona wyświetlana w aplikacji Zlecenia przetwarzania.

Jeśli obsługujący działanie nie jest zleceniem przetwarzania, polecenie nie ma żadnego efektu.

Źródła błędów

Polecenie setJobName musi zostać użyte w funkcji tworzenia, tj. przed przetwarzaniem w tle.

Przykłady

setJobName(definition:code + ” ” + activity:number) wyświetla identyfikację definicji działania i działania jako nazwę zlecenia przetwarzania.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Nazwa zlecenia przetwarzania jest ograniczona do 50 znaków.

Odniesienia

setJobQueue, setJobServer, setJobUser, setJobVoucherTemplateOutputOptions, setJobWaitFinish
setJobQueue

Nazwa

setJobQueue

Opis

Definiuje kolejkę przetwarzania dla przetwarzania w tle.

Oznaczenia

setJobQueue(String name)

Parametry

name to nazwa kolejki przetwarzania.

Wynik

Polecenie setJobQueue definiuje kolejkę przetwarzania, w której umieszczane jest zlecenie przetwarzania utworzone dla działania. Jeśli nie określono kolejki przetwarzania, używana jest kolejka przetwarzania zdefiniowana w funkcji konfiguracji Workflow management.

Jeśli opracowujący działanie nie jest zleceniem przetwarzania, polecenie nie ma żadnego efektu.

Źródła błędów

Polecenie setJobQueue musi zostać użyte w funkcji tworzenia, tj. przed przetwarzaniem w tle.

Użytkownik uruchamiający aplikację działającą w tle musi być uprawniony do korzystania z kolejki przetwarzania.

Przykłady

setJobQueue(„JOBQUEUE01”) określa, że zlecenie przetwarzania jest umieszczane w kolejce przetwarzania JOQUEUE01.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setJobName, setJobServer, setJobUser, setJobVoucherTemplateOutputOptions, setJobWaitFinish
setJobServer

Nazwa

setJobServer

Opis

Definiuje serwer aplikacji do przetwarzania w tle.

Oznaczenia

setJobServer(String serverName)

Parametry

serverName to nazwa serwera aplikacji.

Wynik

Polecenie setJobServer określa, na którym serwerze aplikacji wykonywana jest aplikacja działająca w tle powiązana z definicją działania. Jeśli nie określono kolejki przetwarzania, używany jest serwer aplikacji bieżącego środowiska uruchomieniowego. Z reguły jest to serwer aplikacji, na którym zdarzenie zostało wyzwolone.

Jeśli operator działania nie jest zleceniem przetwarzania, polecenie nie ma żadnego efektu.

Źródła błędów

Polecenie setJobServer musi zostać użyte w funkcji tworzenia, tj. przed przetwarzaniem w tle.

Serwer aplikacji musi być zgodny z kolejką przetwarzania.

Przykłady

setJobServer(„ADV620”) określa, że aplikacja działająca w tle jest wykonywana na serwerze aplikacji ADV620.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setJobName, setJobQueue, setJobUser, setJobVoucherTemplateOutputOptions, setJobWaitFinish
setJobUser

Nazwa

setJobUser

Opis

Definiuje użytkownika do przetwarzania w tle.

Oznaczenia

setJobUser(String userName)

setJobUser(Guid userGuid)

Parametry

userName to nazwa użytkownika.

userGuid jest identyfikatorem użytkownika.

Wynik

Polecenie setJobUser definiuje użytkownika, który ma wykonywać aplikację w tle. Jeśli nie określono użytkownika, do przetwarzania zadań używany jest użytkownik zdefiniowany w funkcji konfiguracji Workflow management.

Jeśli obsługujący działanie nie jest zleceniem przetwarzania, polecenie nie ma żadnego efektu.

Źródła błędów

Polecenie setJobUser musi zostać użyte w funkcji tworzenia, tj. przed przetwarzaniem w tle.

Użytkownik uruchamiający aplikację działającą w tle musi być upoważniony zarówno do uruchamiania aplikacji działającej w tle, jak i do korzystania z kolejki przetwarzania.

Przykłady

setJobUser(„ADMINISTRATOR”) uruchamia aplikację działającą w tle dla administratora.

setJobUser(event.userGuid) uruchamia aplikację działającą w tle dla użytkownika, który wywołał zdarzenie prowadzące do utworzenia działania.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

setJobName, setJobQueue, setJobServer,setJobVoucherTemplateOutputOptions, setJobWaitFinish
setJobVoucherTemplateOutputOptions

Nazwa

setJobVoucherTemplateOutputOptions

Opis

Używa standardowego szablonu dokumentu podczas tworzenia dokumentu.

Oznaczenia

setJobVoucherTemplateOutputOptions (Boolean voucherTemplateOutputOptions)

Parametry

voucherTemplateOutputOptions określa, czy standardowy szablon dokumentu jest używany do generowania dokumentów.

Wynik

Jeśli voucherTemplateOutputOptions ma wartość true, standardowy szablon dokumentu jest używany do tworzenia dokumentu. Jeśli wartość wynosi false, nie jest on używany. Domyślny szablon dokumentu to ten sam szablon, który jest proponowany, gdy dokument jest tworzony interaktywnie.

Jeśli aplikacja działająca w tle powiązana z działaniem nie generuje dokumentów, polecenie nie ma żadnego efektu.

Źródła błędów

Polecenie setJobVoucherTemplateOutputOptions musi zostać użyte w funkcji tworzenia, tj. przed przetwarzaniem w tle.

Jeśli voucherTemplateOutputOptions ma wartość false, nie jest używany żaden szablon dokumentu końcowego, co zwykle prowadzi do anulowania tworzenia dokumentu. Dlatego zaleca się, aby zawsze używać polecenia setJobVoucherTemplateOutputOptions(true) podczas generowania dokumentów.

Przykłady

setJobVoucherTemplateOutputOptions(true) określa, że standardowy szablon dokumentu jest używany podczas generowania dokumentu .

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

 

Odniesienia

 
setJobWaitFinish

Nazwa

setJobWaitFinish

Opis

Oczekuje na zakończenie połączonego zlecenia przetwarzania.

Oznaczenia

setJobWaitFinish(Boolean waitFinish)

Parametry

waitFinish określa, czy działanie zostanie zakończone dopiero po zakończeniu zadania przetwarzania powiązanego z działaniem (true), czy natychmiast (false).

Wynik

Jeśli wait ma wartość true, działanie zostanie zakończone dopiero po zakończeniu zadania przetwarzania powiązanego z działaniem. Oznacza to, że wyniki przetwarzania w tle mogą być analizowane w funkcji close. Jeśli zadanie przetwarzania zostało pomyślnie zakończone, parametr stanu w funkcji zamykania ma wartość 40 (DONE), w przeciwnym razie wartość 50 (CANCELED).

Polecenie setJobWaitFinish zastępuje wartość pola wyboru Oczekuje na zadanie przetwarzania w definicji działania.

Jeśli obsługujący działanie nie jest zleceniem przetwarzania, polecenie nie ma żadnego efektu.

Źródła błędów

Polecenie setJobWaitFinish musi zostać użyte w funkcji tworzenia, tj. przed przetwarzaniem w tle.

Przykłady

setJobWaitFinish(true) oznacza, że aktywność zostanie zakończona dopiero po zakończeniu powiązanego zadania przetwarzania.

setJobWaitFinish(false) powoduje, że działanie zostanie zakończone natychmiast po utworzeniu zadania przetwarzania w tle. W takim przypadku analiza wyników nie jest możliwa.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Wyniki działania aplikacji w tle można analizować za pomocą funkcji getJobResults.

Odniesienia

getJobResults

Funkcje dla węzłów usług internetowych

Węzeł usługi internetowej zapewnia funkcjonalność wywoływania usługi internetowej i analizowania wyników. Wywołanie jest realizowane przez stale połączoną aplikację działającą w tle com.cisag.sys.workflow.webservices.log.ServiceClient.

Funkcje węzłów usług sieciowych oferują opcje konfiguracji działań typu Węzeł usług sieci Web:

  • getServiceResponse
  • parseJson
  • parseXml
getServiceResponse

Nazwa

getServiceResponse

Opis

Zwraca parametr wyniku responseBody dla działania typu Węzeł usług sieci Web.

Oznaczenia

String getServiceResponse()

Parametry

Brak

Wynik

Funkcja zwraca parametr responseBody aplikacji działającej w tle com.cisag.sys.workflow.webservices.log.ServiceClient jako ciąg znaków.

Funkcja odpowiada wyrażeniu getJobResult()[„resultParmeters”][„responseBody”].

Źródła błędów

Brak

Przykłady

getServiceResponse() zwraca wynik działania typu Węzeł usług sieci Web.

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

Wynik może być analizowany tylko w funkcji close. Wynik jest dostępny tylko wtedy, gdy pole wyboru Oczekuje na zadanie przetwarzania jest aktywowane w definicji działania lub polecenie setJobWaitFinish(true) zostało wykonane w funkcji create w deklaracjach.

Odniesienia

parseJson, parseXml
Przykład
Poniższy przykład z definicji działania typu Węzeł usług sieci Web odpytuje wynik promise z usługi sieciowej. Podczas uruchamiania procesu workflow za pośrednictwem usługi sieciowej, promise składa się z identyfikatora guid uruchomionej instancji procesu. Wartość ta może być później wykorzystana do zapytania o status procesu i jego wynik.

function close(state as Number)

{

var response := parseJson(getServiceResponse());

if (size(response.errors) = 0) {

process.promise := response.promise;

}

}

parseJson

Nazwa

parseJson

Opis

Tworzy HashMap z ciągu znaków w formacie Java Script Object Notation (JSON).

Oznaczenia

HashMap parseJson(String body)

Parametry

body jest ciągiem znaków w JavaScript Object Notation (JSON).

Wynik

Funkcja parseJson zwraca HashMap z jednym elementem dla każdego parametru w body.

Źródła błędów

Jeśli ciąg znaków nie jest zapisany w JavaScript Object Notation (JSON) lub nie można go przeanalizować, zwracana jest wartość zero.

Przykłady

echo(parseJson(„{’a’:’hello’, 'b’:’world’}”) wyświetla na konsoli '{a=[S=hello], b=[S=world]}’.

echo(parseJson(„{a:1, b:2, c:3}”) wyświetla na konsoli '{a=[N=1], b=[N=2], c=[N=3]}’.

cast(String, parseJson(„{a:jeden, b:dwa, c:trzy}”).c) zwraca ciąg trzy.

Kontekst

WSZYSTKO

Uwagi

Można również użyć funkcji parseJson w definicji działania typu Wywołanie funkcji, aby przekazać złożone dane do definicji działania jako ciąg znaków.

Odniesienia

getServiceResponse, parseXml
Przykład
Poniższy przykład z definicji działania help.parseJson tworzy tablicę z ciągu znaków w JavaScript Object Notation (JSON) i wyświetla tablicę mieszającą na konsoli:

function create()

{

var p_text := parameters.TEXT;

var r_parsedText := parseJson(p_text);

echo(r_parsedText);

}

parseXml

Nazwa

parseXml

Opis

Tworzy tablicę z ciągu znaków w formacie XML (Extensible Markup Language).

Oznaczenia

HashMap parseXml(String body)

HashMap parseXml(String body, String expression)

Parametry

body jest ciągiem znaków w formacie XML (Extensible Markup Language), który ma zostać przeanalizowany.

parse jest węzłem w treści, który ma zostać przeanalizowany.

Wynik

Funkcja parseXml zwraca HashMap z każdym elementem XML jako listą i każdym znacznikiem XML jako elementem listy.

Źródła błędów

Jeśli ciąg znaków nie jest zapisany w Extensible Markup Language (XML) lub nie może być przeanalizowany, zwracana jest wartość zero.

Przykłady

echo(parseXml(„<rss version=’2.0′><channel><title>RSS Title</title></channel></rss>”)) wypisuje {#document=[L=[[H={rss=[L=[[H={channel=[L=[[H={title=[S=RSS Title]}]]]}]]}]]} na konsoli.

parseXml(„<rss version=’2.0′><channel><title>RSS Title</title></channel></rss>”, „rss/channel/title”) zwraca HashMap z zawartością {rss/channel/title=[S=RSS Title]}.

Kontekst

WSZYSTKO

Uwagi

 

Odniesienia

getServiceResponse, parseJson
Przykład
Poniższy przykład z definicji działania help.parseXml wyświetla wynik funkcji parseXml na konsoli:

function create()
{
var p_text := parameters.TEXT;
var p_pathExpression := parameters.PATH_EXPRESSION;
var r_parsedText := new(HashMap);

if (p_pathExpression = „”)
r_parsedText := parseXml(p_text);

 else
var r_parsedText := parseXml(p_text, p_pathExpression);

echo(r_parsedText);
}

Przykład
W następnym przykładzie analizowany jest plik eksportu w formacie XML dla partnera JOB:

<?xml version=”1.0″ encoding=”UTF-8″?>

<semiramis xmlns=”com.cisag.app.general.obj.Partner”

xsi:schemaLocation=”com.cisag.app.general.obj.Partner Partner.xsd”

created=”2020-07-09T17:18:43.616Z” locale=”en-US-

XMLSchemaCompliant” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-

instance” nlsMode=”SINGLE_LANGUAGE” dateTimeMode=”COMPACT”>

<Partner xmlns=”com.cisag.app.general.obj.Partner”>

 <number>JOB</number>

 <type>INTERNAL</type>

 <person>

 <givenName>Max</givenName>

 <middleNames>Headroom</middleNames>

 <surname>JOB</surname>

 <Salutation>

 <name>200</name>

 </Salutation>

 </person>

 <human>true</human>

 </Partner>

</semiramis>

Jeśli zmienna partner zawiera plik eksportu, wyrażenie parseXML(partner, „/semiramis/Partner/person/surname”} zwraca HashMap {/semiramis/Partner/person/surname=[S=JOB]}.

Polecenia dla wskaźników dynamicznych (Polecenia wskaźników dynamicznych)

Wskaźnik reprezentuje kluczową wartość techniczną lub biznesową, której wartość ma być monitorowana. Silnik systemu udostępnia już szereg wskaźników. Użytkownik może wprowadzić dodatkowe wskaźniki dynamiczne. Wskaźniki dynamiczne mogą być jednego z następujących typów:

  • Wskaźnik agregacji
  • Wskaźnik licznika
  • Wskaźnik liczby
  • Wskaźnik stanu

W przypadku wskaźników licznika i agregacji nie określono definicji działania dla wskaźnika. Jednak każda definicja działania może wyzwolić zdarzenie dla licznika lub wskaźnika agregacji, jeśli wystąpi określone zdarzenie, np. zdarzenie biznesowe. Zwykle ta definicja działania ma za zadanie jedynie wyzwolić zdarzenie dla wskaźnika. Nie jest jednak wymagana żadna dalsza reakcja ze strony użytkownika.

Można użyć dwóch poleceń dla wskaźników dynamicznych, aby uruchomić wskaźniki agregacji i licznika:

  • fireAggregatorIndicator
  • fireCounterIndicator

Więcej informacji na temat wskaźników można znaleźć w dokumentacji Wprowadzenie: Wskaźniki i Wskaźniki dynamiczne.

fireAggregatorIndicator

Nazwa

fireAggregatorIndicator

Opis

Uruchamia wskaźnik agregacji.

Oznaczenia

fireAggregatorIndicator(String dynamicIndicatorName, Number value)

Parametry

dynamicIndicatorName to nazwa wskaźnika agregacji.

value to wartość dodawana do wskaźnika agregacji.

Wynik

Polecenie fireAggregatorIndicator uruchamia wskaźnik agregacji dynamicIndicatorName z wartością value.

Źródła błędów

Wskaźnik agregacji dynamicIndicatorName musi być wcześniej utworzony jako wskaźnik dynamiczny.

Przykłady

fireAggregatorIndicator(„invoicedAmount”, 100) zwiększa wskaźnik agregacji invoicedAmount o 100.

fireAggregatorIndicator(„invoicedAmount”, parameters.newObject:netAmountDomestic:amount1) w definicji działania ze zdarzeniem typu Jednostka biznesowa dla faktury sprzedaży (com.cisag.app.sales.obj.CustomerInvoice) zwiększa wskaźnik agregacji invoicedAmount o całkowitą kwotę netto faktury sprzedaży. Ponieważ duże faktury sprzedaży są zapisywane w blokach, definicja działania powinna mieć następujące warunki przejścia:

Insert podtyp: parameters.newObject:number <>

Change podtyp: parameters.newObject:number <>  i parameters.oldObject:number = 

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Stan wskaźników agregacji i liczników można wizualizować w aplikacji Dashboard (od wersji 6.1).

Odniesienia

fireCounterIndicator
fireCounterIndicator

Nazwa

fireCounterIndicator

Opis

Zwiększa wartość wskaźnika licznika o liczbę 1.

Oznaczenia

fireCounterIndicator(String dynamicIndicatorName)

Parametry

dynamicIndicatorName to nazwa wskaźnika licznika.

Wynik

Polecenie fireAggregatorIndicator zwiększa wskaźnik licznika dynamicIndicatorName o liczbę 1.

Źródła błędów

Wskaźnik licznika dynamicIndicatorName musi być wcześniej utworzony jako wskaźnik dynamiczny.

Przykłady

fireCounterIndicator(„custeromerReturns”) zwiększa wskaźnik agregacji customerReturns o wartość 1, np. podczas wprowadzania zwrotu klienta lub podczas księgowania przyjęcia towaru ze zwrotu klienta.

Kontekst

WF_REPOSITORY, WF_OLTP

Uwagi

Stan wskaźników agregacji i zliczania można wizualizować w aplikacji Dashboard (od wersji 6.1).

Odniesienia

fireAggregatorIndicator
Wywołania funkcji dla wskaźników płatności i stanu

Wskaźniki dynamiczne mogą być jednego z następujących typów:

  • Wskaźnik agregacji
  • Wskaźnik licznika
  • Wskaźnik liczby
  • Wskaźnik stanu

Wskaźniki agregacji i wskaźniki licznika są wyzwalane przez dwie funkcje skryptowe fireAggregatorIndicator i fireCounterIndicator. Działanie generowane przez określone zdarzenie zwiększa wartość wskaźnika dynamicznego, tj. działają one zgodnie z zasadą push.

Z drugiej strony wskaźniki liczbowe i wskaźniki stanu działają zgodnie z zasadą pull. W razie potrzeby wskaźnik dynamiczny wyświetlany na pulpicie nawigacyjnym wywołuje definicję działania typu Wywołanie funkcji powiązaną ze wskaźnikiem. Definicja działania oblicza wartość lub stan i zwraca go za pomocą parametru wyniku. W przypadku wskaźnika liczbowego parametr wyniku musi mieć nazwę VALUE i być typu danych number.

Definicja działania dla wskaźnika liczbowego musi mieć parametr wyniku typu danych Ciąg znaków o nazwie STATUS. Definicja działania dla wskaźnika stanu musi mieć dwa parametry wyniku typu danych Ciąg znaków. Pierwszy parametr wyniku przekazuje status i musi mieć nazwę STATE. Drugi parametr wyniku przekazuje opis wartości stanu i musi mieć nazwę DESCRIPTION.

Przykład
Przykład: Liczba zaksięgowanych dzisiaj przyjęć towarów

Poniższe deklaracje określają liczbę zaksięgowanych dziś przyjęć towarów i zwracają wynik do wskaźnika dynamicznego za pośrednictwem zmiennej wynikowej VALUE.

const OrderStatus as valueSet(com.cisag.app.general.OrderStatus);

function create()

{

 /* Get time particles for OQL query */

 var fromDate := today();

 var fromYear := format(year(fromDate), „0000”);

 var fromMonth := format(month(fromDate), „00”);

 var fromDay := format(day(fromDate), „00”);

 /* Use default time zone ID of the system */

 var timeZoneId := timeZoneId(fromDate);

 

 /* create OQL statement */

 var OQL :=

 „SELECT COUNT(*) FROM

com.cisag.app.purchasing.obj.ReceiptOfGoods o ” +

 „WHERE o:date >= toTimestamp('” + timeZoneId + „'” +

 „, ” + fromYear + „, ” + fromMonth + „, ” + fromDay +

 „, 00, 00, 00, 0000) AND o:status = 3”;

 

 /* query the database */

 var receiptsOfGoodsPostedToday := cast(Number, getResultList(OQL,

list(), 1)[0][0]);

 

 /* return the result */

 result.VALUE := receiptsOfGoodsPostedToday;

}

Funkcje dla aplikacji kokpitu (Funkcje kokpitu)

Z pomocą funkcji createFilter można użyć do wstępnego przypisania pól wyboru w aplikacji kokpitu.

createFilter

Nazwa

createFilter

Opis

Tworzy filtr do wstępnego przypisania pola wyboru aplikacji kokpitu.

Oznaczenia

String createFilter(String filterType, Unknown filterValue)

String createFilter(String filterType, Unknown[] filterValue)

Parametry

filterType to typ danych filtra.

filterValue jest wartością filtra.

Wynik

Funkcja createFilter tworzy filtr do wstępnego przypisania pola wyboru aplikacji kokpitu. Oznacza to, że pola wyboru, które wymagają formatowania specyficznego dla użytkownika lub zależnego od języka, takie jak dzisiaj dla okresu czasu lub 2021-01-01 lub 01.01.2021 dla daty, mogą być również wstępnie przypisane przez działanie.

Źródła błędów

 

Przykłady

createFilter(„bin[54]”, loadPartner(„10010”)) wypełnia pole wyboru w aplikacji kokpitu linkiem do partnera 10010.

Kontekst

WF_ACTIVITY_REPOSITORY, WF_ACTIVITY_OLTP

Uwagi

 

Odniesienia

fireAggregatorIndicator

Poniższa tabela przedstawia niektóre z najczęściej używanych typów danych dla pól wyboru w aplikacjach typu lista:

Typ filtra Opis
Filter[str(x)] Ciąg znaków o długości x
Filter[str(x,ml)] Wielojęzyczny ciąg znaków o długości x
ValueSetFilter[vset] Pole wyboru
Filter[guid] GUID, np. identyfikator GUID użytkownika
Filter[stmp] Znacznik czasu z identyfikatorem GUID strefy czasowej
Filter[objStmp] Znacznik czasu ze strefą czasową za pośrednictwem obiektu biznesowego
Filter[bool] Wartość logiczna
Filter[int] Integer
Filter[long] Długa liczba całkowita
Filter[dec(7,4)] Liczba dziesiętna
Filter[byte] Wartość bajtu
Filter[part(PointInTime)] Mianowanie z dokładnością i kalendarzem
Filter[part(Duration)] Czas trwania
Filter[part(Quantity)] Ilość z identyfikatorem GUID jednostki
Filter[part(ForeignAmount)] Kwota z identyfikatorem GUID waluty
Filter[part(DomesticAmount)] Kwota w trzech walutach lokalnych
Filter[part(OrganizationalUnit)] Jednostka organizacyjna
Filter[part(person)] Osoba
Filter[bin(54)] Łączenie obiektów biznesowych

Czy ten artykuł był pomocny?