Title: V615
1V615CeBS 1.x - Detailed Architecture
- Reed Shilts
- reed.shilts_at_sybase.com
2Topics
- Onion Model - Same Topics in More and More Depth
- What Is CeBS?
- Architecture Overview
- Overall, UI, Business Objects, EAI Connectivity
- Architecture Implementation Details
- UI goto V616 - UI Framework
- Framework Support, Business Object Layer, etc
- A Vertical In Detail
3CeBS
- Communications
- eBusiness
- Solution
- Pronounced See-Biz
4What Is CeBS
- Open Framework For Customer Self Service for use
by Telecommunication Carriers and Resellers - Telco Business Process Aware
- Framework - More Than An Application
- Application - More Than a Framework
- Useful Working Reference Implementation (Sample)
- Works Right Out Of The Box
5Goals of CeBS
- Designed to be customized
- EAI to Legacy Systems
- Integration with Data Warehousing for Mining
- Security Security Security
- Enable Collaboration
- Useful Working Reference Implementation (Sample)
- Works Right Out Of The Box
6Reference Implementation(sample)
- SybTel
- The fictitious telecommunications provider.
- This provides the web front end for legacy
systems - The source code is provided.
- English, Spanish, and Chinese
7User View of the Reference Implementation
8CeBS 1.x Implementation
- J2EE Application Using
- Apache / iPlanet - Web Server
- EAServer - JSP (presentation)
- EAServer - EJB (business logic)
- EAServer - EAI (connectors listeners)
- ASE - local customer database
- ASE-IQ - data warehouse
9CeBS Implementation
- Framework for Snap-ins
- All the framework work is finished
- Table Driven Configuration using XML Glue
- Authentication Authorization
- Not industry specific
- Role Based Security
- Vertical Business-Centric
- Telco industry specific
10CeBS Implementation - Framework
- Framework for Snap-Ins with built in
- User Management, Authentication, and
Authorization - HTML Based UI Framework (MVC Pattern)
- Business Object Dispatcher Pattern
- EAI Dispatcher Pattern
- EAI Listener Pattern
- Fine Grained Feature Licensing
- Uniform N-Tier Logging Throughout
- Administration and Monitoring Tools
11CeBS Implementation - Open Architecture
- Designed to be Extended
- Designed to be Customized
- ALL of the Sample JSP sources are shipped
- Fully Documented APIs XML for
- In-Bound - business object dispatcher
- Out-Bound - BOS (EAI) dispatcher
- Business and Data Access Objects
- Connector, EJB, JSP, other Configuration
- Extensive docs to EXTEND the existing application.
12CeBS 1.x Architecture Overview
13Architecture - 10,000 Foot View
SOAP
WML
HTML
HTTPS
User Interface Layer
Public API Dispatcher Pattern
User Mgmt Authorization
Trouble Ticket
Bill View
Shopping Cart
Product Catalog
Order Entry
Bill Analysis
Message Center
Retailer Info
Etc...
EAI Dispatcher Pattern
EAI Listeners
EAI Connectors
14Simplified Activity DiagramShowing Overall
Control Flow
User Interface
Public API
Business Objects
EAI Dispatcher Adapters
15Control Flow Overview -User Submits
RequestServlets Translate to XML Request
16Business Object Dispatcher (BOD)Validates the
XML Request
17BOD Forwards to Correct EJB
18BOD Forwards to Correct EJBWork Happens
19EJB Forwards to BOS Dispatcher
20BOS Dispatcher EnQueues Request
21Later - DeQueue and Send to Connector - which
Sends to BSS
22Later.Listener Receives Asynch Message
23Listener Sends to BODJust like Any Other
Request
24Architecture OverviewUser Interface Layer
25Context.
User Interface
Public API
Business Objects
EAI Dispatcher Adapters
26UI Layer - Philosophy
- Provide a Reference Implementation.
- Programmable by HTML Designers.
- Details are hidden in servlets which look like
HTML tags. - Allow 3rd Party Tag Libraries.
- Enable I18N and L10N (even a Chinese sample!)
- Not Just HTML - Future plans for WAP, Voice,
- Not Just User - Future plans for WebServices
(SOAP)
27UI Layer - OverviewModel - View - Controller
JSPs
Tags
Action Engine
Data Beans
Actions
Business Object Dispatcher (BOD) Gateway to
EJBs
28UI Layer - Extending
- Adding A New Vertical System
- Write JSPs (using our tags) LIKE HTML
- Write Actions (for MVC)
- Add the mapping to ONE XML file
- Done
29UI LayerFramework Details
- Refer to
- V616 CeBS UI Framework Overview
- Time 330 pm
- Date Thursday
- Location
30Architecture OverviewBusiness Object Layer
31Context.
User Interface
Public API
Business Objects
EAI Dispatcher Adapters
32BO Layer - Overview
- Delegation Pattern, Factory Pattern
- Easy To Extend
- Customer Information Database (CID)
- Local cache for Performance and Uniform View
- Company, User, Account Mapping
- Order, Product, Trouble Ticket History linked to
BOS - XML throughout
- Sharing between Verticals
33BO Layer - Overview
- BO Dispatcher (BOD) - only point of entry
- Converts XML to a binary tree (JDOM)
- Layer of User Level Security Access Authorization
- Table Driven for easy customization
- Stateless Session Beans Throughout
- Where the Business Logic Happens
- Access to database (CID)
- When Processed - forward to BOS Dispatcher
- Some Entity Beans - Complex database relationships
34BO Layer - Extending
- All Business Logic can be SubClassed
- The Custom EJB can subclass or even delegate to
our EJBs. - The Database CAN be Extended
- Samples Provided
35BO Layer - Extending
- Adding A New Vertical System
- Write your own EJBs or extend ours
- Write a task for the BOD
- Add the mapping to ONE XML file
- Done
- Bill Analysis Is PROOF - Implemented by B.I.
Division
36Architecture OverviewBack Office System (BOS)
Adapter Layer
37Context.
User Interface
Public API
Business Objects
EAI Dispatcher Adapters
38BOS Layer - Overview
- Generic Talks to multiple BSS
- Decoupled from rest of CeBS
- XML based Messages
- Delegation Pattern, Factory Pattern
- Easy To Extend
- Table Driven and Table Configured
- Base Classes Provided
- Numerous Samples Provided
39BOS Layer - Overview
- Synchronous
- Real Time Usage Query
- Seldom Used - Doesnt Scale
- Asynchronous
- Typical UseTrue Real Time Response Typically Not
Needed... - Store and Forward Queue
- Any Technology - JMS, MQ, TIBCO, CORBA, JDBC
40What are adapters
- Critical integration software for communication
between CeBS and existing backoffice systems - Connectors are responsible outbound messages
- Listeners are responsible for inbound messages
- Connectors and Listeners are collectively called
adapters
41BOS Layer - Extending
- Base Classes Provided
- Samples Provided (JMS, MQ, TIBCO, Calculus
Opera, Ericsson Progressor, Synthetic BSS) - Write your connector
- Write your Listener
- Add the mappings to TWO XML files
- Done
42CeBS Architecture Details
43CeBS Architecture DetailsTopics
- User Interface
- Support Subsystems in the Framework
- Business Object Dispatcher (BOD)
- Business Objects
- Back Office Dispatcher (BOSD)
- Security
- Trouble Ticket Vertical in Detail
44CeBS Typical Activity Flow...New Trouble Ticket
- Business Process Vertical
- User Action - Create/Edit a Trouble TicketUI
(JSP) ? Data Beans Action ? BOD ? BOD Task ?
EJB ? BOSD ? Connector ? BOS - Process Notification (Asynch from BOS)BOS ?
Listener ? BOD ? PNTask ? EJB
45CeBS Architecture DetailsUser Interface Layer
46CeBS User Interface Layer
- Refer to
- V616 CeBS UI Framework Overview
- Time 330 pm
- Date Thursday
- Location
47CeBS Architecture DetailsSupport Subsystems in
the Framework
48Support Subsystems(horizontal)
- Customer Information Database (CID)
- Database and other helpers
- Security
- Customer Portfolio
- Session Management
- User Management
- Message Center
49Support Subsystems(horizontal)
- BOD Dispatcher - Outside World Access Point
(incoming) - BOS Dispatcher - Telco BSS Access Point
(outgoing) - System Management
- All are EJBs or Service Components or Simple
Classes, Available to All Callers
50CeBS Architecture DetailsBusiness Object
Dispatcher (BOD)
- Gateway To The EJBs
- Only External API
51Context.
User Interface
Public API
Business Objects
EAI Dispatcher Adapters
52Business Object Dispatcher (BOD)Gateway to the
EJBs
- Single Point of Entry to CeBS LogicString
dispatch(String strRequest) - XML IN and OUT
- Calls Worker Tasks Which Call Specific EJBs
- Table Driven Dispatcher Pattern
- Primary Wall of Security
- Rule - cannot trust anything beyond the BOD
- Rule - cannot trust the XML payload
53BODDispatch(..) 1/2Work Performed...
- Separate Off UserContext into JDOM Element
- Who Is Making the Call
- On Behalf Of Whom
- Separate Work Elements into JDOM Element(s)
- 1..N Units Of Work
- Next Slide ...
54BODDispatch(..) 2/2Work Performed...
- .
- Perform The Work (Task)
- Table Lookup for Dynamic Task Class
- Call The TaskMyTask.exec(UserContext,
JDOMElement) - Format Returned JDOM Element to an XML String
- XML Details Next
- Then Task Detailed...
55BOD - XML In
- Pass it XML describing what you would like done.
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltVPgt
- ltUserContext SessionHandle"UflX8ssU3Bv/8rjX0Eg
"/gt - ltTroubleTicketgt
- ltTicketViewFilter WorkID"1" RowCount25"gt
- ltTerminal ConditionNum"1" /gt
- ltStatementgtUserIDlt/Statementgt
- lt/TicketViewFiltergt
- lt/TroubleTicketgt
- lt/VPgt
56BOD - XML Returned
- ltVPgt
- ltTroubleTicketgt
- ltTicketView TotalRowCount"2" WorkID"1"gt
- ltTicket TicketID"5
- Number"VPTT0000001114" StatusCode"107"gt
- . . . .
- lt/Ticketgt
- lt/TicketViewgt
- lt/TroubleTicketgt
- lt/VPgt
57BOD - XML Input Pattern 1/2The Request in
Detail
- ltVPgt ? CeBS Root Element
- ltUserContext SessionHandle"UflX8ssU3Bv/8rjX0Eg
"/gt - ltTroubleTicketgt ? Task SubSystem Name
- ltTicketViewFilter WorkID"1"gt ? Work Element
- ...ViewFilter - ltTerminal ConditionNum"1" /gt? PayLoad...
- ltStatementgtUserIDlt/Statementgt
- lt/TicketViewFiltergt
- lt/TroubleTicketgt
- lt/VPgt
58BOD - XML Input Pattern 2/2
- SessionHandle is Authenticated User Instance
- SubSystem Specifier Work Element MAY be
a single BOD Task. Typically, a Single
SubSystem Specific Task. - Work Element WorkID Identifies One of the
Multiple Outstanding units of work.
59BOD Dispatches To A Task
- Task Java Class Which Calls Business Object
EJB - Table Driven - tasks.xml
- Same Logic Used by BOS Dispatcher
60BOD Task
- extends com.sybase.vp.bod.BaseTask
- Entry Point public Element processTask( UserCon
text userContext, Element taskElement ) - Typically Calls an EJB for the Real Work
- Task is Outside the EJB Work Transaction
- The task Knows if the EJB Truly Succeeded
61(No Transcript)
62Example Task Definitionin tasks.xml
- For Trouble Ticket View Filter...
- lt?xml version"1.0" encoding"UTF-8"?gt
- ltDispatchableClasses PackageName"Tasks gt
- . . . .
- ltDispatchableInstance
- id"TroubleTicket.TicketViewFilter
- JavaClass"com.sybase.vp.tt.bod.TroubleTicketTas
k - Name"TicketViewFilter
- gt
- ltInstanceParam Name"ejbName"
Value"TroubleTicket"/gt - lt/DispatchableInstancegt
- . . .
- lt/DispatchableClassesgt
63Business Object Dispatcher (BOD)ReCap
- Single Point of Entry to CeBS LogicString
dispatch(String strRequest) - Primary Wall of Security
- XML IN and OUT
- Calls Worker Tasks Which Call Specific EJBs
- Table Driven Dispatcher Pattern
64Architecture DetailsBusiness Object Layer
65Context.
User Interface
Public API
Business Objects
EAI Dispatcher Adapters
66Business Object Layer - Overview
- Stateless Session EJBs
- Scalability
- Couple of Entity Beans, but they are the
exception - Bean Managed Persistence
- Data Passed Around as Binary XML (JDOM)
- Business Needs Define the Vertical Subsystems
67CeBS Bean Implementation Base Classes
- VPEJB
- Provides all the base EJB functionality
- Provides many helper methods
- Lazy creation of common helper beans
- Getting a Database Connection
- VPSessionBean (and VPEntityBean)
- Implements javax.ejb.SessionBean (and EntityBean)
- Provide Common Session (and Entity) Bean Methods
and Helper Methods
68CeBS Bean Implementation Base Classes
- VPObject
- Not EJB specific, a common interface
- Defines debugging and logging features
- VPObjectImpl
- Not EJB specific, a common interface
- Implements VPObjectall the debugging and logging
features
69Basic CeBS Class Inheritance Diagram
com.sybase.vp.lang.VPObject
CeBS base
javax.ejb
Work Bean
VPObjectImpl
extends
implements
javax.ejb.EntityBean
javax.ejb.SessionBean
VPEJB
VPSessionBean
VPEntityBean
MyWorkSessionBean
MyWorkEntityBean
70CeBS EJB Exceptions
- All EJBs Define Own Exceptions
- Extend com.sybase.vp.lang.VPEJBException
- Bit Reason Codes - Not Strings
- Can Have Multiple Reasons For Failure
- Internationalization
- Easier for Callers To Handle
71Remote Interface Pattern
- From UI
- First Argument is UserContext (next slide)
- Other Argument(s) are an XML JDOM Element
- Return an XML JDOM Element
- From BOS
- First Argument is VPUserID
- Other Argument(s) are an XML JDOM Element
- Return an XML JDOM Element
72UserContext and UserID
- User ID (aka VPUserID)
- 64bit Integer Unique Identifier for Any User
- Used Throughout the System (UI and BL)
- When a User Logs In, This is Placed in the
Session Information (pointed to by the Session
Handle)
73UserContext and UserID
- UserContext
- Authenticated User Information
- UserID - the portal user manipulating the portal
(the logged in user) - OnBehalfOfUserID - the portal user beneficiary of
the work performed by the UserID(like customer
being serviced by the CSR)
74Business ObjectsRecap
- Stateless Session Beans (mostly)
- Uniform Calling Pattern
- Called by the BOD - Not Client
- Data Passed in Binary XML Tree (JDOM)
75CeBS Architecture DetailsBack Office System
Dispatcher (BOSD)
76Context.
User Interface
Public API
Business Objects
EAI Dispatcher Adapters
77Back Office System Dispatcher (BOSD)Gateway To
The EAI (Connectors)
- Class com.sybase.vp.bos.out.BOSDispatcher
- Asynchronous (Fire and Forget)void postMessage(.
. .) - SynchronousElement postMessage(. . .)
- XML IN and OUT
- Table Driven Dispatcher Pattern for Connectors
- Details Separate Topic...
78CeBS Architecture DetailsCeBS Security
79CeBS SecurityConcepts
- Authorization ! Authentication
- Authentication - who are you
- Authorization - can you do that
80CeBS SecurityConcepts
- Custom Authentication
- Login Action Uses the CeBS CID
- Overrides EAServer Authentication
- Can Delegate to E-Portal or LDAP or Custom
81CeBS SecurityConcepts
- Custom Authorization
- Custom Role Based Security
- Fine Grained Control
- Superset of E-Portal ACDB
- Coordinated with Hierarchical Users and Accounts
- Authorization Checking Can be one of the Most
Lengthy Operations in CeBS...
82CeBS SecurityRole Based
- Typically Less Than a DOZEN Roles in a System
- A Single Role A Set Of Capabilities for a Set
Of SubSystems - A User Has a Single Role
- Security Role is Used by UI for Presentation Too
- All Data is Stored in the CID
- In Future can Delegate to EPortal or LDAP(hooks
already in place)
83CeBS SecurityRole Based
- Each Role is a 2-Dim MATRIX of bit flags
- First Dimension (columns)
- Bit Flags to enable (the capabilities)Read,
Write, Update, Manage, - Superset of E-Portal 2.0 Permissions
- Second Dimension (rows)
- Logical Subsystem or FeatureUser Data or
Trouble Ticket or Portfolio
84CeBS SecurityRole Based
- A Simple user Role May
- Create and Read but Not Close a Trouble Ticket
- View the Catalog but Not Edit It
- View a Simple Bill but Not Analyze It
- An administrator Role May...
- Affect Other Users
- Subject to Hierarchy Constraints (yes - checked!)
- Create Update Trouble Tickets for Other Users
85CeBS SecurityRole Capability Flags
- Read, Update, Create, Delete, Execute
- Common Primitives
- Surrogate (not in EPortal 2.0)
- Can Act On Behalf Of Another User (a CSR Priv)
- ChildToo (not in EPortal 2.0)
- Look Into Child Organizations (Admin Privs)
- Key to Hierarchical Security System
- Define, Manage, Administer
- Super User Capabilities
86Sample Role - User
87CeBS SecurityHow To Check...
- BOD Task or EJB Calls - isTaskAllowed()
- Example - Can I View a Trouble Ticket ?
- if( ! isTaskAllowed( ? API
- userContext, ? Who Am I and
OnBehalfOf... - SysCode.SUBSYSTEM_TT, ? SubSystem
- AccessControlCode.AC_Read) )? Capability
Requested - return null ? return on
failure... -
- ttbean (TroubleTicket)createEJB() ? Continue
if Success... - . . . .
88CeBS Architecture DetailsOne Vertical In
DetailTrouble Ticket
89CeBS Typical BeanTrouble Ticket
- Business Process Vertical
- User Action - Create/Edit a Trouble TicketUI
(JSP) ? Data Beans Action ? BOD ? BOD Task ?
EJB ? BOSD ? Connector ? BOS - Process Notification (Asynch from BOS)BOS ?
Listener ? BOD ? PNTask ? EJB
90Trouble TicketJava Packages Involved
- Root Packagecom.sybase.vp.tt
- Business Logic (EJB) Package com.sybase.vp.tt.bl
- BOD Task (described later) com.sybase.vp.tt.bod
- UI Support - Data and Action Beans
com.sybase.vp.tt.ev - BOS Interface - PN Tasks and BOSD Return
Handler com.sybase.vp.tt.bos
91Trouble TicketBOD Task Responsibilities
- Standard Verbs
- New - Create A New Trouble Ticket
- Modify - Modify (Annotate) an Existing TT
- View - Filter to Retrieve a set of TTs
- Basic Procedure
- isTaskAllowed()...
- Call EJB Which Returns a JDOM
- If Successful - incrementMeasured (system
counters) - Otherwise Call addError()
92Trouble Ticket Business ObjectWork for a NEW
Ticket
- Generate a TT Number
- Save Data to CID
- Status is Entered (in the CID but not accepted
by BOS) - Post Message to BOSD
- Return the TT Number
- Note
- Caller gets a CeBS TT Number
- Still in flight to Connector and BOS
93Later...
- Connector Actually Delivers the Ticket to BOS
- The Return Handler
- Updates the status in the CID to Submitted
- Updates the Actual BOS TT Number. This provides
the mapping from CeBS Number to BOS Number. - All by Calling the Real TroubleTicket EJB, No
Back Doors.
94Later StillBack Office Updates the Trouble
Ticket
- Listener is Notified of Event in BOS
- Call the EJB via the BOD to...
- Update the status in the CID (if applicable)
- Update Information in the CID (if applicable)
- All by Calling the Real TroubleTicket EJB, No
Back Doors.
95What Is Stored in the Local DataBase (CID)
BOS Account Number
Our TT Number
BOS TT Number
Text Description
Custom Contact Info
Property Set for Extension
96Trouble TicketEJB Classes
- Remote Interfacecom.sybase.vp.tt.bl.TroubleTicket
- Home Interfacecom.sybase.vp.tt.bl.TroubleTicketHo
me - Bean Implementationcom.sybase.vp.tt.bl.TroubleTic
ketBean - Exceptionscom.sybase.vp.tt.bl.TroubleTicketExcept
ioncom.sybase.vp.tt.bl.DuplicateInsertException - Helper Classcom.sybase.vp.tt.bl.TroubleTicketData
97Trouble TicketImplementation Class
etc
javax.ejb.SessionBean
VPEJB
com.sybase.vp.lang.VPSessionBean
CeBS base
javax.ejb
com.sybase.vp.tt.bl.TroubleTicketBean
Work Bean
extends
implements
98CeBS 1.x ArchitectureConclusion
99V615 - CeBS 1.x ArchitectureSummary
- J2EE Based Framework
- Stateless Session Beans (mostly)
- Bean Managed Persistence
- BOD Gateway to the Business Logic
- BOSD Gateway to the Connectors
- Role Based Security
- Customer Information Database (CID)
- Flexible Logging for Trouble Diagnosis
100CeBS Implementation - Open Architecture
- Designed to be Extended
- Designed to be Customized
- ALL of the Sample JSP sources are shipped
- Fully Documented APIs XML for
- In-Bound - business object dispatcher
- Out-Bound - BOS (EAI) dispatcher
- Business and data access objects
- Connector, EJB, JSP, other Configuration
- Extensive docs to EXTEND the existing application.
101Where do I go from here?
- Other TechWave Sessions
- V616 - CeBS UI Framework Overview
- V614 - CeBS Catalog Subsystem
- V617 - Enhanced Logging for a J2EE Application
- CeBS Manuals...
- CeBS - Using and Customizing the Portal
- CeBS - Developers Guide
- Sample code for Reference Implementation (SybTel)
102V615 - CeBS 1.x - Detailed Architecture
- reed.shilts_at_sybase.com