Upload
pierino23
View
242
Download
4
Embed Size (px)
DESCRIPTION
Digibiz conference Paper about the ONE project\'s architecture
Citation preview
An MDA based environment for modelling and executing business
Negotiations
Pierfranco Ferronato, Jason Finnegan
Soluta.Net, TSSG/WIT
[email protected] - [email protected]
The ONE projectONE Open Negotiation EnvironmentProposal/Contract no.: FP6-034744www.one-project.euStarted: September 2006End: June 2009
[email protected] - [email protected]
ONE Objective''The main objective of the project is to enrich Digital Ecosystems with an negotiation environment where organisations can specify and execute negotiation models for supplying complex, services or products as a virtual organisation''
''To solve these problems, a negotiation environment must be affordable, open, not centrally managed, support the sharing of knowledge via flexible security and trust policies and be able to learn and evolve with the changing business conditions''
In essence: allow users to create and customized their own negotiation models and to run them in a web environment
[email protected] - [email protected]
ONE, the Environments
[email protected] - [email protected]
The environments
ONE
ONE ProjectDevelopment
Negotiation Factory(negotiation modelling)
Negotiation RuntimeEnvironment
Negotiation Setup
Negotiation Execution)
Announcement
Publish
[email protected] - [email protected]
The Model Editor
Simplified
Negotiation Features
Negotiation Notation
[email protected] - [email protected]
ONE Web Portal
[email protected] - [email protected]
Creating a negotiation
[email protected] - [email protected]
Sending Admission Request
[email protected] - [email protected]
Evaluating Offer
[email protected] - [email protected]
Agreement!
[email protected] - [email protected]
ONE, the MDA Approach
[email protected] - [email protected]
The architectural strategyDefine a DSL (metamodel) for business negotiations Generate the model editor from the metamodelRun the model editor to generate XMI files for the
modelProcess the XMI file at run-time to generate
negotiation instances (adding data to the model)Models and instances are stored in model-
independent content repositoryHave a negotiation engine execute the XML file
[email protected] - [email protected]
Role of a DSLCapture domain knowledge as assets!Terms like:Acceptance, constraints, offer, price, admission, issue, discount, negotiations, agreement, owner, participant,...
Actions like:To admit, To offer, to agree, to be invited,...
A “template” for models creationFrom a DSL many models can be createdAllow an high level of reuse of tooling which becomes model independentNo re-coding in case of new models
Allow adaptability/flexibilityIncrease the ROI
[email protected] - [email protected]
How to create a DSL?UML/BPMN subset
UML is too complex, the effort requires does not allow
BPMN is not Negotiation specific, customization is required
Customization of a UML tool feasible
UML/BPMN Profile
Doable but not effective when creating a model
Hard to tailor an UML tool
Customization of a UML tool feasible
A new language (MOF or ECORE)
Hard to create
Very effective
A new DSL Editor has to be created
ONE Project decided for the 3rd approach
[email protected] - [email protected]
Creating a DSLIt was decided to Enterprise Architect UML Editor
which has the ability to create metamodels and to export XMI 1.2/MOF 1.4 for reusability
From the computable MOF metamodel through a series of transformation we could generate the and execute the negotiations
[email protected] - [email protected]
Conceptc l a s s N e g o t i a t i o n C o n c e p t s
N e g o t i a t i o n{ l e a f }
- i d : S t r i n g- v e r s i o n : S t r i n g- c r e a t i o n D a t e : D a t e- n a m e : S t r i n g+ v i s i b i l i t y : V i s i b i l i t y K i n d
N e g o t i a t i o n E l e m e n t
I t e m
N e g o t i a t i o n P r o t o c o l{ l e a f }
A c t o r
- i d : S t r i n g
N e g o t i a t i o n T y p e{ a b s t r a c t }
N e g o t i a t i o n R o l e{ a b s t r a c t }
N e g o t i a t i o n E l e m e n t
I s s u e
N e g o t i a t i o n M e s s a g e
A g r e e m e n t
« e n u m e r a t i o n »V i s i b i l i t y K i n d
p r i v a t e p u b l i c
r e s o l v e s
+ i s s u e 1 . . *
+ i s s u e 1 . . *
c o m p o s e do f
+ s u b - i s s u e
c o m p o s e d O f
0 . . *
+ i t e m 1 . . *
c o m p r i s e d O f
s p e c i f i e s
+ r o l e 2 . . *
+ p r o t o c o l
1
e x e c u t e s
1
d e f i n e s
+ p a r t y2 . . *
d e f i n e s
h a s
+ r o l e1
+ n e g o t i a t i o n 0 . . *
i si n v o l v e d
+ p a r t y 1 . . *
N a m e :P a c k a g e :V e r s i o n :A u t h o r :
N e g o t i a t i o n C o n c e p t s« m e t a m o d e l » N e g o t i a t i o n M e t a M o d e l1 . 0W I T
SimplifiedResult of work of the Waterford Institute of Technology, Ireland
[email protected] - [email protected]
Information MMc l a s s I n f o r m a t i o n M e t a M o d e l
N e g o t i a t i o n M e t a M o d e l : :N e g o t i a t i o n
{ l e a f }
I s s u e
N e g R u l e : : C r i t e r i a
N e g o t i a t i o n E l e m e n t{ a b s t r a c t }
- i d : S t r i n g
A t t r i b u t e
- n a m e : S t r i n g
T y p e s : : T y p e{ a b s t r a c t }I t e m
A t t r i b u t e V a l u e
N e g R u l e : :N e g o t i a t i o n R u l e
{ a b s t r a c t }
h a s
+ t y p e 1
+ v a l u e
+ i s s u e
1 . . *
c o m p o s e do f
c o - r e l a t e d*
+ s u b - i s s u ec o m p o s e d O f0 . . *
+ c r i t e r i a *
c o n s t r a i n e d B y
*
+ a t t r i b u t e
1 . . *
c o n s t r a i n e d B y
+ c r i t e r i a
*
+ i t e m 1 . . *
N a m e :P a c k a g e :V e r s i o n :A u t h o r :
I n f o r m a t i o n M e t a M o d e l« m e t a m o d e l » N e g I n f o r m a t i o n M e t a M o d e l1 . 0W I T
Simplified
c l a s s F a c i l i t y M a n a g e m e n t I n f o r m a t i o n M o d e l
« I t e m »B u i l d i n g C l e a n i n g
- i d : S t r i n g
« A t t r i b u t e »- n a m e : S t r i n g- a d d r e s s : S t r i n g- t y p e : S t r i n g
« I s s u e »P r i c e
- i d : S t r i n g
« A t t r i b u t e »- p r i c e : i n t
N a m e :P a c k a g e :V e r s i o n :A u t h o r :
F a c i l i t y M a n a g e m e n t I n f o r m a t i o n M o d e lI n f o r m a t i o n M o d e l1 . 0W I T
Result of work of the Waterford Institute of Technology, Ireland
[email protected] - [email protected]
Action language issueNegotiations need imperative language for decision block
“If time left <5 minutes and new offers arrive, then extend negotiation deadline by other 10 minutes”
“Final price is equal to the value of the second offer arrived “
Behavioral logic (xUML) in UML/OMG is a recent UML “extension”
We opt to go with Java Script which was added to the XMI streamed-line modelNot formal but practical for the need of the projectStraight to the run-time where the Java code can be
executed
[email protected] - [email protected]
MDA Enabling Technologies
[email protected] - [email protected]
How it was created and used
.eap fileGenerates
NMM XMI.ecore file
NegotiationModel Editor
NMXMI
NM XMIwith values
Ecore->JPDL
transformationJPDL
transformation
Sparx SystemsEA Custom Code
Setup
Negotiation Engine
Bean Shell
[email protected] - [email protected]
Setup <negmod:InformationModel xmi:id="_fE-B8DODEdysSf1x7kCsFQ"> <primitiveTypes xmi:type="negmod:OneBoolean" xmi:id="_fE-B8TODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneByte" xmi:id="_fE-B8jODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneChar" xmi:id="_fE-B8zODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneDate" xmi:id="_fE-B9DODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneDouble" xmi:id="_fE-B9TODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneFloat" xmi:id="_fE-B9jODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneInt" xmi:id="_fE-B9zODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneLong" xmi:id="_fE-B-DODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneShort" xmi:id="_fE-B-TODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneString" xmi:id="_fE-B-jODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneImage" xmi:id="_fE-B-jKKKdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneXML" xmi:id="_fE-B-XMLKdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneBinary" xmi:id="_fE-BYNARYdysSf1x7kCsFQ"/>
<items xmi:type="negmod:Item" xmi:id="_HzoM8DOEEdysSf1x7kCsFQ" name="MobilePhone" issues="_cWQigDOPEdysSf1x7kCsFQ _IdbhcDOQEdysSf1x7kCsFQ"> <attributes xmi:type="negmod:Attribute" xmi:id="_RdId0DOEEdysSf1x7kCsFQ" name="brand" type="_fE-B-jODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_AjgNQDOPEdysSf1x7kCsFQ" name="model" type="_fE-B-jODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_DWBYMDOPEdysSf1x7kCsFQ" name="type" type="_fE-B-jODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_GDBJ8DOPEdysSf1x7kCsFQ" name="cameraDetail" type="_fE-B-jODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_I9SisDOPEdysSf1x7kCsFQ" name="isBlueTooth" type="_fE-B8TODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_OeStIDOPEdysSf1x7kCsFQ" name="isColourScreen" type="_fE-B8TODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_SobLQDOPEdysSf1x7kCsFQ" name="isGPRS" type="_fE-B8TODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_VrLxoDOPEdysSf1x7kCsFQ" name="isRadio" type="_fE-B8TODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_YW_3oDOPEdysSf1x7kCsFQ" name="isLocked" type="_fE-B8TODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_OeStIDOPEdysSf1x7kKKKK" name="PhonePicture" type="_fE-B-jKKKdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_OeStIDOPEdysSf1x7kKXML" name="PhoneXML" type="_fE-B-XMLKdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_OeStIDOPEdysSf1x7kKBIN" name="PhoneBinary" type="_fE-BYNARYdysSf1x7kCsFQ"/> </items> <issues xmi:type="negmod:Issue" xmi:id="_cWQigDOPEdysSf1x7kCsFQ" name="Price" constrainedBy="_GCIm4DOUEdysSf1x7kCsFQ _SNd7UDOUEdysSf1x7kCsFQ"> <attributes xmi:type="negmod:Attribute" xmi:id="_6vmfgDOPEdysSf1x7kCsFQ" name="amount" type="_fE-B9TODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_C4stkDOQEdysSf1x7kCsFQ" name="currency" type="_fE-B-jODEdysSf1x7kCsFQ"/> </issues> <issues xmi:type="negmod:Issue" xmi:id="_IdbhcDOQEdysSf1x7kCsFQ" name="Usage"> <attributes xmi:type="negmod:Attribute" xmi:id="_LlZ_ADOQEdysSf1x7kCsFQ" name="isUsed" type="_fE-B8TODEdysSf1x7kCsFQ"/> </issues> <criteria xmi:type="negmod:Criteria" xmi:id="_eZtykDOQEdysSf1x7kCsFQ" name="ReleasedDate"> <attributes xmi:type="negmod:Attribute" xmi:id="_geVVsDOQEdysSf1x7kCsFQ" name="date" type="_fE-B9DODEdysSf1x7kCsFQ"/> </criteria> <criteria xmi:type="negmod:Criteria" xmi:id="_GCIm4DOUEdysSf1x7kCsFQ" name="StartPrice"> <attributes xmi:type="negmod:Attribute" xmi:id="_IDCHoDOUEdysSf1x7kCsFQ" name="amount" type="_fE-B9TODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_MxEkEDOUEdysSf1x7kCsFQ" name="currency" type="_fE-B-jODEdysSf1x7kCsFQ"/> </criteria> <criteria xmi:type="negmod:Criteria" xmi:id="_SNd7UDOUEdysSf1x7kCsFQ" name="ReservePrice"> <attributes xmi:type="negmod:Attribute" xmi:id="_UhInEDOUEdysSf1x7kCsFQ" name="amount" type="_fE-B9TODEdysSf1x7kCsFQ"/> <attributes xmi:type="negmod:Attribute" xmi:id="_WsdPIDOUEdysSf1x7kCsFQ" name="currency" type="_fE-B-jODEdysSf1x7kCsFQ"/> </criteria> </negmod:InformationModel>
xmi:type="negmod:Attribute" name="brand"
xmi:type="negmod:Attribute" name="isBlueTooth"
<negmod:InformationModel xmi:id="_fE-B8DODEdysSf1x7kCsFQ"> <primitiveTypes xmi:type="negmod:OneBoolean" xmi:id="_fE-B8TODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneByte" xmi:id="_fE-B8jODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneChar" xmi:id="_fE-B8zODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneDate" xmi:id="_fE-B9DODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneDouble" xmi:id="_fE-B9TODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneFloat" xmi:id="_fE-B9jODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneInt" xmi:id="_fE-B9zODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneLong" xmi:id="_fE-B-DODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneShort" xmi:id="_fE-B-TODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneString" xmi:id="_fE-B-jODEdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneImage" xmi:id="_fE-B-jKKKdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneXML" xmi:id="_fE-B-XMLKdysSf1x7kCsFQ"/> <primitiveTypes xmi:type="negmod:OneBinary" xmi:id="_fE-BYNARYdysSf1x7kCsFQ"/>
<items xmi:type="negmod:Item" xmi:id="_HzoM8DOEEdysSf1x7kCsFQ" name="MobilePhone" issues="_cWQigDOPEdysSf1x7kCsFQ _IdbhcDOQEdysSf1x7kCsFQ"> <attributes xmi:type="negmod:Attribute" xmi:id="_RdId0DOEEdysSf1x7kCsFQ" name="brand" type="_fE-B-jODEdysSf1x7kCsFQ" value="Nokia"/> <attributes xmi:type="negmod:Attribute" xmi:id="_AjgNQDOPEdysSf1x7kCsFQ" name="model" type="_fE-B-jODEdysSf1x7kCsFQ" value="N70"/> <attributes xmi:type="negmod:Attribute" xmi:id="_DWBYMDOPEdysSf1x7kCsFQ" name="type" type="_fE-B-jODEdysSf1x7kCsFQ" value="321/7"/> <attributes xmi:type="negmod:Attribute" xmi:id="_GDBJ8DOPEdysSf1x7kCsFQ" name="cameraDetail" type="_fE-B-jODEdysSf1x7kCsFQ" value="2Mp"/> <attributes xmi:type="negmod:Attribute" xmi:id="_I9SisDOPEdysSf1x7kCsFQ" name="isBlueTooth" type="_fE-B8TODEdysSf1x7kCsFQ" value="true"/> <attributes xmi:type="negmod:Attribute" xmi:id="_OeStIDOPEdysSf1x7kCsFQ" name="isColourScreen" type="_fE-B8TODEdysSf1x7kCsFQ" value="true"/> <attributes xmi:type="negmod:Attribute" xmi:id="_SobLQDOPEdysSf1x7kCsFQ" name="isGPRS" type="_fE-B8TODEdysSf1x7kCsFQ" value="true"/> <attributes xmi:type="negmod:Attribute" xmi:id="_VrLxoDOPEdysSf1x7kCsFQ" name="isRadio" type="_fE-B8TODEdysSf1x7kCsFQ" value="true"/> <attributes xmi:type="negmod:Attribute" xmi:id="_YW_3oDOPEdysSf1x7kCsFQ" name="isLocked" type="_fE-B8TODEdysSf1x7kCsFQ" value="true"/> <attributes xmi:type="negmod:Attribute" xmi:id="_OeStIDOPEdysSf1x7kKKKK" name="PhonePicture" type="_fE-B-jKKKdysSf1x7kCsFQ"></attributes> <attributes xmi:type="negmod:Attribute" xmi:id="_OeStIDOPEdysSf1x7kKXML" name="PhoneXML" type="_fE-B-XMLKdysSf1x7kCsFQ"></attributes> </items> <issues xmi:type="negmod:Issue" xmi:id="_cWQigDOPEdysSf1x7kCsFQ" name="Price" constrainedBy="_GCIm4DOUEdysSf1x7kCsFQ _SNd7UDOUEdysSf1x7kCsFQ"> <attributes xmi:type="negmod:Attribute" xmi:id="_6vmfgDOPEdysSf1x7kCsFQ" name="amount" type="_fE-B9TODEdysSf1x7kCsFQ" value="123"/> <attributes xmi:type="negmod:Attribute" xmi:id="_C4stkDOQEdysSf1x7kCsFQ" name="currency" type="_fE-B-jODEdysSf1x7kCsFQ" value="Euro"/> </issues> <issues xmi:type="negmod:Issue" xmi:id="_IdbhcDOQEdysSf1x7kCsFQ" name="Usage"> <attributes xmi:type="negmod:Attribute" xmi:id="_LlZ_ADOQEdysSf1x7kCsFQ" name="isUsed" type="_fE-B8TODEdysSf1x7kCsFQ" value="false"/> </issues> <criteria xmi:type="negmod:Criteria" xmi:id="_eZtykDOQEdysSf1x7kCsFQ" name="ReleasedDate"> <attributes xmi:type="negmod:Attribute" xmi:id="_geVVsDOQEdysSf1x7kCsFQ" name="date" type="_fE-B9DODEdysSf1x7kCsFQ"/> </criteria> <criteria xmi:type="negmod:Criteria" xmi:id="_GCIm4DOUEdysSf1x7kCsFQ" name="StartPrice"> <attributes xmi:type="negmod:Attribute" xmi:id="_IDCHoDOUEdysSf1x7kCsFQ" name="amount" type="_fE-B9TODEdysSf1x7kCsFQ" value="100"/> <attributes xmi:type="negmod:Attribute" xmi:id="_MxEkEDOUEdysSf1x7kCsFQ" name="currency" type="_fE-B-jODEdysSf1x7kCsFQ" value="Euro"/> </criteria> <criteria xmi:type="negmod:Criteria" xmi:id="_SNd7UDOUEdysSf1x7kCsFQ" name="ReservePrice"> <attributes xmi:type="negmod:Attribute" xmi:id="_UhInEDOUEdysSf1x7kCsFQ" name="amount" type="_fE-B9TODEdysSf1x7kCsFQ" value="200"/> <attributes xmi:type="negmod:Attribute" xmi:id="_WsdPIDOUEdysSf1x7kCsFQ" name="currency" type="_fE-B-jODEdysSf1x7kCsFQ" value="Euro"/> </criteria> </negmod:InformationModel>
Attribute" name="brand" value="Nokia"
Attribute" name="isBlueTooth" value="true"
The Setup creates a negotiation instance adding data to the model
[email protected] - [email protected]
Run-time architecture
[email protected] - [email protected]
The component model
FactoryEnvironment
DKB
Security
Setup Execution Trust&Rep
Recomm.
Announce
Publish
Eclipse Rich UI
Execu
te
NegotiationModel
Web based UI Web based UI
Negotiation
ONE Node
Simplified
[email protected] - [email protected]
P2p Deployment model
P a r t i c i p a n t
P a r t i c i p a n t
O n e N o d e( T r u s t e d N o d e )
O n e N o d e( N e g o t i a t i o n N o d e )
O n e N o d e( T r u s t e d N o d e )
O n e N o d e( T r u s t e d N o d e )
O n e N o d e( N e g o t i a t i o n N o d e )
D e c e n t r a l i z e d K B
O n e N o d e( T r u s t e d N o d e )
O n e N o d e( ) r u s t e d N o d e
P a r t i c i p a n t
P a r t i c i p a n tP a r t i c i p a n t
P a r t i c i p a n t
O w n e r
O n e N o d e( T r u s t e d N o d e )
N e g o t i a t i o n A
N e g o t i a t i o n B
D e c e n t r a l i z e d K B
D e c e n t r a l i z e d K B
O w n e r
O n e N o d e
O n e N o d e
O n e N o d e
O n e N o d e
N o t e : A T r u s t e d N o d e i s a O N E N o d e j u s t i n a d i f f e r e n t r o l e
P 2 P n e t w o r k
P 2 P n e t w o r k
[email protected] - [email protected]
Spring (application server)http://www.springframework.org/
Pluto Web Portalhttp://portals.apache.org/pluto/
NegotiationConsole
PublicPortalMyOne
Soapod (p2p infrastructure, DBE conn, service registry,..)http://www.soapod.org/
Tomcat (container)http://tomcat.apache.org/
JVM
ONE framework (announcement logging, timers...)
AJAX, Portlet
To soapod in ONE nodes for node registry
Web Interfaces
local API
NegotiationEngine
JBossMySQL
NetWork
DKB
JCRJackrabbit
NetWork
Security
NetWork
Trust &Reputation
NetWork
R&L
WSAPI
JColibrì
One Node
[email protected] - [email protected]
ConclusionsDevelopment
MDA is well supported by Open Source software
Standards are sufficiently mature for supporting a MDA full featured project, like ONE
MDD process eased the collaboration across partners
Action semantics (aka executable UML) is not yet fully supported, we went Java Lang
Still need to use a plethora of tools to “execute” DSL
The environment
The business analysts feel confident when modelling using DSL
Runtime architecture pretty fragmented and complex
The definition of a DSL is still a very hard task to accomplish
It's a success: we are creating “the ONE Company” for the industrialization process
[email protected] - [email protected]
ONE Workshop
16:50-18:00 Workshop Tutorial – W2 Chaired by Volker Hoyer, Jason Finnegan
ONERunning Business Negotiations in the web
[email protected] - [email protected]
Thanks
www.one-project.eu
Pierfranco Ferronato, Jason Finnegan
Soluta.Net, TSSG/WIT