WebWorkFlow
-
Upload
zefhemel -
Category
Technology
-
view
1.567 -
download
0
description
Transcript of WebWorkFlow
![Page 1: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/1.jpg)
WebWorkFlow
Zef Hemel, Ruben Verhaaf, Eelco VisserDelft University of Technology, The Netherlands
An Object-Oriented Workflow Modeling Language
![Page 2: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/2.jpg)
coordination
WebWorkFlow
![Page 3: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/3.jpg)
BPEL
![Page 4: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/4.jpg)
BPEL
Petri nets
![Page 5: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/5.jpg)
BPEL
Petri nets
YAWL
![Page 6: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/6.jpg)
BPEL
Petri nets
YAWL
✘ do not describe full applications✘ separate language, not nicely integrated✘ ignore user interface✘ all or nothing
![Page 7: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/7.jpg)
![Page 8: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/8.jpg)
WebWorkFlow
3 design principles
![Page 9: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/9.jpg)
Linguistic integration
![Page 10: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/10.jpg)
layersabstraction
![Page 11: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/11.jpg)
WebDSL
Procedural Workflow
Process Expressions
![Page 12: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/12.jpg)
WebDSL
Procedural Workflow
Process Expressionsconcise(less flexible)
more verbose(more flexible)
![Page 13: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/13.jpg)
Full application generation
![Page 14: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/14.jpg)
JBoss Seam
GoogleAppEngine
JavaServlet
![Page 15: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/15.jpg)
Scenario
![Page 16: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/16.jpg)
hank
![Page 17: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/17.jpg)
his employees
![Page 18: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/18.jpg)
preparation
![Page 19: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/19.jpg)
meeting
![Page 20: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/20.jpg)
write report
manager
![Page 21: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/21.jpg)
write report
approve comment
employee
![Page 22: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/22.jpg)
write report
approve comment
finalize
manager
![Page 23: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/23.jpg)
sue
![Page 24: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/24.jpg)
![Page 25: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/25.jpg)
![Page 26: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/26.jpg)
![Page 27: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/27.jpg)
![Page 28: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/28.jpg)
![Page 29: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/29.jpg)
![Page 30: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/30.jpg)
![Page 31: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/31.jpg)
WebWorkFlow
![Page 32: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/32.jpg)
Workflow Procedures
WebDSL
Process Expressionsconcise(less flexible)
more verbose(more flexible)
![Page 33: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/33.jpg)
Core WebDSL
Core Data Model Core User Interface
WebDSL
Data Model User Interface Access Control
Web Application
...
![Page 34: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/34.jpg)
User Interface LogicData models Access control
![Page 35: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/35.jpg)
entity User { username :: String password :: Secret name :: String manager -> User employees -> Set<User> }
![Page 36: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/36.jpg)
define page editUser(u : User) { form { table { row { "Name: " input(u.name) } row { "Manager: " input(u.manager) } row { "Employees: " input(u.employees) } } action("Save", save())
action save() { u.save(); return home(); } }}
![Page 37: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/37.jpg)
define page editUser(u : User) { derive editPage from u for (name, manager, employees) }
![Page 38: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/38.jpg)
access control rules page editUser(u : User) { principal == u.manager }
![Page 39: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/39.jpg)
User Interface LogicData models Access control
![Page 40: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/40.jpg)
User Interface LogicData models Access control Workflow
![Page 41: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/41.jpg)
Workflows revolve around objects
entity Meeting { employee -> User employeeView :: Text managerView :: Text report :: Text approved :: Bool comment :: Text }
![Page 42: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/42.jpg)
Workflows revolve around objects
and operations (procedures)performed on them
entity Meeting { employee -> User employeeView :: Text managerView :: Text report :: Text approved :: Bool comment :: Text }
employeePreparemanagerPreparewriteReportapproveReportcommentReportfinalizeReport
![Page 43: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/43.jpg)
module workflow
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } }
![Page 44: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/44.jpg)
module workflow
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } }
part of a WebDSL module
![Page 45: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/45.jpg)
module workflow
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } }
access control expression language
part of a WebDSL module
![Page 46: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/46.jpg)
module workflow
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } }
access control expression languageview page language
part of a WebDSL module
![Page 47: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/47.jpg)
WebDSL
Procedural Workflow
Process Expressionsconcise(less flexible)
more verbose(more flexible)
![Page 48: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/48.jpg)
procedure procedureName(o : Entity) { who { who can perform } when { additional condition } view { view page } enabled { action code } disabled { action code } do { action code } done { action code }}
![Page 49: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/49.jpg)
actorwho { principal == m.employee }
![Page 50: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/50.jpg)
conditionwhen { now() > m.startDate }
![Page 51: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/51.jpg)
user interfaceview { derive procedurePage from m for (employeePreparation) }
![Page 52: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/52.jpg)
actiondo { email(organizeMeetingMail(m));}
![Page 53: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/53.jpg)
enableddisableddone
eventsdone { m.writeReport.enable();}
![Page 54: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/54.jpg)
WebDSL
Process Expressions
Workflow Procedures
concise(less flexible)
more verbose(more flexible)
![Page 55: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/55.jpg)
procedure meetingWorkflow(m : Meeting) { process { (employeePrepare(m) and managerPrepare(m)); repeat { writeReport(m); (approveReport(m) xor commentReport(m)) } until finalizeReport(m) }}
![Page 56: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/56.jpg)
sequence ;
![Page 57: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/57.jpg)
parallel and
sequence ;
![Page 58: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/58.jpg)
parallel and
sequence ;
deferred choice +
![Page 59: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/59.jpg)
parallel and parallel xor
sequence ;
deferred choice +
![Page 60: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/60.jpg)
parallel and parallel xor
sequence ;
deferred choice + repeat ... until loops
![Page 61: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/61.jpg)
parallel and parallel xor
sequence ;
deferred choice + repeat ... until loops
conditional if ... else
![Page 62: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/62.jpg)
Transforming Procedures
![Page 63: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/63.jpg)
Core WebDSL
Core Data Model Core User Interface
WebDSL
Data Model User Interface Access Control
Procedural WebWorkFlow
Data Model User InterfaceAccess
Control
Procedure
Events
Web Application
WebWorkFlow
Data ModelUser
Interface
Access
Control
Procedure
EventsProcess
Expressions
![Page 64: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/64.jpg)
compilationbynormalization
Core WebDSL
Core Data Model Core User Interface
WebDSL
Data Model User Interface Access Control
Procedural WebWorkFlow
Data Model User InterfaceAccess
Control
Procedure
Events
Web Application
WebWorkFlow
Data ModelUser
Interface
Access
Control
Procedure
EventsProcess
Expressions
concise(high-level)
verbose(low-level)
![Page 65: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/65.jpg)
compilationbynormalization
Core WebDSL
Core Data Model Core User Interface
WebDSL
Data Model User Interface Access Control
Procedural WebWorkFlow
Data Model User InterfaceAccess
Control
Procedure
Events
Web Application
WebWorkFlow
Data ModelUser
Interface
Access
Control
Procedure
EventsProcess
Expressions
concise(high-level)
verbose(low-level)
![Page 66: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/66.jpg)
compilationbynormalization
Core WebDSL
Core Data Model Core User Interface
WebDSL
Data Model User Interface Access Control
Procedural WebWorkFlow
Data Model User InterfaceAccess
Control
Procedure
Events
Web Application
WebWorkFlow
Data ModelUser
Interface
Access
Control
Procedure
EventsProcess
Expressions
concise(high-level)
verbose(low-level)
![Page 67: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/67.jpg)
stateuser interfaceaccess control
![Page 68: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/68.jpg)
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } done { m.approveReport.enable(); m.commentReport.enable(); }}
Example
![Page 69: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/69.jpg)
extend entity Meeting { writeReport -> WriteReportProcedureStatus}
Procedure (=workflow) state is kept
in the object it operates on
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } done { m.approveReport.enable(); m.commentReport.enable(); }}
![Page 70: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/70.jpg)
entity ProcedureStatus { isEnabled :: Bool function enable() { isEnabled := true; } function disable() { isEnabled := false; }}
entity WriteReportProcedureStatus : ProcedureStatus { ...}
![Page 71: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/71.jpg)
define page writeReport(m : Meeting) { derive procedurePage from m for (employeeView)}
user interface
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } done { m.approveReport.enable(); m.commentReport.enable(); }}
![Page 72: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/72.jpg)
access control rules rule page writeReport(m : Meeting) { principal == m.employee.manager && m.writeReport.isEnabled }
access control
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } done { m.approveReport.enable(); m.commentReport.enable(); }}
![Page 73: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/73.jpg)
extend entity WriteReportProcedureStatus { m -> Meeting
function done() { m.approveReport.enable(); m.commentReport.enable(); }}
control logic
procedure writeReport(m : Meeting) { who { principal == m.employee.manager } view { derive procedurePage from m for (report) } done { m.approveReport.enable(); m.commentReport.enable(); }}
![Page 74: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/74.jpg)
Core WebDSL
Core Data Model Core User Interface
WebDSL
Data Model User Interface Access Control
Procedural WebWorkFlow
Data Model User InterfaceAccess
Control
Procedure
Events
Web Application
WebWorkFlow
Data ModelUser
Interface
Access
Control
Procedure
EventsProcess
Expressions
![Page 75: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/75.jpg)
Core WebDSL
Core Data Model Core User Interface
WebDSL
Data Model User Interface Access Control
Procedural WebWorkFlow
Data Model User InterfaceAccess
Control
Procedure
Events
Web Application
WebWorkFlow
Data ModelUser
Interface
Access
Control
Procedure
EventsProcess
Expressions
![Page 76: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/76.jpg)
encode control flow
![Page 77: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/77.jpg)
enableddisableddone
encode control flowin procedure events
![Page 78: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/78.jpg)
procedure p(o : O) { process { a(o); b(o) }}
![Page 79: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/79.jpg)
procedure p(o : O) { process { a(o); b(o) }}
extend procedure a(o : O) { done { o.b.enable(); }}
![Page 80: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/80.jpg)
procedure p(o : O) { process { a(o); b(o) }}
extend procedure a(o : O) { done { o.b.enable(); }}
...right?
![Page 81: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/81.jpg)
procedure p(o : O) { process { a(o); b(o); a(o) }}
![Page 82: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/82.jpg)
procedure p(o : O) { process { a(o); b(o); a(o) }}
extend procedure a(o : O) { done { ?? }}
![Page 83: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/83.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
+ transition function
![Page 84: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/84.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 85: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/85.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 86: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/86.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
[1]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 87: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/87.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)[1]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 88: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/88.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
[1]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 89: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/89.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
[2]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 90: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/90.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)[2]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 91: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/91.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
[2]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 92: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/92.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
[3]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 93: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/93.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)[3]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 94: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/94.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
[3]
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 95: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/95.jpg)
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
a(o) b(o)
state next0 a.enable(this, 1)
1 b.enable(this, 2)
2 a.enable(this, 3)
3 done
p(o)
![Page 96: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/96.jpg)
entity SeqProcedureStatus : ... { o -> O function next(state : Int) { if(state == 0) { o.a.enable(this, 1); } if(state == 1) { o.b.enable(this, 2); } if(state == 2) { o.a.enable(this, 3); } if(state == 3) { processed(); } }}
procedure p(o : O) { process { a(o)[1]; b(o)[2]; a(o)[3] }}
next function for sequencing
![Page 97: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/97.jpg)
entity ParProcedureStatus : ... { o -> O counter :: Int function next(state : Int) { if(state == 0) { o.a.enable(this, 1); o.b.enable(this, 2); } if(state == 1) { counter := counter + 1; if(counter == 2) { processed(); } } if(state == 2) { counter := counter + 1; if(counter == 2) { processed(); } } }}
procedure par(o : O) { process { a(o)[1] and b(o)[2] }}
next function for parallel and
![Page 98: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/98.jpg)
Encoding Patterns
![Page 99: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/99.jpg)
![Page 100: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/100.jpg)
![Page 101: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/101.jpg)
![Page 102: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/102.jpg)
WebDSL
Procedural Workflow
Process Expressionsconcise(less flexible)
more verbose(more flexible)
![Page 103: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/103.jpg)
WebDSL
Procedural Workflow
Process Expressionsconcise(less flexible)
more verbose(more flexible)
![Page 104: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/104.jpg)
WebWorkFlow
linguistic integration
![Page 105: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/105.jpg)
WebWorkFlow
linguistic integration
abstraction layers
![Page 106: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/106.jpg)
WebWorkFlow
linguistic integration
full application generation
abstraction layers
![Page 107: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/107.jpg)
WebWorkFlow
linguistic integration
full application generation
abstraction layers
compilation by normalization
![Page 108: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/108.jpg)
www.webdsl.orgwww.strategoxt.org
![Page 109: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/109.jpg)
state tracking
![Page 110: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/110.jpg)
state tracking task pages
![Page 111: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/111.jpg)
state tracking task pages navigation
![Page 112: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/112.jpg)
state tracking task pages
task lists
navigation
![Page 113: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/113.jpg)
state tracking task pages
task lists
navigation
workflow status
![Page 114: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/114.jpg)
state tracking task pages
task lists
navigation
workflow status access controlrules
![Page 115: WebWorkFlow](https://reader034.fdocuments.in/reader034/viewer/2022051817/5482924f5806b510058b46d4/html5/thumbnails/115.jpg)
state tracking task pages
task lists
navigation
workflow status access controlrules
the rest