Document 7538106

Download Report

Transcript Document 7538106

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
1
OBOE - Open Business Object Environment med
Geco, SINTEF, SSA, Prism, X/Open, HNI, UniF
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
2
Reference implementation
(Demonstrator 1)
Server Machine
Client Machine
html pages
Browser
Introspection
http
java programs
orbixd
_bind connect
Java
iiop
Introspection
Netscape
Windows-95/Unix
ComBase
Adaper
IDL
C++ Layer
oracle
ODL
DB
DB
SUN/Unix
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
3
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
4
OBOE Reference architecture
UIC
UIC implementation
UserService
UserService
Implementation
BusinessService
Business
Layer:
BusinessService
Implementation
BusinessEntity
BusinessEntity
Implementation
DataService
Component Infrastructure
Application
Layer:
Data
Layer:
Databases
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
5
OBOE Toolset
/* IDL file generated from CMLParser - Wed Feb 10
14: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;
Methodology
UML Model, using the
OBOE UML Profile
// The iterators needed in this module.
interface CustomerDictionaryIterator
{
Customer nextCustomer();
boolean hasMoreCustomers();
};
interface ReservationDictionaryIterator
{
Reservation nextReservation();
boolean hasMoreReservations();
};
CML representation
interface CarListIterator
{
Car nextCar();
boolean hasMoreCars();
};
interface ReservationListIterator
{
Reservation nextReservation();
boolean hasMoreReservations();
};
//Consumer and Supplier interfaces for the events.
interface NotCheckedInConsumer :
CosNotifyComm::StructuredPushConsumer
{
};
EJB
OBOE codegeneration tools.
CORBA 2.0
COM
interface NotCheckedInSupplier :
CosNotifyComm::StructuredPushSupplier
{
boolean addNotCheckedInConsumer(in
NotCheckedInConsumer consumer);
boolean removeNotCheckedInConsumer(in
NotCheckedInConsumer consumer);
};
interface NotCheckedOutConsumer :
CosNotifyComm::StructuredPushConsumer
{
};
interface NotCheckedOutSupplier :
CosNotifyComm::StructuredPushSupplier
{
boolean addNotCheckedOutConsumer(in
NotCheckedOutConsumer consumer);
boolean removeNotCheckedOutConsumer(in
NotCheckedOutConsumer consumer);
};
interface Reservation : NotCheckedInSupplier,
NotCheckedOutSupplier
{
CarListIterator getCars();
void addCar(in Car aCar);
Customer getCustomer();
void setCustomer(in Customer aCustomer);
Target architectures
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
long
void
long
void
long
void
long
void
long
void
getFromDate();
setFromDate(in long fromDate);
getToDate();
setToDate(in long toDate);
getRefId();
setRefId(in long refId);
getActualOutDate();
setActualOutDate(in long actualOutDate);
getActualInDate();
setActualInDate(in long actualInDate);
6
UML Profile Metamodel
Package (from UML MM)
Classifier (from UML core)
Interface (from UML Core)
SubSystem (from UML Model Managment)
isInstantiable : Boolean
UserService
BusinessService
BusinessEntity
Event
Dependency (from UML core)
EventListenerDependency
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
EventSourceDep
7
<<Service>>
ActivityService
UML Example
0..1
0..1
+parentOrg
+subOrg
0..*
<<Entity>>
Site
name : string
adress : string
latitude : string
longitude : string
0..* +orgElements
0..1
+site
+site
+orgUnits
0..*
0..*
+orgUnits
0..*
0..1
+orgUnitReports
<<Entity>>
OrgUnitReport
kind : string = Table
<<Entity>>
MonthlyReport
<<Entity>>
Property
name : String
type : String
value : String
0..1
0..*
0..1
0..*
0..1
+properties
0..1
<<Entity>>
OrgUnit
name : string
id : OrgUnitId
0..1
0..*
+properties
0..*
0..*
<<Entity>>
Property
name : String
type : String
value : String
<<Entity>>
DailyReport
0..*
+properties
+properties
0..1
<<Entity>>
Product
id : ProductId
name : string
unit : string
value : string
28th-30th June 1999
+projects
0..*
0..1
0..*
getActivityStatistics()
getActivityReport()
createActivity()
getProjectPlan()
getActivitiesByType()
getProduct()
getProductByActivity()
getActivitiesByOrgUnit()
getActivitiesByProject()
getProjects()
getProject()
getActivityCategoryTree()
getRevenuLog()
getRevenuSummary()
getTimeUsageLog()
getTimeUsageSummary()
getPlan()
getActivityReports()
getActivitiesToSubscribe()
0..*
+activities
0..*
+products
0..1 0..*
+subProjects
<<Entity>>
Project
0..* name : string
projectNo : string
+plan
+activities
<<Entity>>
Activity
name : string
comment : string
startTime : TimeTag
endTime : TimeTag
getCost()
getRevenu()
getProduction()
getDuration()
addProduction()
+projects
0..*
0..*
0..1
+activities
getActivities()
createActivity()
createSubPorject()
getSubprojects()
<<Entity>>
ActivityType
name : string
0..1
costFormula : string
revenuFormula : string
0..1
<<Entity>>
Plan
0..1
0..1
0..*
+statistic
<<Entity>>
Statistics
kind : string = Table
+type
0..*
0..*
+subType
0..1
getActivityCategoryTree()
getParent()
getPath()
+superType
0..10..1
EC 5th GIS Workshop - Stresa, Italy
<<Entity>>
MonthlyStatistics
<<Entity>>
DailyStatistics
<<Entity>>
ToDateStatistics
8
CML example
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();
};
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
9
UML Tools
Activity Inspector
ReportSubscription
Activity Editor
BOM
Business
Object
Methodology
OBOE CML
Activity Service
Code
Generation
CORBA
Report Subscription
service
Prism BOF CORBA services
Notification service
Event service
Authorisation service
Light POA
Light Persistent
State Service
JDBC
Naming Service
Trader service
Property service
OODB
RDB
Relationship service
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
10
Tools
Architecture
Client
UML tool
RentalService
Customer
CarRental
User Services
Car
Visual modelling
ORB client mapping
ORB
POA
ORB server mapping
CML parser
Entity
services
Java mapping
Lexical representation
HUTN
Business
services
Servant
Activator (LPSS)
Light Persistence State Service (LPSS)
code generation /
emitters
Factories for
persistent objects
Persistent
Entity Objects
Persistent
Service Objects
DB access
mapping
JDBC
DB definition
mapping
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
OODB
RDB
11
Hum an usable
lexical syntax
(CM L)
UM L
graphical
syntax
1b
3
OMG RFP process
1a
EDOC
extensions
UM L
m etamodel
5
2
4b
4a
CORBA 2.1
w/services
4c
Enterprise
Java Beans
CORBA 3.0
w/Components
28th-30th June 1999
COM +
Letter
intent
of Initial
submission
Revised
submission
BOD adoption
1. EDOC Profile
8/1/99
10/25/99
4/2000
7/2000
2. CORBA
Profile
6/1/99
8/2/99
1/2000
4/2000
3. HUTN
8/1/99
1/2000
6/2000
10/2000
EC 5th GIS Workshop - Stresa, Italy
12
OBOE Results
Technology
Example
EDOC Modeling Concept
(User, Business, Data
service: entity, relationship,
events)
UML Profile
CML language
Code generation tool
UML-based methodology
Geco Schlumberger
initial reference pilot
+
final pilot using the technology
Input to :
OMG Business Object
Inititative, DISGIS,
ISO/TC211, OpenGIS
Poster/Demonstration ,Stresa: Tuesday 29/6, 1400
Web-site from August, 1999: http://www.opengroup.org/oboe
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
13
28th-30th June 1999
EC 5th GIS Workshop - Stresa, Italy
14
OBOE Framework
& CORBA, EJB, COM, ...
Modeling with OBOE (UML with extensions or CML)
UML (w. ext)
module CarRental
{
userservice CarRental
{
};
userservice RentalManagment;
};
CML
module Rentals
{
service RentalService
{
ReservationID doReservation(in)
relationship list<salesPerson>
relationship dictionary
relationship list<Item>
subscribe notCheckedIn;
subscribe notCheckedOut;
};
entity Reservation
{
attribute Date
attribute Date
attribute long
attribute Date
attribute Date
}
};
1
CORBA 2.0
(CORBA Services)
28th-30th June 1999
fromDate;
toDate;
refID;
actualOutDate;
actualInDate;
2
Enterprise Java
Beans
EC 5th GIS Workshop - Stresa, Italy
3
COM / ActiveX
15
Event Source
Event
Event
Event
signalEvent(Event e);
List of event
listeners
Event Listener
handleEvent(Event e);
Event Listener
Entity/Service
implementing
the event listener
interface.
<<Entity>>
E1
Event Source
removeEventListener( EventListener el);
addEventListener( EventListener el);
List of event
listeners
<<EventSource>>
28th-30th June 1999
Event Listener
<<Event>>
Event1
<<EventListener>>
EC 5th GIS Workshop - Stresa, Italy
<<Entity>>
E2
16
Demonstrator 5
Architecture
Activity
Editor
Report
Subscription
BOF
CORBA
Trilogy
system
28th-30th June 1999
Access-right
Service
Name
Service
Notification
Service
Activity
Service
EC 5th GIS Workshop - Stresa, Italy
Activity
Inspector
Persistence
Service
POA
Email
Service
Report
Subscription
Service
17
Model world
BM
Risk
analysis
Domain
Model
Real world
Business
vission &
Prod desc.
Concepts&Artifacts
Processes
Business
BOM
Analysis
Actors
RM
High level
AppUse case mod
ReqM
Detailed
Use case mod
UIC
Application
Layer:
DM
UserService
Implementation
Architecture
Design
Collaboration
Design
Detailed
Design
UserService
BusinessService
Business
Layer:
BusinessService
Implementation
BusinessEntity
BusinessEntity
Implementation
DataService
Implementation
IM
AppImp
BusImp
DataImp
28th-30th June 1999
Component Infrastructure
Design
System
UIC implementation
Data
Layer:
EC 5th GIS Workshop - Stresa, Italy
Databases
18