Różnice między wybraną wersją a wersją aktualną.
opis_plikow_xml_workflow [2015/10/20 09:51] marcin |
opis_plikow_xml_workflow [2015/10/20 11:35] (aktualna) marcin |
||
---|---|---|---|
Linia 46: | Linia 46: | ||
* ID - jest nazwą dowolną używaną tylko w workflow | * ID - jest nazwą dowolną używaną tylko w workflow | ||
* TYPE - FIRMATIC_FIELD | * TYPE - FIRMATIC_FIELD | ||
- | * ARGS - FIR_NAME:Tytul - **Tytul** jest to nazwa pola znajdująca się w xmlu | + | * ARGS - FIR_NAME:Tytul - **Tytul** jest to nazwa pola znajdująca się w xmlu z firmatica |
W tym polu można używać atrybutu writable w celu ograniczenia edytowalności pola (tzn. z pola edytowalnego w firmaticu można zrobić nieedytowalne w workflow). | W tym polu można używać atrybutu writable w celu ograniczenia edytowalności pola (tzn. z pola edytowalnego w firmaticu można zrobić nieedytowalne w workflow). | ||
Linia 92: | Linia 92: | ||
<activiti:formProperty id="ID:dw_1;TYPE:FIRMATIC_USER;ARGS:DW:TRUE;" name="DW PT" type="string" variable="dw_1" required="false" writable="true" default="user:b" /> | <activiti:formProperty id="ID:dw_1;TYPE:FIRMATIC_USER;ARGS:DW:TRUE;" name="DW PT" type="string" variable="dw_1" required="false" writable="true" default="user:b" /> | ||
</code> | </code> | ||
+ | * DW:TRUE - oznacza, że pole jest do wiadomości | ||
+ | * ARGS:{DW:TRUE, INNER_LIST:szef} - można również zdefiniować listę z której wybiera się pracowników | ||
== Pole wyboru użytkownika ze wskazaniem grupy oraz z wartością domyślną == | == Pole wyboru użytkownika ze wskazaniem grupy oraz z wartością domyślną == | ||
Jest to pole wyboru użytkownika ze specjalnymi opcjami. Pierwszą z nich wskazanie listy z której można wybierać użytkowników. Drugim elementem jest wartość domyślna. Może ona zarówno określać pojedynczego użytkownika jak i całą listę. | Jest to pole wyboru użytkownika ze specjalnymi opcjami. Pierwszą z nich wskazanie listy z której można wybierać użytkowników. Drugim elementem jest wartość domyślna. Może ona zarówno określać pojedynczego użytkownika jak i całą listę. | ||
<code xml> | <code xml> | ||
- | <activiti:formProperty id="ID:user;TYPE:FIRMATIC_USER;ARGS:INNER_LIST:PTP-330;" name="Sekcja PTP-330" type="string" variable="user" required="false" writable="true" default="list:PTP-330" /> | + | <activiti:formProperty id="ID:user;TYPE:FIRMATIC_USER;ARGS:INNER_LIST:PTP-330;" name="Sekcja PTP-330" type="string" variable="user" required="false" writable="true" default="user:b" /> |
</code> | </code> | ||
+ | * INNER_LIST:PTP-330 - wybór będzie tylko z listy PTP-330 | ||
== Pole wyświetlające linie 2 spraw == | == Pole wyświetlające linie 2 spraw == | ||
Linia 122: | Linia 125: | ||
* TYPE - FIRMATIC_LINEAFF2_LOG | * TYPE - FIRMATIC_LINEAFF2_LOG | ||
* NUM:0 - lepiej stosować konwencję i dać 0 | * NUM:0 - lepiej stosować konwencję i dać 0 | ||
- | * ARGS2:{firDescription} - oznacza jakie pola moją być brane do historii zmian | + | * ARGS2:{firDescription} - oznacza jakie pola mają być brane do historii zmian |
== Pole z warunkową walidacją == | == Pole z warunkową walidacją == | ||
Linia 130: | Linia 133: | ||
* REQUIRED_IF_EXPR - pole to będzie wymagane jeżeli zostanie spełnione wyrażenie | * REQUIRED_IF_EXPR - pole to będzie wymagane jeżeli zostanie spełnione wyrażenie | ||
+ | == Wartości domyślne w polach z użytkownikami == | ||
+ | * default="list:szef" - domyślnie lista szef (= wszyscy pracownicy z tej listy) | ||
+ | * default="user:b" - domyślnie tylko jeden pracownik | ||
+ | |||
+ | ===== Przepływy i warunki ===== | ||
+ | Ogólnie o przepływach i warunkach należy przeczytać w dokumentacji do Activiti. | ||
+ | |||
+ | W **startEvent** lub **userTask** można zdefiniować pole logiczne lub enum które będzie użyte w sterowaniu przepływem. | ||
+ | |||
+ | ==== Przepływ po zmiennej logicznej ==== | ||
+ | Najpierw w **userTask** definiujemy zmienną logiczną: | ||
+ | <code xml> | ||
+ | <activiti:formProperty id="ID:is_claim_valid;" name="Czy reklamacja zasadna?" type="boolean" variable="is_claim_valid" /> | ||
+ | </code> | ||
+ | * variable="is_claim_valid" - pozwala na odnoszenie się do tej zmiennej w innych punktach xml-a | ||
+ | Następnie możemy zdefiniować warunek: | ||
+ | <code xml> | ||
+ | <sequenceFlow sourceRef="do_work" targetRef="after_worker_decision" /> | ||
+ | | ||
+ | <exclusiveGateway id="after_worker_decision" /> | ||
+ | <sequenceFlow sourceRef="after_worker_decision" targetRef="claim_denied_work"> | ||
+ | <conditionExpression xsi:type="tFormalExpression">${is_claim_valid == 'false'}</conditionExpression> | ||
+ | </sequenceFlow> | ||
+ | | ||
+ | <sequenceFlow sourceRef="after_worker_decision" targetRef="claim_accept_work"> | ||
+ | <conditionExpression xsi:type="tFormalExpression">${is_claim_valid == 'true'}</conditionExpression> | ||
+ | </sequenceFlow> | ||
+ | </code> | ||
+ | |||
+ | ==== Przepływ po zmiennej enum ==== | ||
+ | Najpierw w **userTask** definiujemy zmienną enum: | ||
+ | <code xml> | ||
+ | <activiti:formProperty id="ID:is_to_board_approval;DEFAULT:;" name="Czy skierować do zarządu?" type="enum" required="true" variable="is_to_board_approval"> | ||
+ | <activiti:value id="toBoard" name="Skierować do zarządu (ostateczne zatwierdzenie)" /> | ||
+ | <activiti:value id="sendToWorker" name="Do kolejnej osoby (opis pozycji)" /> | ||
+ | </activiti:formProperty> | ||
+ | </code> | ||
+ | * variable="is_to_board_approval" | ||
+ | Następnie możemy zdefiniować warunek: | ||
+ | <code xml> | ||
+ | <sequenceFlow sourceRef="describe_invoice" targetRef="after_describe_decision" /> | ||
+ | <exclusiveGateway id="after_describe_decision" default="after_describe_decision_flow3" /> | ||
+ | |||
+ | <!-- do zatwierdzenia do zarządu --> | ||
+ | <sequenceFlow id="after_describe_decision_flow1" sourceRef="after_describe_decision" targetRef="board_approval"> | ||
+ | <conditionExpression xsi:type="tFormalExpression">${is_to_board_approval == 'toBoard'}</conditionExpression> | ||
+ | </sequenceFlow> | ||
+ | |||
+ | <!-- do kolejnego pracownika --> | ||
+ | <sequenceFlow id="after_describe_decision_flow3" sourceRef="after_describe_decision" targetRef="describe_invoice"> | ||
+ | </sequenceFlow> | ||
+ | </code> | ||
+ | * z uwagi na default="after_describe_decision_flow3", nie trzeba definiować warunku przepływu w <sequenceFlow id="after_describe_decision_flow3" |