Różnice między wybraną wersją a wersją aktualną.
|
opis_plikow_xml_workflow [2015/10/20 11:00] marcin |
opis_plikow_xml_workflow [2015/10/20 11:35] (aktualna) marcin |
||
|---|---|---|---|
| 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" | ||