1function model = gallery_lqn_workflows()
2% GALLERY_LQN_WORKFLOWS Layered network with loop, and-fork/join and or-fork/join
3model = LayeredNetwork(
'LQN-Workflows');
5P1 = Processor(model,
'P1', Inf, SchedStrategy.INF);
6T1 = Task(model,
'T1', 1, SchedStrategy.REF).on(P1);
7T1.setThinkTime(Immediate());
8E1 = Entry(model,
'Entry').on(T1);
10P2 = Processor(model,
'P2', Inf, SchedStrategy.INF);
11T2 = Task(model,
'T2', Inf, SchedStrategy.INF).on(P2).setThinkTime(Immediate());
12E2 = Entry(model,
'E2').on(T2);
14P3 = Processor(model,
'P3', 5, SchedStrategy.PS);
15T3 = Task(model,
'T3', Inf, SchedStrategy.INF).on(P3);
16T3.setThinkTime(Exp.fitMean(10));
17E3 = Entry(model,
'E3').on(T3);
19A1 = Activity(model,
'A1', Exp.fitMean(1)).on(T1).boundTo(E1);
20A2 = Activity(model,
'A2', Exp.fitMean(2)).on(T1);
21A3 = Activity(model,
'A3', Exp.fitMean(3)).on(T1).synchCall(E2);
23B1 = Activity(model,
'B1', Exp.fitMean(0.1)).on(T2).boundTo(E2);
24B2 = Activity(model,
'B2', Exp.fitMean(0.2)).on(T2);
25B3 = Activity(model,
'B3', Exp.fitMean(0.3)).on(T2);
26B4 = Activity(model,
'B4', Exp.fitMean(0.4)).on(T2);
27B5 = Activity(model,
'B5', Exp.fitMean(0.5)).on(T2);
28B6 = Activity(model,
'B6', Exp.fitMean(0.6)).on(T2).synchCall(E3).repliesTo(E2);
30C1 = Activity(model,
'C1', Exp.fitMean(0.1)).on(T3).boundTo(E3);
31C2 = Activity(model,
'C2', Exp.fitMean(0.2)).on(T3);
32C3 = Activity(model,
'C3', Exp.fitMean(0.3)).on(T3);
33C4 = Activity(model,
'C4', Exp.fitMean(0.4)).on(T3);
34C5 = Activity(model,
'C5', Exp.fitMean(0.5)).on(T3).repliesTo(E3);
36T1.addPrecedence(ActivityPrecedence.Loop(A1, {A2, A3}, 3));
37T2.addPrecedence(ActivityPrecedence.Serial(B4, B5));
38T2.addPrecedence(ActivityPrecedence.AndFork(B1, {B2, B3, B4}));
39T2.addPrecedence(ActivityPrecedence.AndJoin({B2, B3, B5}, B6));
40T3.addPrecedence(ActivityPrecedence.OrFork(C1, {C2, C3, C4}, [0.3, 0.3, 0.4]));
41T3.addPrecedence(ActivityPrecedence.OrJoin({C2, C3, C4}, C5));