3. Defining your own process
Defining a process using FOCUSer is done at two different levels:
- The Process level:
A FOCUSer process is defined in AF3's IDE as a set of objectives that depend on each other. Each objective is itself formed by a set of constraints that have been previously defined programmatically. How to define constraints is explained at the end of this section. In order to define a process you need to do the following:
- Step 1: In order to create a first objective double-click on your project and edit your constraint on the panel on the right.

- Step 2: After naming the objective you can then select the constraints that should be active by ticking them off by selecting an appropriate constraint group. Note that for the objective to be fulfilled all of its constraints need to be satisfied by the model.

The group name is associated with additional information as a triple [True, False, Total] where, 1) True: number of constraints that are satisfied in this group, 2) False: number of constraints that are not satisfied in the group and 3) Total: total number of constraints in the constraints group. It is to be noted here that this information appear when the objective is active (i.e., selected as current objective).

- Step 3: Objectives can depend on other objectives, which semantically means that in order for the objective to be fulfilled its dependencies need to be first satisfied.

- The Constraint level:
Constraints are predicates that convey information about the model. When a constraint is active and evaluates to false, then errors or warnings are displayed in the IDE on top of the visible elements of the model those constraints relate to.
A constraint is programmatically defined.