====== XML dla Workflow ======
===== Ogólny opis zawartości pliku =====
W pliku występują następujące znaczniki:
  - <startEvent> - oznacza rozpoczęcie workflow i może zawierać formatkę
  - <userTask> - oznacza pojedyncze zadania i może zawierać formatkę
  - <documentation> - oznacza opis do zadania
  - <extensionElements> - zawiera opisy formatki
  - <activiti:formProperty> - zawiera opis pojedynczego pola z formatki

===== Przykład znacznika <startEvent> =====

<code xml>
<startEvent id="start" activiti:initiator="owner">
<extensionElements>
   <activiti:formProperty id="ID:firTytul;TYPE:FIRMATIC_FIELD;ARGS:FIR_NAME:Tytul;" name="Tytuł" type="string" />
   <activiti:formProperty id="ID:firDate_Realize;TYPE:FIRMATIC_FIELD;ARGS:FIR_NAME:Date_Realize;" name="Data realizacji" type="string" />
   <activiti:formProperty id="ID:firAPartnerIdent;TYPE:FIRMATIC_FIELD;ARGS:FIR_NAME:APartnerIdent;" name="Kontrahent symbol" type="string" />
   <activiti:formProperty id="ID:firAPartnerName;TYPE:FIRMATIC_FIELD;ARGS:FIR_NAME:APartnerName;" name="Kontrahent" type="string" />
   <activiti:formProperty id="ID:firDescription;TYPE:FIRMATIC_FIELD;ARGS:{FIR_NAME:Description, FIELD_OPT:TEXTAREA};" name="Opis" type="string" />
   <activiti:formProperty id="ID:firBtn;TYPE:FIRMATIC_SIGNAL;ARGS:KEY:306;" name="Pokaż WKT" type="string" />
</extensionElements>
</startEvent>
</code>

Wartości parametru **name** mogą być dowolne i nie mają wpływu na pracę workflow.
===== Opis znacznika <activiti:formProperty> =====
Jest to najważniejszy znacznik w workflow i definiuje on co będzie widział użytkownik na formatce.
Istotne znaczenie mają atrybuty id i type.

Atrybuty dodatkowe:
  * writable - określa możliwość zapisu
  * readable - określa możliwość widoczności
  * default - określa wartość początkową pola
  * required - określa wymagalność pola

Znaczenie poszczególnych wartości w atrybutach zostanie pokazana na przykładach:
== Pole firmaticowe ==
<code xml>
<activiti:formProperty id="ID:firTytul;TYPE:FIRMATIC_FIELD;ARGS:FIR_NAME:Tytul;" name="Tytuł" type="string" />
</code>

  * ID - jest nazwą dowolną używaną tylko w workflow
  * TYPE - FIRMATIC_FIELD
  * ARGS - FIR_NAME:Tytul - **Tytul** jest to nazwa pola znajdująca się w xmlu
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).

== Pole firmaticowe wyświetlane jako TextArea ==
<code xml>
<activiti:formProperty id="ID:firDescription;TYPE:FIRMATIC_FIELD;ARGS:{FIR_NAME:Description, FIELD_OPT:TEXTAREA};" name="Opis" type="string" />
</code>
Dodatkowy parametr w ARGS to FIELD_OPT.

== Pole firmaticowe typu przycisk ==
Pole to tworzy na formatce przycisk o dowolnej nazwie. Jego kliknięcie powoduje wysłanie komunikatu do Firmatica.
<code xml>
<activiti:formProperty id="ID:firBtn;TYPE:FIRMATIC_SIGNAL;ARGS:{KEY:1097,CODEPROC:121};" name="Oferta" type="string" />
</code>

  * TYPE - FIRMATIC_SIGNAL
  * KEY - kod klawisza który ma być wysłany
  * CODEPROC - codeproc który ma być dołączony do klawisza

== Pole workflow typu string ==
<code xml>
<activiti:formProperty id="ID:wp_o_1_comment;" name="Komentarz" type="string" required="true" />
</code>

== Pole workflow typu string - wyświetlane jako TextArea ==
<code xml>
<activiti:formProperty id="ID:wp_o_1_comment;TYPE:TEXTAREA;" name="Komentarz" type="string" required="true" />
</code>

== Pole wyboru użytkownika ==
<code xml>
<activiti:formProperty id="ID:PTP_boss;TYPE:FIRMATIC_USER;" name="Sekcja PTP" type="string" variable="PTP_boss" required="false" default="user:tadkob" />
</code>
W powyższym przykładzie wykorzystano atrybut variable, który zawsze musi mieć wartość taką jak "ID". Jest on używany do przypisywania zadań do użytkowników za pomocą zmiennych.

== Pole wyboru użytkownika z opcją DW ==
Jest to specjalne pole, które umożliwia dodanie nowej linii firmaticowej dla użytkownika, nawet jeżeli nie jest on przypisany do żadnego zadania.
<code xml>
<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>

== 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ę.
<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" />
</code>
