Szczegółowy opis obiektów wykorzystywanych w procesie oraz szablony obiektów

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.

Obiekt stanu - szczegóły

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")
    })
  })
  
})

 

Obiekt błędu - szczegóły

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

 

Obiekt prezentacji - szczegóły

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>
  
})

 

Obiekt pozostania w stanie - szczegóły

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
  
})

 

Obiekt inicjalizacji stanu - szczegóły

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.
  ...
  
})

 

Obiekt sprawdzania zakończenia podprocesów - szczegóły

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)
  })

})

 

Obiekt oczekiwania na zakończenie podprocesów - szczegóły

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
   
})

 

Obiekt przejścia - szczegóły

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 ...")
  })
  
})

 

Obiekt warunku - szczegóły

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)
  })
  
})