5. Simple example partners workflow objects Goal objects : plane_ticket, hote_res, restaurant_res Get Security status Determine trip dates Book flight Book hotel [duration>1] Get weather report Employee Travel agency1 Hotels.com Weather service project_name, duration, city_name, arrival_date project_name security_status duration, city_name, arrival_date plane_ticket city_name, arrival_date, duration, security_status hote_res city_name, arrival_date weather_report a0 a2 a3 a4 a5 a7 Get pers. preferences isvegeterian Reserve dinner isvegeterian, city_name restaurant_res a6 a1 Travel agency2 Travel agency3 employee_id Org. dept. Secretary Org. dept.
6.
7. Goal dependencies and choosing blocks Goal object: hote_res Case 1: duration = 0 a2 is not goal dependent Case 2: duration > 1 a2 is goal dependent Is goal dependent? abnormal infected Solution: 1. Repair a0 2. a4: Which case we have? 3. Repair a2 or not We don’t have to repair not goal dependent activities Get Security status Book flight a2 a3 Get pers. preferences a1 Get weather report Reserve dinner a7 a6 Book hotel [ duration >1] a4 a5 project_name security_status security_status hote_res Determine trip dates duration , project_name a0 (1) (2) Goal depends on a4
8. Conditional repair plan Determine trip dates Get Security status Book flight Book hotel Get weather report Get pers. preferences Reserve dinner a0 a2 a3 a4 a5 a7 a6 a1 (1) (2) COMP a0 REDO a0 REDO a4 COMP a6 COMP a5 COMP a2 REDO a2 COMP a5 REDO a5 COMP a3 REDO a3 DO a7 (1) (2) ok abnormal possibly infected not executed COMP a6 REDO a6 May be removed during the repair execution (shown in example) plane_ticket hote_res restaurant_res [duration>1]
9. Choosing blocks in conditional plan comp(a0) redo(a0) comp(a7) redo(a8) redo(a10) redo(a3) enter(w1) enter(w2) comp(a1) redo(a1) redo(a4) leave(w1) leave(w2) new_value(x2)=old_value(x2) ? yes no
10.
11.
12. Advanced with ways and concurrency executed(a1). executed(a2). executed(a3). -executed(a4). executed(a5). -compensated(a1). -compensated(a2). -compensated(a3). -compensated(a4). -compensated(a5). actuell(x1,2). actuell(x2,2). actuell(g,2). -oka(a1). -oka(a2). okv(x1,1). okv(x2,1). okv(g,1). branchwastaken(w1). -branchwastaken(w2). comp a2 comp a5 comp a1 redo a2 redo a1 redo a3 a4 redo a5 redo a5 way2 way1 Plan is correct but not optimal
13. Rules /1 a1 x1_2 Activity with only output. aa1. compa1. redoa1. executable aa1 if -executed(a1), -compensated (a1). executable redoa1 if -executed(a1), compensated(a1). executable compa1 if actuell(x1_2), executed(a1), -oka(a1). caused -okv(x1_2) if -oka(a1). caused executed(a1) after aa1. caused okv(x1_2) after aa1. caused actuell(x1_2) after aa1. caused -actuell(x1_1) after aa1. caused -executed(a1) after compa1. caused oka(a1) after compa1. caused compensated(a1) after compa1. caused -okv(x1_2) after compa1. caused actuell(x1_1) after compa1. caused executed(a1) after redoa1. caused -compensated(a1) after redoa1. caused okv(x1_2) after redoa1. caused actuell(x1_2) after redoa1. caused -actuell(x1_1) after redoa1.
14. Rules /2 a4 a3 x1_3 way2 Activity under condition. executable aa4 if -executed(a4), -compensated(a4), branchwillbetaken(w2), branchactivated(w2). executable redoa4 if -executed(a4), compensated(a4), branchwillbetaken(w2), branchactivated(w2). executable compa4 if actuell(x1_3), executed(a4), -oka(a4). executable compa4 if actuell(x1_3), executed(a4), branchwastaken(W), branchwillbetaken(V), V<>W. caused -oka(a4) if executed(a4), branchwastaken(W), branchwillbetaken(V), V<>W. caused -oka(a4) if -oka(a3). caused -okv(x1_3) if -oka(a4). caused executed(a4) after aa4. caused okv(x1_3) after aa4. caused actuell(x1_3) after aa4. caused -actuell(x1_2) after aa4. caused -executed(a4) after compa4. caused oka(a4) after compa4. caused compensated(a4) after compa4. caused -okv(x1_3) after compa4. caused actuell(x1_2) after compa4. caused executed(a4) after redoa4. caused -compensated(a4) after redoa4. caused okv(x1_3) after redoa4. caused actuell(x1_3) after redoa4. caused -actuell(x1_2) after redoa4.
15. Rules /3 a3 x2_2 aa3. redoa3. executable aa3 if -executed(a3), okv(x2_2). executable redoa3 if executed(a3), okv(x2_2). caused -oka(a3) if -okv(x2_2), executed (a3). caused executed(a3) after aa3. caused branchactivated(w2) after aa3, branchwillbetaken(w2). caused branchactivated(w1) after aa3, branchwillbetaken(w1). caused branchactivated(w2) after redoa3, branchwillbetaken(w2). caused branchactivated(w1) after redoa3, branchwillbetaken(w1). Conditional block.
16. Rules /4 a5 g_2 x1_2;x1_3 Activity reads, two alternatives, after conditional block executable aa5 if branchactivated(W), -executed(a5), -compensated (a5), okv(x1_2), actuell(x1_2), branchwillbetaken(w1). executable aa5 if branchactivated(W), -executed(a5), -compensated (a5), okv(x1_3), actuell(x1_3), branchwillbetaken(w2). executable redoa5 if branchactivated(W), -executed(a5), compensated(a5), okv(x1_2), actuell(x1_2),branchwillbetaken(w1). executable redoa5 if branchactivated(W), -executed(a5), compensated(a5), okv(x1_3), actuell(x1_3),branchwillbetaken(w2). executable compa5 if actuell(g_2), executed(a5), -oka(a5). caused -oka(a5) if -okv(x1_2), branchwastaken(w1), executed (a5). caused -oka(a5) if -okv(x1_3), branchwastaken(w2), executed (a5). caused executed(a5) after aa5. %nothing new, same as a1 a2 a4 caused okv(g_2) after aa5. caused actuell(g_2) after aa5. caused -actuell(g_1) after aa5. caused -executed(a5) after compa5. caused oka(a5) after compa5. caused compensated(a5) after compa5. caused -okv(g_2) after compa5. caused actuell(g_1) after compa5. caused executed(a5) after redoa5. caused -compensated(a5) after redoa5. caused okv(g_2) after redoa5. caused actuell(g_2) after redoa5. caused -actuell(g_1) after redoa5.
17. Case: all executed, ab, other way a4 a5 a1 a2 a3 x1_3 x2_2 x3 x4 x1_2 g_2 way1 way2 x1_1, x2_1, g_1 are ok x2_2 x1_2;x1_3 will be taken: w2 was taken: w1 Correct solution: comp(a5), comp(a2), redo(a2), redo(a3), a4, redo(a5). Generated solution: executed(a1). executed(a2). executed(a3). -executed(a4). executed(a5). -compensated(a1). -compensated(a2). -compensated(a3). -compensated(a4). -compensated(a5). actuell(x1_2). actuell(x2_2). actuell(g_2). -oka(a1). -oka(a2). okv(x1_1). okv(x2_1). okv(g_1). branchwillbetaken(w2). -branchwillbetaken(w1). branchwastaken(w1). -branchwastaken(w2). Initially: ab ab √
18. Case: all executed, ab, same way w1 a4 a5 a1 a2 a3 x1_3 x2_2 x3 x4 x1_2 g_2 way1 way2 x1_1, x2_1, g_1 are ok x2_2 x1_2;x1_3 will be taken: w1 was taken: w1 Correct solution: comp(a5), comp(a2),comp(a1), redo(a1), redo(a2),redo(a3), redo(a5). Generated solution: executed(a1). executed(a2). executed(a3). -executed(a4). executed(a5). -compensated(a1). -compensated(a2). -compensated(a3). -compensated(a4). -compensated(a5). actuell(x1_2). actuell(x2_2). actuell(g_2). -oka(a1). -oka(a2). okv(x1_1). okv(x2_1). okv(g_1). branchwillbetaken(w1). -branchwillbetaken(w2). branchwastaken(w1). -branchwastaken(w2). Initially: ab ab √
19. Analysis of 2 alternative ways a4 a5 a1 a2 a3 x1_3 x2_2 x3 x4 x1_2 g_2 way1 way2 x2_2 x1_2;x1_3 ab ab a4 a5 a1 a2 a3 x1_3 x2_2 x3 x4 x1_2 g_2 way1 way2 x2_2 x1_2;x1_3 ab ab COMP(a2), REDO(a2), REDO(a3), ……………
20. Complex example 13 activities, inclusive choosing blocks, parallel Goal: branchtoprocess(w1,a5), -branchactivated(w1), branchtoprocess(w2,a5), -branchactivated(w2) ? (21) Execution time: 51 sec. No ways, just “branchwillbetaken” - w1, w3 Execution time: 0,47 sec. Goal: branchtoprocess(w1,a5), branchtoprocess(w3,a8), -branchactivated(w3), branchtoprocess(w4,a8), -branchactivated(w4), -branchactivated(w1), branchtoprocess(w2,a5), -branchactivated(w2) ? (21) Execution time: 26 sec. Goal must be formulated in other way ?
23. Repair Reasoner WS : operation “generate plan” Repair Reasoner Web Service Tomcat Axis Model, log, diagnose, [repair action, i/g obj] nuPDDL / k-lang Invoke external application plan BPEL BPEL GPT/MBP: Linux, K-lang:Windows ? ? ? Include IDs of session for low-level workflows ask/inform other sessions about goal/infected objects, repair actions Also set of goal dependent/infected objects
24. Repair Reasoner WS : operation “check plan” Repair Reasoner Web Service Tomcat Axis Plan, log, diagnose, SessionID Ok / new needed Compare old/new values Check dependencies Eliminate non-goal/non-infected
25. Repair Reasoner WS : operation “new goal dep/infect” Repair Reasoner Web Service Tomcat Axis SessionID, new set of goaldep/infect BPEL Restore model a) Model Already exists regenerate repair plan b) Model Not yet exists fix data (be ready for the future)