A Goal Model is a hierarchy of Achieve and Maintain Goals, and Plans and their connections. A Goal specifies what needs to be achieved while the Plans of the Goal specify how the Goal can be achieved.
When a model instances starts its process instances, the GO-BPMN process instances are executed as follows:
Important: Since pre-conditions are evaluated continuously, they must not perform any assignments. Such assignments can cause performance issues.
If a Plan fails, another Plan is triggered. If all Plans fail, the parent Goal fails.
Goals and Plans are considered special variables and as such can be accessed by their name directly.
Achieve Goals represent explicit objectives or states, such as, placing an order, producing a car, sending a message, etc. that need to be achieved either by the process or a goal: If the goal is a top goal, it is the goal of the process; if it is a subgoal of another goal, it is a partial goal required by the parent goal.
An Achieve Goal exist in a goal hierarchy: it may have no parent modeling element or it can have another Achieve Goal as its super-Goal. It can have one or multiple child elements; the child elements can be either Achieve Goals or Plans and are connected with the Decomposition flow. It is not possible to decompose an Achieve Goal into both Goals and Plans.
When executed, Achieve Goals go through a set of statuses as part of their life cycle).
An Achieve Goal can define the following:
true
, the Goal becomes Running. Important: Since pre-conditions are evaluated continuously, they must not perform any assignments since this can cause performance issues.
true
, the Achieve Goal, its sub-Goals and Plans become Deactivated immediately.When a GO-BPMN process is instantiated, all top Achieve Goals of the process instance become ready. If their pre-conditions evaluate to true
, achieve goals becomes running:
A running Achieve Goal can become either achieved or failed:
The status of an Achieve Goal can be in addition influence by the deactivation and activation mechanism.
In a goal model, Decomposition represents a relationship used either for detailing a Goal to its sub-Goals, or specifying how a Goal can be achieved by its Plans. It establishes acyclic oriented relationships between:
During execution the following rules apply:
true
or the first randomly-chosen Plan). When a Plan is Achieved, its parent Achieve Goal becomes achieved or its parent Maintain Goal becomes ready.A Maintain Goal serves to ensure that a condition is met while the GO-BPMN process or an Achieve Goal is running. Should the condition become false, the objective of the Maintain Goal is to remedy the situation and make the condition true again.
The process and the Achieve Goal, which the Maintain Goal depends on, are referred to as the scope. The scope is defined:
A Maintain Goal is always a top Goal and can be decomposed in Plans or Achieve Goals.
Example: The maintain condition defines the minimum amount of material that must be on stock at all times. If the amount on stock is lower than the defined amount, the condition becomes false, and the Maintain Goal is activated: Plans or sub-Goals attached to the Maintain Goal provide for restocking.
If the scope is the parent process, the maintain goal becomes Ready immediately on process start: It does not enter the inactive state.
When the maintain condition becomes false, the Maintain Goal becomes Running: its sub-goals become Ready or one of its Plans becomes Running. The maintain condition is not checked while the Maintain Goal is Running.
When the sub-tree execution of a Maintain Goal is finished, the following can occur:
If the scope is a Process which is Finished, the Inactive state is only transient and the Maintain Goal becomes Deactivated.
A Maintain Scope connects a Maintain Goal with its Achieve Goal. The connected Achieve Goal is the scope of a Maintain Goal.
A Maintain Goal can have only one Maintain Scope. If you require a more diverse Maintain Scope, consider using maintain conditions.
If the Achieve Goal targeted by the Maintain Scope is:
Important: Since conditions are evaluated continuously, do not perform any assignments in maintain conditions. Any such logic can cause performance issues.
A Maintain Goal can be shown either in the decorative or iconic notation.
A Plan is an encapsulation element of a Goal hierarchy which specifies what to do to achieve its parent Achieve or Maintain Goal. It contains a Plan Model, an uninterrupted work flow of Events and Activities connected with Flows.
A Plan must have exactly one incoming decomposition originating from a Goal: one Plan can have only one parent Goal. It is the leaf element of a Goal hierarchy with no outgoing flow elements.
A Plan can define the following:
null
, any error code causes the Plan to fail.true
, the Plan starts execution of its Plan Model: Its namespace context is initiated and its None Start Event produces a token. If the pre-condition is false
another Plan is selected. To make the Goal check Plans in a particular order, use the pre-condition expression.
While Running, a Plan can be deactivated by its parent goal. A deactivated Plan becomes Inactive. A Running Plan becomes Failed if its Plan Model ends with an Error End Event, or an error code is caught Errors. A Plan becomes Achieved, if the execution of its Plan Model finishes with any other End Event.
Goal activation and deactivation is a mechanism that enables an instant change of a Goal status to either make the entire Goal sub-tree to come to a halt or to continue its execution.
You can activate and deactivate Goal with one of the management tools or with the activate()
and deactivate()
functions of the Standard Library.
Achieve and Maintain Goal can be deactivated manually or with the deactivate function.
Also Goals can define a deactivate condition, which causes the Goal to become Deactivated when the condition becomes true
. The condition is checked as follows:
When a goal is deactivated, the following happens:
Inactive
.An Achieve Goal or a Plan is deactivated also when their parent fails.
If an Achieve Goal is Achieved, Failed, or Deactivated, it is considered Finished. Only a finished Achieve Goal can be activated: on activation it becomes Ready. Note that the status of its parent Goals remains unchanged, only its sub-elements go through their life cycle.