1+ {
2+ "id" : " booklending" ,
3+ "name" : " Book Lending Workflow" ,
4+ "version" : " 1.0" ,
5+ "start" : " Book Lending Request" ,
6+ "states" : [
7+ {
8+ "name" : " Book Lending Request" ,
9+ "type" : " event" ,
10+ "onEvents" : [
11+ {
12+ "eventRefs" : [" Book Lending Request Event" ]
13+ }
14+ ],
15+ "transition" : " Get Book Status"
16+ },
17+ {
18+ "name" : " Get Book Status" ,
19+ "type" : " operation" ,
20+ "actions" : [
21+ {
22+ "functionRef" : {
23+ "refName" : " Get status for book" ,
24+ "arguments" : {
25+ "bookid" : " ${ .book.id }"
26+ }
27+ }
28+ }
29+ ],
30+ "transition" : " Book Status Decision"
31+ },
32+ {
33+ "name" : " Book Status Decision" ,
34+ "type" : " switch" ,
35+ "dataConditions" : [
36+ {
37+ "name" : " Book is on loan" ,
38+ "condition" : " ${ .book.status == \" onloan\" }" ,
39+ "transition" : " Report Status To Lender"
40+ },
41+ {
42+ "name" : " Check is available" ,
43+ "condition" : " ${ .book.status == \" available\" }" ,
44+ "transition" : " Check Out Book"
45+ }
46+ ]
47+ },
48+ {
49+ "name" : " Report Status To Lender" ,
50+ "type" : " operation" ,
51+ "actions" : [
52+ {
53+ "functionRef" : {
54+ "refName" : " Send status to lender" ,
55+ "arguments" : {
56+ "bookid" : " ${ .book.id }" ,
57+ "message" : " Book ${ .book.title } is already on loan"
58+ }
59+ }
60+ }
61+ ],
62+ "transition" : " Wait for Lender response"
63+ },
64+ {
65+ "name" : " Wait for Lender response" ,
66+ "type" : " switch" ,
67+ "eventConditions" : [
68+ {
69+ "name" : " Hold Book" ,
70+ "eventRef" : " Hold Book Event" ,
71+ "transition" : " Request Hold"
72+ },
73+ {
74+ "name" : " Decline Book Hold" ,
75+ "eventRef" : " Decline Hold Event" ,
76+ "transition" : " Cancel Request"
77+ }
78+ ]
79+ },
80+ {
81+ "name" : " Request Hold" ,
82+ "type" : " operation" ,
83+ "actions" : [
84+ {
85+ "functionRef" : {
86+ "refName" : " Request hold for lender" ,
87+ "arguments" : {
88+ "bookid" : " ${ .book.id }" ,
89+ "lender" : " ${ .lender }"
90+ }
91+ }
92+ }
93+ ],
94+ "transition" : " Wait two weeks"
95+ },
96+ {
97+ "name" : " Wait two weeks" ,
98+ "type" : " delay" ,
99+ "timeDelay" : " PT2W" ,
100+ "transition" : " Get Book Status"
101+ },
102+ {
103+ "name" : " Check Out Book" ,
104+ "type" : " operation" ,
105+ "actions" : [
106+ {
107+ "functionRef" : {
108+ "refName" : " Check out book with id" ,
109+ "arguments" : {
110+ "bookid" : " ${ .book.id }"
111+ }
112+ }
113+ },
114+ {
115+ "functionRef" : {
116+ "refName" : " Notify Lender for checkout" ,
117+ "arguments" : {
118+ "bookid" : " ${ .book.id }" ,
119+ "lender" : " ${ .lender }"
120+ }
121+ }
122+ }
123+ ],
124+ "end" : true
125+ }
126+ ],
127+ "functions" : " file://books/lending/functions.json" ,
128+ "events" : " file://books/lending/events.json"
129+ }
0 commit comments