Recall the insurance scenario. Now we need to represent a workflow in this domain with our newly defined process modeing notation.
start in Task with
successor
n: receiveClaim
end
receiveClaim in Task with
successor
n: checkPolicy
end
checkPolicy in Task with
successor
n1: assignAssessor;
n2: proposePayment
end
assignAssessor in Task with
successor
n: assessDamage
end
assessDamage in Task with
successor
n: proposePayment
end
proposePayment in Task with
successor
accept: processPayment;
reject: checkPolicy
end
processPayment in Task with
successor
n: finish
end
finish in Task end
Assessor in Agent with
executes
t1: assessDamage
end
InsuranceAgent in Agent with
executes
t1: receiveClaim;
t2: proposePayment
end
The answer to LoopTask is checkPolicy, assignAssessor, assessDamage, proposePayment. The answer to AgentWithSplitResponsibility is InsuranceAgent, Assessor. Note that the task assessDamage is in a loop with proposePayment. Hence, a sequence assessDamage-proposePayment-checkPolicy-assignAssessor-assessDamage is possible and is the reason to classify both agents into the query class AgentWithSplitResponsibility.
You can also visualize the results of the queries by the graph editor. The example process model together with the classification to the two query classes is shown in figure 5.
Figure 5: Classifying a process model via query classes
The dotted green links are derived instantiations. So, an object that is in the answer set of a query class is regarded as a derived instance of that query class. Indeed, query classes are classes where the instances are derived via the membership condition of the query class.