28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 1
OBOE:A UML Profile and lexical
language for EDOC
Arne-Jørgen Berre, Arnor Solberg,
Jon Oldevik, Bård Kvalheim,
Bjørn Nordmoen
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 2
OBOE - Open Business Object Environment med Geco, SINTEF, SSA, Prism, X/Open, HNI, UniF
OBOE - Open Business Object Environment med Geco, SINTEF, SSA, Prism, X/Open, HNI, UniF
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 3
Reference implementation (Demonstrator 1)
Client Machine
BrowserIntrospection
Java
Netscape
Windows-95/Unix
Server Machine
http
orbixd
Introspection
ComBaseAdaper
oracle
DB DB
html pages
java programs
_bind connect
iiop
IDL
ODL
SUN/Unix
C++ Layer
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 4
User Requirements for easier development
• Modeling concepts - architecture patterns (3/n-tier services), structural (entities/relationships), behaviour (events)
• Notation - graphical, lexical
• Simplicity - code generation, distribution, persistent storage
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 5
OBOE Reference architecture
ApplicationLayer:
DataLayer:
BusinessLayer:
UIC
UserServiceUserService
Implementation
BusinessService
BusinessEntity
BusinessServiceImplementation
BusinessEntityImplementation
Databases
Com
pon
ent In
frastructu
re
UIC implementation
DataService
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 6
OBOE Toolset
CML representation
/* IDL file generated from CMLParser - Wed Feb 1014:35:25 CET 1999*/
// Include the CosNotifyComm.idl file from PrismTech#include <CosNotifyComm.idl>
module CarRental{ // Predefinitions of the interfaces. interface Reservation; interface Car; interface Customer; interface RentalService; interface CustomerService;
// The iterators needed in this module. interface CustomerDictionaryIterator { Customer nextCustomer(); boolean hasMoreCustomers(); };
interface ReservationDictionaryIterator { Reservation nextReservation(); boolean hasMoreReservations(); };
interface CarListIterator { Car nextCar(); boolean hasMoreCars(); };
interface ReservationListIterator { Reservation nextReservation(); boolean hasMoreReservations(); };
//Consumer and Supplier interfaces for the events. interface NotCheckedInConsumer :CosNotifyComm::StructuredPushConsumer { };
interface NotCheckedInSupplier :CosNotifyComm::StructuredPushSupplier { boolean addNotCheckedInConsumer(inNotCheckedInConsumer consumer); boolean removeNotCheckedInConsumer(inNotCheckedInConsumer consumer); };
interface NotCheckedOutConsumer :CosNotifyComm::StructuredPushConsumer { };
interface NotCheckedOutSupplier :CosNotifyComm::StructuredPushSupplier { boolean addNotCheckedOutConsumer(inNotCheckedOutConsumer consumer); boolean removeNotCheckedOutConsumer(inNotCheckedOutConsumer consumer); };
interface Reservation : NotCheckedInSupplier,NotCheckedOutSupplier { CarListIterator getCars(); void addCar(in Car aCar);
Customer getCustomer(); void setCustomer(in Customer aCustomer);
long getFromDate(); void setFromDate(in long fromDate); long getToDate(); void setToDate(in long toDate); long getRefId(); void setRefId(in long refId); long getActualOutDate(); void setActualOutDate(in long actualOutDate); long getActualInDate(); void setActualInDate(in long actualInDate);
UML Model, using theOBOE UML Profile
Methodology
OBOE code-generation tools.
EJB
CORBA 2.0
COM
Target architectures
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 7
EventSourceDepEventListenerDependency
Dependency (from UML core)
BusinessService BusinessEntityUserService
Interface (from UML Core)
Event
Classifier (from UML core)
SubSystem (from UML Model Managment)
Package (from UML MM)
isInstantiable : Boolean
UML Profile Metamodel
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 8
DailyStatistics<<Entity>>
MonthlyStatistics<<Entity>>
DailyReport<<Entity>>
MonthlyReport<<Entity>>
ToDateStatistics<<Entity>>
Plan<<Entity>>
Statisticskind : string = Table
<<Entity>>
ActivityType
name : stringcostFormula : stringrevenuFormula : string
getActivityCategoryTree()getParent()getPath()
<<Entity>>
0..1
0..*
0..1+subType
0..*
0..10..10..1+superType0..1
OrgUnitReportkind : string = Table
<<Entity>>
Projectname : stringprojectNo : string
getActivities()createActivity()createSubPorject()getSubprojects()
<<Entity>>
0..*0..1+subProjects
0..*0..1
0..1 0..1
+plan
0..1 0..1
0..*0..1
+statistic
0..*0..1
Propertyname : Stringtype : Stringvalue : String
<<Entity>>
Product
id : ProductIdname : stringunit : stringvalue : string
<<Entity>>
Activity
name : stringcomment : stringstartTime : TimeTagendTime : TimeTag
getCost()getRevenu()getProduction()getDuration()addProduction()
<<Entity>>
0..*
0..*
+products
0..*
+activities0..*
0..*
0..1
0..*
+type
0..1
0..*0..1
+activities
0..*0..1
ActivityService
getActivityStatistics()getActivityReport()createActivity()getProjectPlan()getActivitiesByType()getProduct()getProductByActivity()getActivitiesByOrgUnit()getActivitiesByProject()getProjects()getProject()getActivityCategoryTree()getRevenuLog()getRevenuSummary()getTimeUsageLog()getTimeUsageSummary()getPlan()getActivityReports()getActivitiesToSubscribe()
<<Service>>
0..*
0..1
+projects0..*
0..1
0..*
0..1
+activities0..*
0..1
OrgUnit
name : stringid : OrgUnitId
<<Entity>>
0..*0..1
+subOrg0..*
+parentOrg
0..1
0..1
0..*
0..1
+orgUnitReports
0..*
0..*
0..*
+projects
0..*
+orgUnits0..*
0..*
0..1
+orgElements
0..*
0..1
0..*
0..1
+properties0..*
0..1
Property
name : Stringtype : Stringvalue : String
<<Entity>>
0..* 0..1
+properties
0..* 0..1
0..* 0..1
+properties
0..* 0..1
Site
name : stringadress : stringlatitude : stringlongitude : string
<<Entity>>0..*
0..1
+site
0..*
0..1
0..*0..10..*0..1
0..*0..*
+orgUnits
0..*
+site
0..*
0..*
0..1
+properties
0..*
0..1
UML Example
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 9
entity Project : Activity { relationship list <OrgUnit> orgUnits inverse projects; relationship list <Activity> activities; relationship Project sub; relationship Plan plan; relationship list <Statistics> statistics; attribute string name; attribute string projectNo; ActivityListIterator getActivities(); boolean createActivity(in ActivityType at, in Activity a); boolean createSubPorject(in string name, in string projectNo); ProjectListIterator getSubprojects(); };
CML example
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 10
CORBA Prism BOF CORBA services
CodeGeneration
UML Tools
OBOE CMLActivity Service
Report Subscription service
ReportSubscriptionActivity Inspector
Light Persistent State Service
JDBC
OODB RDB
Light POANotification service
Event service
Authorisation service
Naming Service
Trader service
Property service
Relationship service
BOMBusinessObject
Methodology
Activity Editor
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 11
UML tool
Car
CustomerCarRentalRentalService
Visual modelling
CML parser
RDB
Lexical representationHUTN
ORB
Java mapping
ORB client mapping
Client
code generation /emitters
Architecture
User Services
Entityservices
Tools
Businessservices
DB accessmapping
ServantActivator (LPSS)
Light Persistence State Service (LPSS)
Persistent Entity Objects
OODB
PersistentService Objects
Factories forpersistent objects
POA
JDBC
ORB server mapping
DB definitionmapping
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 12
OMG RFP processUM L
m etam odelEDOC
extensions
CORBA 2.1w/services
EnterpriseJava Beans
CORBA 3.0w/Com ponents
COM +
UM Lgraphical
syntax
Hum an usablelexical syntax
(CM L)
2
1a
1b 3
4a4b
4c
5
Letter ofintent
Initialsubmission
Revisedsubmission
BOD adoption
1. EDOC Profile 8/1/99 10/25/99 4/2000 7/2000
2. CORBA
Profile6/1/99 8/2/99 1/2000 4/2000
3. HUTN 8/1/99 1/2000 6/2000 10/2000
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 13
OBOE ResultsExample
Geco Schlumbergerinitial reference pilot
+final pilot using the
technology
Input to :OMG Business Object
Inititative, DISGIS, ISO/TC211, OpenGIS
Technology
EDOC Modeling Concept (User, Business, Data
service: entity, relationship, events)
UML ProfileCML language
Code generation tool
UML-based methodology
Poster/Demonstration ,Stresa: Tuesday 29/6, 1400Web-site from August, 1999: http://www.opengroup.org/oboe
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 14
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 15
Modeling with OBOE (UML with extensions or CML)
UML (w. ext)CML
module CarRental{userservice CarRental
{ };userservice RentalManagment;
};
module Rentals{service RentalService
{ReservationID doReservation(in)
relationship list<salesPerson>relationship dictionaryrelationship list<Item>subscribe notCheckedIn;subscribe notCheckedOut;
};
entity Reservation {
attribute Date fromDate;attribute Date toDate;attribute long refID;attribute Date actualOutDate;attribute Date actualInDate;
}};
CORBA 2.0
(CORBA Services)
Enterprise JavaBeans
COM / ActiveX
1 2 3
OBOE Framework & CORBA, EJB, COM, ...
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 16
Event Listener
Event Source
removeEventListener( EventListener el);addEventListener( EventListener el);
List of eventlisteners
Event Listener
Entity/Serviceimplementingthe event listenerinterface.
Event Source
signalEvent(Event e);
Event Listener
handleEvent(Event e);
EventEvent
List of eventlisteners
Event
E1<<Entity>>
E2<<Entity>>
Event1 <<Event>><<EventSource>> <<EventListener>>
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 17
BOFAccess-right
Service
ActivityService
ActivityInspector
ReportSubscription
ActivityEditor
ReportSubscriptionService
CORBANameService
NotificationService
PersistenceService
POA
Trilogysystem Email
Service
Demonstrator 5Architecture
28th-30th June 1999 EC 5th GIS Workshop - Stresa, Italy 18
BM
Concepts&Artifacts
Processes
Actors
Bu
sin
ess
Sys
tem
Model world Real world
ApplicationLayer:
DataLayer:
BusinessLayer:
UIC
UserServiceUserService
Implementation
BusinessService
BusinessEntity
BusinessServiceImplementation
BusinessEntityImplementation
Databases
Com
ponen
t Infrastructu
re
UIC implementation
AppReqM
Analysis
Design
Implementation
DataService
Business vission &Prod desc.Risk
analysisDomain Model
RM
DM
IM AppImpBusImp
DataImp
ArchitectureDesign
CollaborationDesign
DetailedDesign
High levelUse case mod
DetailedUse case mod
BOM