> For the complete documentation index, see [llms.txt](https://bpmflow.gitbook.io/project/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bpmflow.gitbook.io/project/application-manuals/backoffice-manual/main-menu/processes/define-new-process/bizagi-extended-attributes.md).

# Bizagi Extended Attributes

&#x20;Bizagi allow to add extended attributes to Tasks. There are special attributes thar are used in **Bpm Flow**.

![](https://3974112602-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH4gGgyMb1_fhOg782r%2F-LHABX9vjpvQGhWiKG5l%2F-LHACHvACikR3Rh8extn%2Fextended-attributes.jpg?alt=media\&token=4b766b45-7a7e-4750-9c46-7e3c42cfa30e)

**Extended Attribute \[*****isPreviousFormReusable*****]**\
By default this value is **true**. If the **BPM Process** has a cycle and we are returning a previous task (already done once) then the ***BpmFlow engine*** will use the same Orbeon Form/Seaside Component (not a new one). If it is required to have a new task each time we are returning to a task then this has to be set to **false**.

**Extended Attribute \[*****seasideComponent*****]**\
If it is **present** the ***BpmFlow engine*** will use a SeasideComponent to render the task. And the name of the component is the value of the attribute.\
If it is **absent** the ***BpmFlow engine*** will use an ***Orbeon Form*** to render the task. The form's name is the task's name.

**Extended Attribute \[*****previousFields*****]**\
This option is used when a form need to show a value of a previous form in the process. Previous fields are separated by blank space (name surname id). Adding these fields will make the ***Bpm Flow*** to send their values in token interchange. In the host form these fields must be read only.

**Extended Attribute \[*****executionTime*****]**\
Each task can be set with the **expected execution time**. There are three supported type of **expected execution time**:

* In Days
* In Hours
* In Minutes

When a task instance is created and it has a **expected execution time** then a warning will be displayed to the user.\
**Expected Execution Time** it takes three arguments from **Bizagi** field:

* Type (days, hours, minutes) + Value
* Warning Threshold
* Calendar name.

The warning will be show when \[*Warning Threshold*] is reached by counting time from task creation. To count time a \[*Calendar*] is used.

Possible configurations:\
***5d,70%,Default***\
This will set a In Days (count) with 5 days as value and with a threshold of 70% (a warning will be show after the 70% of time to finish the task is consumed). The calendar named 'Default' will be used to count days.

***8h,50%,Default***\
This will set a In Hours (count) with 80 hours as value and with a threshold of 50% (a warning will be show after the 50% of time to finish the task is consumed). The calendar named 'Default' will be used to count hours.

**Extended Attribute** **\[*****assignationPolicy*****]**\
Each Bpm Process Definition can have an assignation policy to automatically assign tasks to users. The assignation policy can be set in **Backoffice** application or can be set inside **Bizagi**®. By default all Bpm Process Definitions have a none assignation policy so users must peek available task to them. To set assigantion policy in **Bizagi**® create a extended attribute named "**assignationPolicy**" which can have the following values:

* BpmNoneAssignationPolicy (default no need to be set)
* BpmFairAssignationPolicy
* BpmRoundRobinRoleAssignationPolicy
* BpmRoundRobinTaskAssignationPolicy

**Extended Attribute&#x20;*****\[reuseExternalObjectOfTaskNamed]***\
Each BPM task has it own Orbeon Form or Business Objects as its ***externalObject***. The problem with this approach is that two different roles can NOT share the same ***externalObject*** and in some context this scenario is very desirable.\
In order to share the same Form between two roles this extended attribute has to be set. When a task has this extended attribute set the **execution engine** will search for an already created ***externalObject*** of the task named ***reuseExternalObjectOfTaskNamed*** and will enforce ***externalObject*** in this task.\
In this way two different tasks and users can share the same Orbeon Form or any Business Object.

This **feature is very powerful** because enable another different way of executing **BPM Process**. Until now a **BPM Process** was a collection of different Forms/Business Objects created by different users. Now a **BPM Process** can be also viewed as a (unique) Form/Business Object going through a path where different users and roles share the very same Form/Business Object.

**Extended Attribute&#x20;*****\[runOnBackground]***\
This extended attribute is only applicable to **BPM Scripts**. When the value of this attribute is absent o **different** to \[*true*] then the **Scripts** is executed online. This is the best option for small and simple **Scripts**. If the **Script** is long or very complex this extended attribute should be \[*true*]. At runtime the **BPM Execution Engine** will detect this flag and the **Script** will be placed in a special collection to be executed by a separate OS process (this OS process is created by [start-deferred-scripts-loop.sh](https://github.com/brunobuzzi/BpmFlow/blob/master/start-deferred-scripts-loop.sh)). The execution of the **Script** will have **no** impact on the **Web Server** processes.\
&#x20;<br>
