Narzędzia użytkownika

Narzędzia witryny


opis_plikow_xml_workflow

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

opis_plikow_xml_workflow [2015/10/20 09:47]
marcin
opis_plikow_xml_workflow [2015/10/20 11:35] (aktualna)
marcin
Linia 2: Linia 2:
  
 Jako repozytorium i silnik bpmn używamy Activiti. Jako repozytorium i silnik bpmn używamy Activiti.
-Poniższa dokumentacja jest rozszerzeniem http://​www.activiti.org/​userguide/​index.html i należy się z nią wcześniej zapoznać.+Poniższa dokumentacja jest rozszerzeniem http://​www.activiti.org/​userguide/​index.html#​bpmn20 ​i należy się z nią wcześniej zapoznać.
  
 ===== Ogólny opis zawartości pliku ===== ===== Ogólny opis zawartości pliku =====
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"​
opis_plikow_xml_workflow.1445327271.txt.gz · ostatnio zmienione: 2015/10/20 09:47 przez marcin