Komunikacja z obiektami wywoływanymi przez funkcje modułu proc odbywa się za pomocą zmiennych globalnych jpalio, przy czym dotyczy to zarówno przekazywania wartości do obiektów jak i zwracania wartości przez obiekty. Moduł proc nie uwzględnia zwracania przez obiekty wartości za pomocą funkcji return(), gdyż jest starszy niż funkcja return(). W celu zachowania kompatybilności z istniejącymi realizacjami procesów nie wprowadzono zmian dotyczących sposobu zwracania wartości przez obiekty.
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - identyfikator instancji, której stan należy odczytać lub zapisać
1 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
2 - null - odczyt stanu instancji, not null - zapis (zmiana) stanu instancji, wtedy w tym parametrze przekazywany jest nowy numer stanu, który należy ustawić instancji o numerze podanym w parametrze 0
3 - null przy odczycie stanu, bieżący (zmieniany) numer stanu przy zapisie, może zostać użyty np. w celu rejestracji historii
Zmienne ustawiane przed wywołaniem obiektu:
Zmienne możliwe do ustawienia przez obiekt (przy odczycie stanu):
Zmienne możliwe do ustawienia przez obiekt (przy zapisie stanu):
$// ------------------------------------------------------------------------------------
$// --- obiekt stanu -------------------------------------------------------------------
$// ------------------------------------------------------------------------------------
$=(@instanceId, $toLong($toString($0)))
$=(@processExtraParam, $toString($1))
$=(@newStateNr, $toLong($toString($2)))
$=(@oldStateNr, $toLong($toString($3)))
$if( $isNull($@newStateNr) ,{ $// odczyt stanu
$// dodawanie zgłoszenia przy pierwszym wyświetleniu instancji
$// dodawanie zgłoszenia można zrealizować także inaczej - np. poza procesem lub w obiekcie przejścia lub inicjalizacji stanu
$if( $==($@instanceId,0) ,{ $// identyfikator umowny oznaczający nie istniejący jeszcze w systemie dokument
$// dodaj zgłoszenie
$=(ProcessExecutionInstanceId, $xxx.addOrder(...) )
$// rejestracja dodania zgłoszenia w historii
$=(@BlackHole, $history.recordChange("orders", "add", $toLong($toString($ProcessExecutionInstanceId)), (String)null, " ") )
},{
$// odczyt stanu
$=(ProcessExecutionStateNr, $xxx.getOrderStateNumber($@instanceId) )
})
},{
$// zmiana stanu
$if( $<>($@instanceId,0) ,{ $// nie zmieniaj stanu nie istniejącego dokumentu
$// zmiana stanu
$xxx.setOrderStateNr($@instanceId, $@newStateNr)
$// rejestracja zmiany stanu w historii
$=(BlackHole, $history.recordChange("orders", "state_nr", $@instanceId, $toString($@oldStateNr), $toString($@newStateNr) ) )
$// ustawienie flagi zakończenia obiegu złoszenia
$=(@nextStateId, $proc.getStateIdByNumber($proc.getProcessExecutingProcessId(),$@newStateNr) )
$if( $proc.isStateLastInProcess($@nextStateId) ,{
$xxx.setOrderStatus($@instanceId, "F")
})
})
})
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - identyfikator instancji procesu, której dotyczy wywołanie obiektu
1 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
2 - kod błędu, który wystąpił podczas wykonania procesu
3 - domyślny tekst błędu
4 - identyfikator wykonywanego procesu
5 - numer stanu, w jakim znajduje się instancja procesu
6 - identyfikator wykonywanego przejścia (o ile przejście jest wykonywane, jeśli nie to null)
7 - identyfikator stanu, do którego prowadzi wykonywane przejście
Zmienne ustawiane przed wywołaniem obiektu: brak
Zmienne możliwe do ustawienia przez obiekt: brak
Kody błędów przekazywane w 2 parametrze wywołania (nazwy błędów można także pobrać wywołując funkcję $proc.getErrorName($toLong($toString($2))) ):
0 - wykonanie poprawne (bez błędów)
1 - nie podano id procesu
2 - błędne id procesu
3 - nie podano numeru instancji do wykonania
4 - nie ustawiono obiektu stanu dla wykonywanego procesu
5 - obiekt stanu nie ustawił numeru stanu w zmiennej 'ProcessExecutionStateNr'
6 - w procesie nie zdefiniowano numeru stanu, w jakim znajduje się instancja procesu
50 - obiektu stanu nie ustawił numeru stanu w zmiennej 'ProcessExecutionStateNr'
51 - w procesie nie zdefiniowano numeru stanu, w jakim znajduje się instancja procesu
52 - nie określono obiektu wyświetlającego dla stanu
53 - brak uprawnień do wyświetlenia stanu
54 - nie określono obiektu pozostania w stanie
55 - nie określono obiektu oczekiwania na zakończenie podprocesów dla stanu,
100 - nie określono stanu następnego dla przejścia
101 - nie można ustalić numeru stanu nastepnego dla przejścia
102 - brak uprawnień do wykonania przejścia
103 - błędne text_id przejścia (wyrzucane z funkcji executeTransition() ),
104 - reserved
105 - reserved
106 - reserved
107 - nieprawidłowy numer stanu następnego (wyrzucane z funkcji moveInstanceToState())
108 - reserved
109 - reserved
$// ------------------------------------------------------------------------------------
$// --- obiekt błędu -------------------------------------------------------------------
$// ------------------------------------------------------------------------------------
$=(@instanceId, $toLong($toString($0)))
$=(@processExtraParam, $toString($1))
$=(@errorCode, $toLong($toString($2)))
$=(@defaultErrorDescription, $toString($3))
$=(@processId, $toLong($toString($4)))
$=(@stateNr, $toLong($toString($5)))
$=(@transitionId, $toLong($toString($6)))
$=(@nextStateId, $toLong($toString($7)))
$=(@errorString, $+(["Wystąpił błąd nr ",$toString($@errorCode)," podczas wykonywania procesu: <br>",$@defaultErrorDescription,"."]))
$// nagłówek
$*xxx.header
<center>
<b>$@errorString</b><br>
</center>
<br><br>
<input type="button" name="action" value="Strona główna" onclick="window.location='$page.url("xxx.mainpage")';">
$// stopka
$*xxx.foot
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - charakter wywołania obiektu - "presentation_object"
1 - identyfikator instancji procesu, której dotyczy wywołanie obiektu
2 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
3 - numer stanu, w jakim znajduje się instancja procesu
4 - informacja wygenerowana przez obiekt on_transition_object w zmiennej ProcessExecutionTransitionInfo, (o ile przed wyświetleniem instancji było wykonywane przejście, w przeciwnym wypadku null)
5 - dodatkowy parametr stanu określony w tabeli stanów procesu (j_states.presentation_param)
6 - lista numerów pierwszych stanów podprocesów, które mogą zostać rozpoczęte w tym stanie. Jest to lista numerów oddzielonych średnikami (np.: "1;2;3"), więc do rozdzielenia numerów można użyć standardowego $split. Na ogół lista zawiera jedną wartość. Jeśli w danym stanie mogło by rozpocząć się więcej podprocesów niż jeden (lista z wieloma pozycjami), to do identyfikowania stanów początkowych podprocesów należy użyć identyfikatora tekstowego stanu (ew. nazwy lub numeru stanu - należy wybrać to pole, które dla różnych wersji tego samego procesu pozostanie niezmienione). Wartość przekazywana w tym parametrze pochodzi z j_states.starting_subpr_states
Zmienne ustawiane przed wywołaniem obiektu:
Zmienne możliwe do ustawienia przez obiekt: brak
$// ------------------------------------------------------------------------------------
$// --- obiekt prezentacji -------------------------------------------------------------
$// ------------------------------------------------------------------------------------
$=(@callType, $toString($0))
$if( $==($@callType,"presentation_object") ,{
$=(@instanceId, $toLong($toString($1)))
$=(@processExtraParam, $toString($2))
$=(@stateNr, $toLong($toString($3)))
$=(@lastTransitionInfo, $toString($4))
$=(@stateExtraParam, $toString($5))
$=(@subprocessesFirsStatesId, $toString($6))
$// ----------------------------------------------------------------------------
$// prosty formularz z możliwymi przejściami:
<form method="post" action="$page.url($currentPageCode())">
$// dodatkowe zmienne do przekazania
<input type="hidden" name="xxx" value="yyy">
$proc.displayHiddenFields()
$proc.displayTransitionsButtons("button"," ")
</form>
$// ----------------------------------------------------------------------------
$// formularz z odczytem i zapisem
$// ustawienie parametrów formularza podanych w parametrze
$proc.parseObjectParams($@stateExtraParam)
$// stateChangeFlag jest ustawiane na not null w obiekcie stanu, w części dotyczącej zmiany stanu
$if( $or($isNull($readFlag), $isNotNull($stateChangeFlag)) ,{
$// odczyt danych formularza
$*xxx.readFormData($@instanceId)
})
$// wyświetlenie formularza
<form method="post" action="$page.url($currentPageCode())">
<input type="hidden" name="readFlag" value="Y">
...
$proc.displayHiddenFields()
$proc.displayTransitionsButtons("button"," ")
</form>
})
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - charakter wywołania obiektu - "stay_in_state_object"
1 - identyfikator instancji procesu, której dotyczy wywołanie obiektu
2 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
3 - numer stanu, w jakim znajduje się instancja procesu
4 - informacja wygenerowana przez obiekt on_transition_object w zmiennej ProcessExecutionTransitionInfo, (o ile przed wyświetleniem instancji było wykonywane przejście, w przeciwnym wypadku null)
5 - dodatkowy parametr stanu określony w tabeli stanów procesu (j_states.stay_in_state_param)
Zmienne ustawiane przed wywołaniem obiektu:
Zmienne możliwe do ustawienia przez obiekt: brak
$// ------------------------------------------------------------------------------------
$// --- wyswietlenie pozostania w stanie -----------------------------------------------
$// ------------------------------------------------------------------------------------
$=(@callType, $toString($0))
$if( $==($@callType,"stay_in_state_object") ,{
$=(@instanceId, $toLong($toString($1)))
$=(@processExtraParam, $toString($2))
$=(@stateNr, $toLong($toString($3)))
$=(@lastTransitionInfo, $toString($4))
$=(@stateExtraParam, $toString($5))
$// ustawienie parametrów formularza podanych w parametrze
$proc.parseObjectParams($@stateExtraParam)
$// nagłówek
$*xxx.header
<center>
<b>Zgłoszenie zostało zapisane</b><br>
</center>
<br><br>
<input type="button" name="action" value="Strona główna" onclick="window.location='$page.url("xxx.mainpage")';">
$// stopka
$*xxx.foot
})
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - charakter wywołania obiektu - "state_init_object"
1 - identyfikator instancji procesu, której dotyczy wywołanie obiektu
2 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
3 - numer stanu, w jakim znajduje się instancja procesu
4 - informacja wygenerowana przez obiekt on_transition_object w zmiennej ProcessExecutionTransitionInfo, (o ile przed wyświetleniem instancji było wykonywane przejście, w przeciwnym wypadku null)
5 - dodatkowy parametr stanu określony w tabeli stanów procesu (j_states.init_param)
6 - numer poprzedniego stanu (z jakiego proces dotarł do bieżącego stanu)
Zmienne ustawiane przed wywołaniem obiektu:
Zmienne możliwe do ustawienia przez obiekt:
$// ------------------------------------------------------------------------------------
$// --- inicjalizacja stanu ------------------------------------------------------------
$// ------------------------------------------------------------------------------------
$=(@callType, $toString($0))
$if( $==($@callType,"state_init_object") ,{
$=(@instanceId, $toLong($toString($1)))
$=(@processExtraParam, $toString($2))
$=(@stateNr, $toLong($toString($3)))
$=(@lastTransitionInfo, $toString($4))
$=(@stateExtraParam, $toString($5))
$=(@previousStateNr, $toLong($toString($6)))
$// wykonaj czynności inicjalizujące instancję procesu w danym stanie, np.
$// dodawanie parametru zgłoszenia. Obiekt wykonywany jest tylko raz, przy
$// wejściu do danego stanu, a nie przy każdym wyświetleniu zgłoszenia w danym stanie.
...
})
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - charakter wywołania obiektu - "wait_for_subpr_condition"
1 - identyfikator instancji procesu, której dotyczy wywołanie obiektu
2 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
3 - numer stanu, w jakim znajduje się instancja procesu
4 - informacja wygenerowana przez obiekt on_transition_object w zmiennej ProcessExecutionTransitionInfo, (o ile przed wyświetleniem instancji było wykonywane przejście, w przeciwnym wypadku null)
5 - dodatkowy parametr stanu określony w tabeli stanów procesu (j_states.wait_for_subpr_param). Obiekt sprawdzania zakończenia podprocesów posiada parametr stanu wspólny z obiektem oczekiwania na zakończenie podprocesów
Zmienne ustawiane przed wywołaniem obiektu:
Zmienne możliwe do ustawienia przez obiekt:
$// ------------------------------------------------------------------------------------
$// --- sprawdzanie zakończenia podprocesów --------------------------------------------
$// ------------------------------------------------------------------------------------
$=(@callType, $toString($0))
$if( $==($@callType,"wait_for_subpr_condition") ,{
$=(@instanceId, $toLong($toString($1)))
$=(@processExtraParam, $toString($2))
$=(@stateNr, $toLong($toString($3)))
$=(@lastTransitionInfo, $toString($4))
$=(@stateExtraParam, $toString($5))
$if( podprocesy_zakończone ,{
$=(ProcessExecutionSubprocessesFinished, "Y")
},{
$=(ProcessExecutionSubprocessesFinished, null)
})
})
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - charakter wywołania obiektu - "wait_for_subpr_object"
1 - identyfikator instancji procesu, której dotyczy wywołanie obiektu
2 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
3 - numer stanu, w jakim znajduje się instancja procesu
4 - informacja wygenerowana przez obiekt on_transition_object w zmiennej ProcessExecutionTransitionInfo, (o ile przed wyświetleniem instancji było wykonywane przejście, w przeciwnym wypadku null)
5 - dodatkowy parametr stanu określony w tabeli stanów procesu (j_states.wait_for_subpr_param). Obiekt oczekiwania na zakończenie podprocesów posiada parametr stanu wspólny z obiektem sprawdzania zakończenia podprocesów
Zmienne ustawiane przed wywołaniem obiektu:
Zmienne możliwe do ustawienia przez obiekt: brak
$// ------------------------------------------------------------------------------------
$// --- oczekiwanie na zakończenie podprocesów -----------------------------------------
$// ------------------------------------------------------------------------------------
$=(@callType, $toString($0))
$if( $==($@callType,"wait_for_subpr_object") ,{
$=(@instanceId, $toLong($toString($1)))
$=(@processExtraParam, $toString($2))
$=(@stateNr, $toLong($toString($3)))
$=(@lastTransitionInfo, $toString($4))
$=(@stateExtraParam, $toString($5))
informacja o oczekiwaniu na zakończenia podprocesów, np. lista zakończonych i niezakończonych instancji podprocesów
})
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - charakter wywołania obiektu - "on_transition_object"
1 - identyfikator instancji procesu, której dotyczy wywołanie obiektu
2 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
3 - numer stanu, w jakim znajduje się instancja procesu
4 - numer następnego stanu, w jakim znajdzie się instancja procesu
5 - dodatkowy parametr stanu określony w tabeli stanów procesu (j_transitions.objects_param)
6 - lista numerów pierwszych stanów podprocesów, które mogą zostać rozpoczęte w tym stanie. Jest to lista numerów oddzielonych średnikami (np.: "1;2;3"), więc do rozdzielenia numerów można użyć standardowego $split. Na ogół lista zawiera jedną wartość. Jeśli w danym stanie mogło by rozpocząć się więcej podprocesów niż jeden (lista z wieloma pozycjami), to do identyfikowania stanów początkowych podprocesów należy użyć identyfikatora tekstowego stanu (ew. nazwy lub numeru stanu - należy wybrać to pole, które dla różnych wersji tego samego procesu pozostanie niezmienione). Wartość przekazywana w tym parametrze pochodzi z j_states.starting_subpr_states
Zmienne ustawiane przed wywołaniem obiektu:
Zmienne możliwe do ustawienia przez obiekt:
$// ------------------------------------------------------------------------------------
$// --- wykonanie przejścia ------------------------------------------------------------
$// ------------------------------------------------------------------------------------
$=(@callType, $toString($0))
$if( $==($@callType,"on_transition_object") ,{
$=(@instanceId, $toLong($toString($1)))
$=(@processExtraParam, $toString($2))
$=(@stateNr, $toLong($toString($3)))
$=(@nextStateNr, $toString($4))
$=(@stateExtraParam, $toString($5))
$=(@subprocessesFirsStatesId, $toString($6))
$if( dane_formularza_poprawne ,{
$// zapisz formularz
...
},{
$// błąd w danych formularza, nie zmieniaj stanu
$=(ProcessExecutionTransitionSuccessful, null)
$=(errorString, "Proszę podac wartość w polu ...")
})
})
Zobacz opis roli, jaką pełni obiekt.
Parametry wywołania:
0 - charakter wywołania obiektu - "condition_object"
1 - identyfikator instancji procesu, której dotyczy wywołanie obiektu
2 - dodatkowy parametr procesu przekazywany każdemu z używanych obiektów (trzeci argument wywołania funkcji executeProcess())
3 - numer stanu, w jakim znajduje się instancja procesu
4 - numer następnego stanu, w jakim znajdzie się instancja procesu
5 - dodatkowy parametr stanu określony w tabeli stanów procesu (j_transitions.objects_param)
6 - lista numerów pierwszych stanów podprocesów, które mogą zostać rozpoczęte w tym stanie. Jest to lista numerów oddzielonych średnikami (np.: "1;2;3"), więc do rozdzielenia numerów można użyć standardowego $split. Na ogół lista zawiera jedną wartość. Jeśli w danym stanie mogło by rozpocząć się więcej podprocesów niż jeden (lista z wieloma pozycjami), to do identyfikowania stanów początkowych podprocesów należy użyć identyfikatora tekstowego stanu (ew. nazwy lub numeru stanu - należy wybrać to pole, które dla różnych wersji tego samego procesu pozostanie niezmienione). Wartość przekazywana w tym parametrze pochodzi z j_states.starting_subpr_states
Zmienne ustawiane przed wywołaniem obiektu:
Zmienne możliwe do ustawienia przez obiekt:
$// ------------------------------------------------------------------------------------
$// --- warunek wyświetlania przejścia -------------------------------------------------
$// ------------------------------------------------------------------------------------
$=(@callType, $toString($0))
$if( $==($@callType,"condition_object") ,{
$=(@instanceId, $toLong($toString($1)))
$=(@processExtraParam, $toString($2))
$=(@stateNr, $toLong($toString($3)))
$=(@nextStateNr, $toString($4))
$=(@stateExtraParam, $toString($5))
$=(@subprocessesFirsStatesId, $toString($6))
$if( warunek_wyświetlania_przejścia ,{
$// można wyświetlić przejście
$=( ProcessExecutionTransitionPossible, "Y")
},{
$// nie można wyświetlić przejścia
$=( ProcessExecutionTransitionPossible, null)
})
})