Intershop bo

Preview:

Citation preview

Presented by : Pradeep J V

Business Objects

Business Object Framework

Persistent Objects

Transient Objects

EDL Modeling

Implementations of Business objects

Start Node

Pipeline Dictionary

Pipeline ProcessorISML-TemplatePipelet Pipelet

Request

Handler

Servlet

ISML

Template

Processor

Java

Server

Page

*.jsp

*_jsp.java

Servlet

Engine

(Tomcat)

*_jsp.class

Java

Compiler

(javac)

*_jsp.class

Se

rvle

t

En

gin

e

(To

mcat)

Webadapter

WebserverPO

PO PO

Persistent Object

Layer

Persistent Object Cache

Business Object

LayerBO

Introduce a new layer above the persistence layer

ORM Layer State

BO Layer Behavior

Make domain-concepts explicit in the API

Provide concepts for customization and extension

Support multi-application and multi-tenancy nature of Intershop 7

Encapsulate everything important for a certain business domain

Represents a certain business functionality that "belongs together".

Consists of entities, value objects, repositories, extensions and context objects

Represent business objects that have an identity

Provide methods that have a meaningful business function to modify internal state

Root entity as single entry point into an aggregate

All other entities reachable by navigation from root entity only

Value objects are defined by the values of their attributes

Manages the lifecycle of the root entity

Creation

Retrieval

Deletion

Only one repository per aggregate

Provide additional methods that operate on a business object

Are attached to the host object

Are created by an Extension Factory

Can be restricted to some business objects only

Every Business Object lives in a Context

Created by someone who wants to use the Business Object Layer (App layer)

Holds the extension factories that can be used

Typically: lifespan of one request

(Also holds the cache for Business Objects)

One specific Implementation type of Business Objects (BO)

Mapping to Database Structures by ORM Engine

Represent just Data, no Business Logic

Examples: ProductPO, CatalogPO

Intershop 7 provides two different ways of Java object implementations:

Persistent Objects (PO), encapsulated by business interfaces, access via corresponding manager classes

This is the Enfinity Suite 6 approach, currently still used in most of the backoffice parts

Business Objects (BO) which are business interfaces and can be wired to different implementations, access via corresponding repository classes

This is the genuine IS 7 approach, currently mainly used in storefront

In the context of POs, a relationship between two classes indicates a link between the database tables underlying the POs.

Intershop 7 is uses mostly two basic relationship types:

Association relationships

Weak relations

Association relationships express

a unidirectional or

bidirectional

semantic connection between classes.

Weak relations express a unidirectional relationship between classes

"Unidirectional" in this context means that the relationship is only navigable in one direction

The weak relation connecting WarehousePOand Address expresses that we only navigate the relationship from WarehousePOto Address, never the other way around

EDL

Is a textual domain-specific language (DSL) for modeling business objects for Intershop 7

An EDL file typically consists of:

imports for other EDL files that contain referenced types

primitive type declarations

external type declarations

namespace declarations

complex type declarations

Recommendations:

Just 1 EDL file per object (no technical limit)

Use the non-graphical EDL Model Editor (performance)

Imports

Namespace

Object Definition

Object Attributes

Modifier

ORM Relation

«interface»

BusinessObjectRepository

«interface»

BusinessObject

«interface»

WarehouseBO

«interface»

StockBO

<<class>>

ORMWarehouseBOImpl

<<class>>

ORMStockBOImpl

<<class>>

WarehousePO

<<class>>

StockPO

<<class>>

ORMWarehouseBORepositoryImpl

<<class>>

WarehouseBORepository

<<class>>

AbstractDomainRepositoryBOExtension

<<class>>

AbstractBusinessObject

<<class>>

AbstractExtensibleObjectBO

Recommended