Stanford Universityeil.stanford.edu/ficas/FICAS032703.pdf · Primavera P3 Vite MS Project 4D Viewer...
Transcript of Stanford Universityeil.stanford.edu/ficas/FICAS032703.pdf · Primavera P3 Vite MS Project 4D Viewer...
Stanford UniversityEngineering Informatics Group (http://eil.stanford.edu)
Composition of Engineering Web Services
David Liu Department of Electrical EngineeringJim Cheng Department of Civil and Environmental EngineeringJun Peng Department of Civil and Environmental EngineeringKincho Law Department of Civil and Environmental EngineeringGio Wiederhold Computer Science Department
Stanford UniversityStanford University22
Agenda
• Ubiquitous Computing Environment
• Service Integration – FICAS
Stanford UniversityStanford University33
Ubiquitous Computing Environment
Stanford UniversityStanford University44
Ubiquitous Computing – An AEC Scenario
3D/4DModeling Tool
Set
ProjectPlanningTool Set
Designers
Project Managers
On SitePersonnel
On-LineInformation Store
Stanford UniversityStanford University55
Distributed Engineering Service and Integration
Mediators (Content and Access)Information Exchange (DBMS, PSL, IFC, XML)
Service Integration (FICAS)
Engineering Application Services
Stanford UniversityStanford University66
An Integrated Service Environment
Designers
Project Managers
On Site Personnel
CommunicationNetwork
Data IntegrationMobile Classes
SupplyChainTools
Autonomous Service Wrapper
ProjectPlanning
Tools
Autonomous Service Wrapper
3D/4DModeling
Tools
Autonomous Service Wrapper
IntegratedWork ProcessesUbiquitous Access
Data Integration
Service Integration
Stanford UniversityStanford University77
Ubiquitous Computing Environment – Three Issues
• Ubiquitous Access– Wireless Network Infrastructure– Wireless Devices– Device-independent Software Services
• Data Integration
• Service Integration
Stanford UniversityStanford University88
Supporting Multiple Devices Via Active Mediator
Messaging Bus / Internet
PDALaptopWorkstation
Information Content
Information Abstraction
Information Client
ActiveObjectQuery
SourceQuery
SourceContent
Client-SpecificContent
ObjectConstructor
SourceInformation
Services
Active Mediator
XMLObjects
XMLStyleSheet
Stanford UniversityStanford University99
Active Mediator in Action
Active Mediator
MobileClass
Fetcher
MobileClass
Runtime
ExceptionHandling
MobileClassAPI
Library
InformationClient
Mobile ClassCache
ObjectConstructor
DataMediator
SourceInformation
Services
Queries
MobileClass
SourceObject
ResultObject
Request +Mobile Class
MobileClass
Stanford UniversityStanford University1010
Using PSL As Standard Exchange Language
PSLPSL
PSLWrapper
PSLWrapper
PSLWrapper
PSLWrapper
PrimaveraP3
Vite
MSProject
4DViewer
Database(Oracle 8i)
Translator
Stanford UniversityStanford University1111
Using FICAS For Service Integration
FICAS Buildtime
AutonomousService
Directory
CommunicationNetwork
CLAS Program
FICASControls
AutonomousService
Autonomous ServiceMediator
AutonomousService
Autonomous ServiceMediator
AutonomousService
Autonomous ServiceMediator
SoftwareApplication
Autonomous ServiceMediator
FICAS RuntimeFICAS Buildtime
MegaserviceControllerMegaservice
ControllerMegaserviceControllerMegaservice
Controller
Stanford UniversityStanford University1212
FICAS(Flow-based Infrastructure for Composing Autonomous Services)
Stanford UniversityStanford University1313
Service Composition
Coding
Integration
1970 1990 2010
Coding
Integration
1970 1990 2010
AutonomousService
AccessProtocol
OperatingSystem
Host
A
A
A
AutonomousService
AccessProtocol
OperatingSystem
Host
N
N
N
Physical Communication Backbone
MegaserviceConceptual Composition of
Autonomous Services
AutonomousService
AccessProtocol
OperatingSystem
Host
B
B
B
Megaservice Controller
......
Stanford UniversityStanford University1414
Service Composition Infrastructure
• A Method to Integrate Software Applications– A access protocol for desired software functionalities– ASAP (Autonomous Service Access Protocol)
• A Method to Specify Functionality– A compositional language– CLAS (Compositional Language for Autonomous Services)
• An Environment to Execute Composed Services– A runtime environment that coordinates control-flows and data-flows– FICAS (Flow-based Infrastructure for Composition Autonomous
Services)
Stanford UniversityStanford University1515
ASAP(Autonomous Service Access Protocol)
Stanford UniversityStanford University1616
Autonomous Service Metamodel
• Service Core– Represents the core service functionality– Wraps an existing software application
• Data Containers– Handle input and output data– Form data-flows– Enable distributed data-flows
• Event Queues– Handle inquiries and issue requests– Form control-flows– Enable asynchronous service invocations
Data-flow
Control-flow
Input Data Container
Output Data Container
Input Event Queue
Output Event Q
ueue
Service Core
Stanford UniversityStanford University1717
Autonomous Service Access Protocol (ASAP)
• ASAP– A light-weight, asynchronous and non-blocking event-based protocol– Defines how autonomous services respond to events – XML is used as transport medium for both control and data
• ASAP Events– SETUP, TERMINATE: Initialization / termination of autonomous services– INVOKE: Invocation of autonomous services– MAPDATA: Management of data-flow between autonomous services– CONTROLFILE: Execution of megaservice control files
Stanford UniversityStanford University1818
Autonomous Service Wrapper (ASW)• Purposes of ASW
– Facilitate wrapping of software applications into autonomous services– Implement data containers and event queues– Implement ASAP protocol
Input Data Container
Output Data Container
Input Event Queue
Output Event Q
ueue
Service Core(ASAP Support)
Megaservice C
ontroller
EncapsulatedSoftware
Application
AutonomousServiceWrapper
public interface ServiceCore{
public boolean setup(Container inc,Container outc,FlowId inf);
public boolean execute(Container inc,Container outc,FlowId inf);
public boolean terminate(Container inc, Container outc,FlowId inf);
}
Stanford UniversityStanford University1919
CLAS(Compositional Language for Autonomous Services)
Stanford UniversityStanford University2020
CLAS
• Compositional Language for Autonomous Services– A high-level declarative language– Based on CLAM language developed in CHAIMS– Simple (Intended for domain experts, NOT technical experts)– Separation between composition and computation
• Features– Decomposition of a CALL statement into 4 primitives
• SETUP, INVOKE, EXTRACT, TERMINATE– Control primitives
• IF … THEN … ELSE• WHILE
– Mobile class• For specifying computational logic
Stanford UniversityStanford University2121
Mobile Class for Specifying Computational Logic
• Mobile Class– Java based– Dynamic routines that performs
complex computational logic– Reusable
• Example of Mobile Class– Relational operators
σ cond (A), π attr (A), A ><cond B– Arithmetic operators
+, -, ×, /– Data aggregation and abstraction– Type conversions
/* Specification of a type conversion mobile class */
public class int2float implements MobileClass
{
public DataElement execute(Vector params) {
DataElement arg =
(DataElement) params.firstElement();
int val = arg.getIntValue();
return new DataElement().setValue(
new Double(val).doubleValue());
}
}
/* Using m-class in a CLAS program */
floatnum = MCLASS("int2float", num)
Stanford UniversityStanford University2222
FICAS Buildtime
Executable
CompilationCLAS
Compiler
FICASControls
JavaCompiler
CLASPrograms
MobileClass
SourceCodes
MobileClasses
Source
CompositionalSpecification
ComputationalSpecification
Stanford UniversityStanford University2323
Sample CLAS Program 1
SchedulingDemo "http://ficas.stanford.edu/Megaprogram"{
/* Setup Services */psl_svc = SETUP("SIPsl")p3_svc = SETUP("SIP3")notification_svc = SETUP("SINotification")
/* Invoke and extract information from PSL Service */psl = psl_svc.INVOKE("to-psl", "CEIL")ceil = psl.EXTRACT()
/* Invoke Rescheduling Service */p3 = p3_svc.INVOKE("reschedule", ceil)ceil2 = p3.EXTRACT()
/* Store information using PSL Service */oracle = psl_svc.INVOKE("to-oracle", ceil2)status = oracle.EXTRACT()
/* Invoke Notification Service */notif = notification_svc.INVOKE("171.64.55.32", 8250, status)
/* Terminate Services */psl_svc.TERMINATE()p3_svc.TERMINATE()notification_svc.TERMINATE()
}
Stanford UniversityStanford University2424
FICAS Runtime
Stanford UniversityStanford University2525
FICAS Runtime Architecture
Megaservice Controller
ServiceCore
Megaservice Controller
ServiceCore
CommunicationNetwork
AutonomousService
Directory
FICASControls
MobileClasses
Megaservice Controller
ServiceCore
Autonomous Service Wrapper
From FICAS
Buildtime
Stanford UniversityStanford University2626
Megaservice Controller
ASAP Event Receiver
Outgoing Event Pool
FICASControls
Control Manager
FlowDependency
Table
VariableCache
Megaservice Controller
Autonomous Service Wrapper
FromAutonomous
Services
Input Event Queue
Output Event Q
ueue
Input Data Container
Output Data Container
Service Core
Active Mediator
ToAutonomous
Services
FICAS Control Sequence
……
<INVOKE><INVOCATIONHANDLE>Invocation1</INVOCATIONHANDLE><SERVICEHANDLE>Service1</SERVICEHANDLE>
</INVOKE><INVOKE><INVOCATIONHANDLE>Invocation2</INVOCATIONHANDLE><SERVICEHANDLE>Service2</SERVICEHANDLE>
</INVOKE><EXTRACT><VARIABLE>A</VARIABLE><INVOCATIONHANDLE>Invocation1</INVOCATIONHANDLE>
</EXTRACT><EXTRACT><VARIABLE>B</VARIABLE><INVOCATIONHANDLE>Invocation2</INVOCATIONHANDLE>
</EXTRACT><INVOKE><INVOCATIONHANDLE>Invocation3</INVOCATIONHANDLE><SERVICEHANDLE>Service3</SERVICEHANDLE><VALUELIST><VARIABLE>A</VARIABLE><VARIABLE>B</VARIABLE>
</VALUELIST></INVOKE>
……
Stanford UniversityStanford University2727
Service Integration Models
M
S1
S2 S3
S4
M
S1
S2 S3
S4
M
S1
S2 S3
S4
M
S1
S2 S3
S4
(a) Centralized Control-flowCentralized Data-flow Model
(1C1D)
Control-flows
Data-flows
MegaserviceM
AutonomousServices
S
(b) Centralized Control-flowDistributed Data-flow Model
(1CnD)
(c) Distributed Control-flowCentralized Data-flow Model
(nC1D)
(d) Distributed Control-flowDistributed Data-flow Model
(nCnD)
Stanford UniversityStanford University2828
Data Dependencies within Megaservice
/* Megaservice specified in CLAS */
Invocation1 = Service1.INVOKE();
Invocation2 = Service2.INVOKE();
A = Invocation1.EXTRACT();
B = Invocation2.EXTRACT();
Invocation3 = Service3.INVOKE(A, B);
C = Invocation3.EXTRACT();
Invocation4 = Service4.INVOKE(C)
D = Invocation4.EXTRACT();
Invocation1 Invocation2
Invocation3
Invocation4
A B
C
D
Stanford UniversityStanford University2929
Event Dependency Graph – 1C1D
INVOKE(Service1)
INVOKE(Service2)
MAPDATA (A, Service1,Megaservice)
INVOKE(Service3)
MAPDATA(C, Service3,Megaservice)
MAPDATA(B, Service2,Megaservice)
INVOKE(Service4)
MAPDATA(D, Service4,Megaservice)
MAPDATA (A, Megaservice,
Service3)
MAPDATA (B, Megaservice,
Service3)
MAPDATA(C, Megaservice,
Service4)
Service 1
Service 2
Service 3
MegaService
Service 4
Stanford UniversityStanford University3030
Event Dependency Graph – 1CnD
INVOKE(Service1)
INVOKE(Service2)
MAPDATA (A, Service1,
Service3)
INVOKE(Service3)
MAPDATA(C, Service3,
Service4)
MAPDATA(B, Service2,
Service3)
INVOKE(Service4)
MAPDATA(D, Service4,Megaservice)
Service 1
Service 2
Service 3
MegaService
Service 4
Stanford UniversityStanford University3131
1C1D v.s. 1CnDINVOKE
Dest: Service1
MAPDATAData: AFrom: Service1To: Local
MAPDATAData: AFrom: LocalTo: Service3
INVOKEDest: Service3
MAPDATAData: CFrom: Service3To: Local
MAPDATAData: CFrom: LocalTo: Service4
INVOKEDest: Service2
MAPDATAData: BFrom: Service2To: Local
MAPDATAData: BFrom: LocalTo: Service3
INVOKEDest: Service4
INVOKEDest: Service1
MAPDATAData: AFrom: Service1To: Service3
INVOKEDest: Service3
MAPDATAData: CFrom: Service3To: Service4
INVOKEDest: Service2
MAPDATAData: BFrom: Service2To: Service3
INVOKEDest: Service4
Invocation1:
Invocation2:
Extract A:
Extract B:
Invocation3:
Extract C:
Invocation4:
(a) Centralized Data-flows (b) Distributed Data-flows
Extract D:MAPDATA
Data: DFrom: Service4To: Local
/* Megaservice specified in CLAS */
Invocation1 = Service1.INVOKE();
Invocation2 = Service2.INVOKE();
A = Invocation1.EXTRACT();
B = Invocation2.EXTRACT();
Invocation3 = Service3.INVOKE(A, B);
C = Invocation3.EXTRACT();
Invocation4 = Service4.INVOKE(C)
D = Invocation4.EXTRACT();
Stanford UniversityStanford University3232
Performance Evaluation – Apache SOAP v.s. FICAS
SwitchMegeService
S1produces
and returns astring value
10mbps
S2consumes a
string
out
10mbps
in
(LAN) in = 10 mbps; out = 10 mbps(802.11b) in = 2 mbps; out = 0.5 mbps
ForwardingData { a = S1(size) S2(a) }
SingleCall { a = S1(size) }
Stanford UniversityStanford University3333
Megaservice Performance on LAN Setting
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
0 100 200 400 800 1600 3200
Data Volume (KB)
Meg
aser
vice
Exe
cutio
n Ti
me
SOAP (Single Call) SOAP (Forwarding Data) FICAS (Forwarding Data)
FICAS incurs higher control-flow cost
SOAP incurs higher data-flow cost
Stanford UniversityStanford University3434
Megaservice Performance on 802.11b Setting
0
10000
20000
30000
40000
50000
60000
70000
80000
1 2 3 4 5 6 7
Data Volume (KB)
Meg
aser
vice
Exe
cutio
n Ti
me
SOAP (LAN) SOAP (802.11b) FICAS (LAN) FICAS (802.11b)
SOAP creates bottleneck on the megaservice
communication link
FICAS is little affected since data-flows are distributed
Stanford UniversityStanford University3535
Using Active Mediation for Performance Optimization
Example:Type Conversion Using Broker Services versus Mobile Classes
M
S1
(a) Type Brokers
T1
T2T1_T2 T2_T3
S2
T3
M
S1
(b) Type Mediation Mobile Classes
T3 S2
mobile classT1_T2
mobile classT2_T3
Control-flow
Data-flow
J. Ockerbloom, "Mediating Among Diverse Data Formats", Carnegie Mellon University, PhD. Thesis, 1998.
Stanford UniversityStanford University3636
Executing Mobile Class on Active Mediator
Autonomous Service Wrapper
MobileClass
Fetcher
MobileClass
Runtime
ExceptionHandling
Mobile ClassCache
Mobile ClassRepository
Input Data Container
Output Data Container
MobileClassAPI
Library
Active Mediator
Stanford UniversityStanford University3737
A Megaservice with a Mobile Class
SwitchMegeService
S1produces
and returns astring value
10mbps
S2consumes a
string
10mbps
Invocation1 = S1.INVOKE(size) A = Invocation1.EXTRACT()
B = MCLASS ("FILTER", A)
Invocation2 = S2.INVOKE(B)
10mbps
Mobile ClassFILTER
Stanford UniversityStanford University3838
Performance Comparison for Mobile Class Placements
0
2000
4000
6000
8000
10000
12000
100 200 400 800 1600 3200
Data Volume (KB)
Meg
aser
vice
Exe
cutio
n Ti
me
Mobile Class on S1 Mobile Class on S2 Utility Autonomous Service
Stanford UniversityStanford University3939
Distributed Component Models
Client-ServerActive Mediation
Client-ServerClient-ServerInvocation Model
Sync / AsynchronousSynchronousSync / AsynchronousSynchronicity
URLURLProxy ReferenceRemote Reference
Procedure CallProcedure CallMethod CallLanguage Paradigm
DistributedCentralizedCentralizedDataflow Model
Autonomous Service Directory
UDDI (Universal Description, Discovery and Integration)
CORBA Naming ServiceLocating Services
N/AWSDL (Web Service Description Language)
CORBA IDL (Interface Description Language)
Service Description
TCPHTTP, SMTPIIOPTransport Protocol
XMLXMLCDR (Common Data Representation)
Data Representation
FICASSOAP (Web Service)CORBA
Stanford UniversityStanford University4040
FICAS Summary
• Objective– Investigate revolutionary approach to large-scale software composition
• Approach– Develop and validate a distributed data-flow based service composition
framework
• Contributions– Protocol (ASAP) support for constructing autonomous services– A high-level language (CLAS) that separates composition from
computation– Performance optimization with data-flow distribution– Active mediation to extend the capability of the compositional language
and to facilitate data-flow optimization
Stanford UniversityStanford University4141
Demonstration
Stanford UniversityStanford University4242
Putting It All Together – Demonstration
PSLXML
PrimaveraP3
Oracle 8iRelationalDatabase
4D Viewer
Active Mediator
Palm DesktopBrowser
MicrosoftProject
MicrosoftExcel
Stanford UniversityStanford University4343
Review Design in 4D Viewer
4D Model Taken on 3/25/2001 From 4DViewer
Stanford UniversityStanford University4444
Review Schedule in Primavera
Stanford UniversityStanford University4545
Review Schedule in Microsoft Project
Stanford UniversityStanford University4646
View Schedule on Site
http://med...!! HistorySCHEDULE
Review the schedule and make appropriate updates by changing thevalue in duration:
SCHEDULEIDSTARTDATEDURATION
18T1-3320101-31-2001 1.…………………….. Update
18T1-3324102-01-2001
http://med...!! History
SCHEDULE
Review the schedule and make appropriate updates by changing thevalue in duration:
SCHEDULEIDSTARTDATEDURATION
18T1-3320101-31-2001 1.…………………….. Update
18T1-3324102-01-2001
Stanford UniversityStanford University4747
Modifying Schedule On-site
http://med...!! HistorySCHEDULE
Review the schedule and make appropriate updates by changing thevalue in duration:
SCHEDULEIDSTARTDATEDURATION
18T1-3320101-31-2001 40…………………….. Update
18T1-3324102-01-2001
http://med...!! HistorySCHEDULE
Review the schedule and make appropriate updates by changing thevalue in duration:
SCHEDULEIDSTARTDATEDURATION
18T1-3320101-31-2001 40…………………….. Update
18T1-3324102-01-2001
Change duration of activity18T1-33201 (“Erect Roof Elem 1”)From 1 day to 40 days
Stanford UniversityStanford University4848
Invoke Rescheduling Megaservice
Network
ReschedulingMegaService
RescheduleService { model = PSLModel(modelname, 'oracle-to-psl') new_model = P3Scheduling(model, 'reschedule') PSLModel(new_model, 'psl-to-oracle') ExcelService(new_model, 'show') ChangeNotify(modelname) }
PSL
PrimaveraP3
PSLModel
Service
P3Scheduling
Service
ChangeNotify
Service
Stanford UniversityStanford University4949
Review Modified Schedule in Primavera
Stanford UniversityStanford University5050
Review Modified Design in 4D Viewer
4D Model Taken at 3/25/2001 From 4DViewer
Stanford UniversityStanford University5151
Review Modified Schedule in Microsoft Project
Stanford UniversityStanford University5252
Review Changed Activities in Desktop Browser
Actual Change
Affected
Activities
Stanford UniversityStanford University5353
Review Modified Schedule in Excel
Actual Change