Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers,...

Preview:

Citation preview

Das Kernmodell einesWorkflow-Management-

Systems

EntwurfEntwurf

Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias PfauBernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau

FHDW Hannover 2005FHDW Hannover 2005

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Einleitung

Umsetzung der Analyse in den Entwurf Architektur-Meetings Festlegung der Programmiersprache Englische Begrifflichkeiten

Agenda

Einleitung Analyse im Entwurf

CRC-VorgehensmodellCRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

CRC-VorgehensmodellClass, Responsibilities and Collaboration

Eine Karteikarte pro Klasse Karteikarten werden an alle

Gruppenmitglieder verteilt Klassenname, Verantwortlichkeiten und

Beziehungen werden notiert Teammitglieder simulieren die

Kommunikation der Objekte

CRC-VorgehensmodellClass, Responsibilities and Collaboration

Alle Teammitglieder sind am Entwurfsprozess gleichermaßen beteiligt

Unterschiedliche Ansätze führen zu konstruktiven Diskussionen

Ergebnisse sind bereits echte Entwurfslösungen

CRC-VorgehensmodellClass, Responsibilities and Collaboration

CRC-VorgehensmodellClass, Responsibilities and Collaboration

Ergebnisse fließen ein in die... Umsetzung des Klassendiagramms, Erstellung von Sequenzdiagrammen und Verfeinerung des Oberflächenprototyps.

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

SchichtenarchitekturSchichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Schichtenarchitektur

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur KlassendiagrammeKlassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Klassendiagramm – Type

name: String

Activ ityType(String)

getConsumees(): Set

removeConsumee(EventType)

addConsumee(EventType)

getName(): String

setName(String)

createNewInstance(): ActivityType

accept(ActivityTypeVisitor)

ActivityType

UserActiv ityType(String, Collection)

getBusinessObjectOperation(): BOOperation

getRoles(): Collection

setRoles(Collection)

accept(ActivityTypeVisitor)

createNewInstance(): ActivityType

setBusinessObjectOperation(BOOperation)

UserActivityType

SystemActivityType(String, Rule)

createNewInstance(): ActivityType

accept(ActivityTypeVisitor)

SystemActivityType

name: String

BusinessProcessModel()

createNewInstance(): BusinessProcess

addOriginalEventType(String)

addUserActiv ityType(String, Collection, BOOperation)

addActivityTypeToEventTypeTransition(Activ ityType, EventType)

addEventTypeToActiv ityTypeTransition(EventType, ActivityType)

getAllDefinedBORoles(): Collection

removeEventType(EventType)

removeActiv ityType(Activ ityType)

removeActiv ityTypeToEventTypeTransition(Activ ityType, EventType)

removeEventTypeToActiv ityTypeTransition(EventType, ActivityType)

getStartActivityType(): StartActivityType

setStartActivityType(StartActivityType)

getStopEventTypes(): Set

getEventTypes(): Set

BusinessProcessModel

name: String

EventType(String)

createNewInstance(): Event

getProducers(): Set

addProducer(ActivityType)

removeProducer(ActivityType)

getInverse(): EventType

getName(): String

setName(String)

accept(EventTypeVisitor)

EventType

theModelManager: ModelManager

ModelManager()

saveModel(BusinessProcessModel, AbstractValidity)

createModel(String): BusinessProcessModel

deleteModel(BusinessProcessModel)

editModel(BusinessProcessModel)

selectModel(): BusinessProcessModel

getTheModelManager(): ModelManager

ModelManager

OriginalEventType(String)

accept(EventTypeVisitor)

getInverse(): EventType

OriginalEventType

InverseEventType(String, OriginalEventType)

getInverse(): EventType

accept(EventTypeVisitor)

InverseEventType

handleOriginalEventType()

handleInverseEventType()

«interface»EventTypeVisitor

RevisionManager

«interface»RootObject

«interface»Rule

StartActivityType(String, Collection)

createNewProxyInstance(): ProxyOrActivity

StartActivityType

RolePersistenceAdapter()

RolePersistenceAdapter «interface»Role

ProcessManager

handleSystemActiv ityType(SystemActiv ityType)

handleUserActivityType(UserActiv ityType)

handleStartActiv ityType(StartActivityType)

«interface»ActivityTypeVisitor

«interface»BOOperation

«interface»EditSession

Association

- consumees

*

- producers

*

- businessProcessModel

1

- activityTypes *

- role1..*

- bOOperation0..1

- rule1

- eventTypes*

0..1

- processManager

- start0..1

- businessProcessModel

*

businessProcessModel - editSession

*

- revisionManager1

- inverse

1

- inverse 1

- defaultAssociation

1

Klassendiagramm – Typebene {Detailansicht}

name: String

ActivityType(String)

getConsumees(): Set

removeConsumee(EventType)

addConsumee(EventType)

getName(): String

setName(String)

createNewInstance(): ActivityType

accept(ActivityTypeVisitor)

ActivityType

UserActivityType(String, Collection)

getBusinessObjectOperation(): BOOperation

getRoles(): Collection

setRoles(Collection)

accept(ActivityTypeVisitor)

createNewInstance(): ActivityType

setBusinessObjectOperation(BOOperation)

UserActivityType

SystemActivityType(String, Rule)

createNewInstance(): ActivityType

accept(ActivityTypeVisitor)

SystemActivityType

name: String

BusinessProcessModel()

createNewInstance(): BusinessProcess

addOriginalEventType(String)

addUserActivityType(String, Collection, BOOperation)

addActivityTypeToEventTypeTransition(ActivityType, EventType)

addEventTypeToActivityTypeTransition(EventType, ActivityType)

getAllDefinedBORoles(): Collection

removeEventType(EventType)

removeActivityType(ActivityType)

removeActivityTypeToEventTypeTransition(ActivityType, EventType)

removeEventTypeToActivityTypeTransition(EventType, ActivityType)

getStartActivityType(): StartActivityType

setStartActivityType(StartActivityType)

getStopEventTypes(): Set

getEventTypes(): Set

BusinessProcessModel

name: String

EventType(String)

createNewInstance(): Event

getProducers(): Set

addProducer(ActivityType)

removeProducer(ActivityType)

getInverse(): EventType

getName(): String

setName(String)

accept(EventTypeVisitor)

EventType

theModelManager: ModelManager

ModelManager()

saveModel(BusinessProcessModel, AbstractValidity)

createModel(String): BusinessProcessModel

deleteModel(BusinessProcessModel)

editModel(BusinessProcessModel)

selectModel(): BusinessProcessModel

getTheModelManager(): ModelManager

ModelManager

OriginalEventType(String)

accept(EventTypeVisitor)

getInverse(): EventType

OriginalEventType

InverseEventType(String, OriginalEventType)

getInverse(): EventType

accept(EventTypeVisitor)

InverseEventType

handleOriginalEventType()

handleInverseEventType()

«interface»EventTypeVisitor

RevisionManager

«interface»RootObject

«interface»Rule

StartActivityType(String, Collection)

createNewProxyInstance(): ProxyOrActivity

StartActivityType

RolePersistenceAdapter()

RolePersistenceAdapter «interface»Role

ProcessManager

handleSystemActivityType(SystemActivityType)

handleUserActivityType(UserActivityType)

handleStartActivityType(StartActivityType)

«interface»ActivityTypeVisitor

«interface»BOOperation

«interface»EditSession

Association

- consumees

*

- producers

*

- businessProcessModel

1

- activityTypes *

- role1..*

- bOOperation0..1

- rule1

- eventTypes*

0..1

- processManager

- start0..1

- businessProcessModel

*

businessProcessModel - editSession

*

- revisionManager1

- inverse

1

- inverse 1

- defaultAssociation

1

name: String

ActivityType(String)

getConsumees(): Set

removeConsumee(EventType)

addConsumee(EventType)

getName(): String

setName(String)

createNewInstance(): ActivityType

accept(ActivityTypeVisitor)

ActivityType

UserActivityType(String, Collection)

getBusinessObjectOperation(): BOOperation

getRoles(): Collection

setRoles(Collection)

accept(ActivityTypeVisitor)

createNewInstance(): ActivityType

setBusinessObjectOperation(BOOperation)

UserActivityType

SystemActivityType(String, Rule)

createNewInstance(): ActivityType

accept(ActivityTypeVisitor)

SystemActivityType

name: String

BusinessProcessModel()

createNewInstance(): BusinessProcess

addOriginalEventType(String)

addUserActivityType(String, Collection, BOOperation)

addActivityTypeToEventTypeTransition(ActivityType, EventType)

addEventTypeToActivityTypeTransition(EventType, ActivityType)

getAllDefinedBORoles(): Collection

removeEventType(EventType)

removeActivityType(ActivityType)

removeActivityTypeToEventTypeTransition(ActivityType, EventType)

removeEventTypeToActivityTypeTransition(EventType, ActivityType)

getStartActivityType(): StartActivityType

setStartActivityType(StartActivityType)

getStopEventTypes(): Set

getEventTypes(): Set

BusinessProcessModel

name: String

EventType(String)

createNewInstance(): Event

getProducers(): Set

addProducer(ActivityType)

removeProducer(ActivityType)

getInverse(): EventType

getName(): String

setName(String)

accept(EventTypeVisitor)

EventType

theModelManager: ModelManager

ModelManager()

saveModel(BusinessProcessModel, AbstractValidity)

createModel(String): BusinessProcessModel

deleteModel(BusinessProcessModel)

editModel(BusinessProcessModel)

selectModel(): BusinessProcessModel

getTheModelManager(): ModelManager

ModelManager

OriginalEventType(String)

accept(EventTypeVisitor)

getInverse(): EventType

OriginalEventType

InverseEventType(String, OriginalEventType)

getInverse(): EventType

accept(EventTypeVisitor)

InverseEventType

handleOriginalEventType()

handleInverseEventType()

«interface»EventTypeVisitor

RevisionManager

«interface»RootObject

«interface»Rule

StartActivityType(String, Collection)

createNewProxyInstance(): ProxyOrActivity

StartActivityType

RolePersistenceAdapter()

RolePersistenceAdapter «interface»Role

ProcessManager

handleSystemActivityType(SystemActivityType)

handleUserActivityType(UserActivityType)

handleStartActivityType(StartActivityType)

«interface»ActivityTypeVisitor

«interface»BOOperation

«interface»EditSession

Association

- consumees

*

- producers

*

- businessProcessModel

1

- activityTypes *

- role1..*

- bOOperation0..1

- rule1

- eventTypes*

0..1

- processManager

- start0..1

- businessProcessModel

*

businessProcessModel - editSession

*

- revisionManager1

- inverse

1

- inverse 1

- defaultAssociation

1

Activ ityState()

getBeginTime(): Date

getEndTime(): Date

ActivityState

type: ObjectIdentity

BusinessProcess(ObjectIdentity, UserActiv ity, Set)

getTypeOf(): BusinessProcessModel

addActiv ity(Activ ity)

removeActiv ity(Activ ity)

addEvent(Event)

removeEvent(Event)

getActivatedActiv ities(): Set

getInProgressActiv ities(): Set

isProcessed(): boolean

is InProgress(): boolean

getBeginTime(): Date

getEndTime(): Date

getStartActiv ity(): UserActiv ity

getProcessView(): ProcessView

getTypePersistenceAdapter(): TypePers istenceAdapter

BusinessProcess

type: ObjectIdentity

Activ ity(ObjectIdentity)

consumeEvents()

undoConsumeEvents()

produceEvents()

setInProgress()

setActivated()

setProcessed()

getConsumedEvents(): Set

getProcess(): BusinessProcess

accept(Activ ityVis itor)

getBeginTime(): Date

getEndTime(): Date

getTypeOf(): Activ ityType

Activity

type: ObjectIdentity

open: boolean

Event(ObjectIdentity, Activ ity)

getTypeOf(): EventType

getProducer(): Activ ity

setClosed()

setOpen()

Event

SystemActiv ity(ObjectIdentity)

execute()

evaluateRule(): boolean

getTypeOf(): Activ ityType

SystemActivity

UserActiv ity(ObjectIdentity)

begin(Person)

complete()

rollback()

getTypeOf(): Activ ityType

getPerson(): Person

getNextPredecessorOfType(Activ ityType): ProxyOrActiv ity

UserActivity

observers: Observer

Observable()

register(Observer)

deRegister(Observer)

notifyObservers()

Observable

theProcessManager: ProcessManager

getTheProcessManager(): ProcessManager

getStartActiv ities(): Collection

getActivatedActiv ities(): Collection

getInProgressActiv ities(): Collection

update()

serialize()

deserialize()

addBusinessProcess(BusinessProcess)

getReadSession(): ReadSession

ProcessManager

update()

«interface»Observer

model: BusinessProcessModel

StartActiv ityProxy(BusinessProcessModel)

begin(Person)

complete()

rollback()

getPerson(): Person

getNextPredecessorOfType(Activ ityType): ProxyOrActiv ity

getTypeOf(): Activ ityType

StartActivityProxy

«interface»ReadSession

RevisionManager

ProcessViewFactory

«interface»ProcessView

serializeProcesses(Collection)

restoreProcesses(): Collection

«interface»ProcessPersistenceAdapter

fi lename: String

serializeProcesses(Collection)

restoreProcesses(): Collection

ProcessPersistenceXStream

XStream

processBeginTime: Date

TypePersistenceAdapter(Date)

getType(ObjectIdentity): Object

TypePersistenceAdapter

begin(Person)

complete()

rollback()

getPerson(): Person

getNextPredecessorOfType(Activ ityType): ProxyOrActiv ity

getTypeOf(): Activ ityType

«interface»ProxyOrActivity

BusinessProcessState(BusinessProcess)

getBusinessProcess(): BusinessProcess

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

is InProgress(): boolean

BusinessProcessState

Activated()

getBeginTime(): Date

getEndTime(): Date

Activated

begin: Date

InProgress(Date)

getBeginTime(): Date

getEndTime(): Date

InProgress

begin: Date

end: Date

Processed(Date, Date)

getBeginTime(): Date

getEndTime(): Date

Processed

InProgress(BusinessProcess)

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

is InProgress(): boolean

InProgress

Processed(BusinessProcess)

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

is InProgress(): boolean

Processed

Person

ObjectSpace

- s tate

1

- processViewFactory

{order}

1

- businessProcess1

- activ ities1..*

- businessProcess

1

+ events1..*

- s tart 1

- processView

0..1

- typePers istenceAdapter

1

- businessProcess

1

- state

1

- objectSpace

1

- businessProcesses

*

- consumedEvents

*

- producer

1

- person

0..1

- observers

*

- processPers istenceAdapter

1

- readSession1

- revis ionManager

{order}

1

«call»

0..1 - xstream

Klassendiagramm – Instanzebene

Activ ityState()

getBeginTime(): Date

getEndTime(): Date

ActivityState

type: ObjectIdentity

BusinessProcess(ObjectIdentity, UserActivity, Set)

getTypeOf(): BusinessProcessModel

addActivity(Activ ity)

removeActivity(Activ ity)

addEvent(Event)

removeEvent(Event)

getActivatedActivities(): Set

getInProgressActivities(): Set

isProcessed(): boolean

isInProgress(): boolean

getBeginTime(): Date

getEndTime(): Date

getStartActiv ity(): UserActivity

getProcessView(): ProcessView

getTypePersistenceAdapter(): TypePersistenceAdapter

BusinessProcess

type: ObjectIdentity

Activ ity(ObjectIdentity)

consumeEvents()

undoConsumeEvents()

produceEvents()

setInProgress()

setActivated()

setProcessed()

getConsumedEvents(): Set

getProcess(): BusinessProcess

accept(Activ ityVisitor)

getBeginTime(): Date

getEndTime(): Date

getTypeOf(): Activ ityType

Activity

type: ObjectIdentity

open: boolean

Event(ObjectIdentity, Activity)

getTypeOf(): EventType

getProducer(): Activ ity

setClosed()

setOpen()

Event

SystemActivity(ObjectIdentity)

execute()

evaluateRule(): boolean

getTypeOf(): Activ ityType

SystemActivity

UserActivity(ObjectIdentity)

begin(Person)

complete()

rollback()

getTypeOf(): Activ ityType

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

UserActivity

observers: Observer

Observable()

register(Observer)

deRegister(Observer)

notifyObservers()

Observable

theProcessManager: ProcessManager

getTheProcessManager(): ProcessManager

getStartActiv ities(): Collection

getActivatedActivities(): Collection

getInProgressActivities(): Collection

update()

serialize()

deserialize()

addBusinessProcess(BusinessProcess)

getReadSession(): ReadSession

ProcessManager

update()

«interface»Observer

model: BusinessProcessModel

StartActiv ityProxy(BusinessProcessModel)

begin(Person)

complete()

rollback()

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

getTypeOf(): Activ ityType

StartActivityProxy

«interface»ReadSession

RevisionManager

ProcessViewFactory

«interface»ProcessView

serializeProcesses(Collection)

restoreProcesses(): Collection

«interface»ProcessPersistenceAdapter

fi lename: String

serializeProcesses(Collection)

restoreProcesses(): Collection

ProcessPersistenceXStream

XStream

processBeginTime: Date

TypePersistenceAdapter(Date)

getType(ObjectIdentity): Object

TypePersistenceAdapter

begin(Person)

complete()

rollback()

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

getTypeOf(): Activ ityType

«interface»ProxyOrActivity

BusinessProcessState(BusinessProcess)

getBusinessProcess(): BusinessProcess

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

BusinessProcessState

Activated()

getBeginTime(): Date

getEndTime(): Date

Activated

begin: Date

InProgress(Date)

getBeginTime(): Date

getEndTime(): Date

InProgress

begin: Date

end: Date

Processed(Date, Date)

getBeginTime(): Date

getEndTime(): Date

Processed

InProgress(BusinessProcess)

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

InProgress

Processed(BusinessProcess)

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

Processed

Person

ObjectSpace

- state

1

- processViewFactory

{order}

1

- businessProcess1

- activ ities1..*

- businessProcess

1

+ events1..*

- start 1

- processView

0..1

- typePersistenceAdapter

1

- businessProcess

1

- state

1

- objectSpace

1

- businessProcesses

*

- consumedEvents

*

- producer

1

- person

0..1

- observers

*

- processPersistenceAdapter

1

- readSession1

- revisionManager

{order}

1

«call»

0..1 - xstream

Activ ityState()

getBeginTime(): Date

getEndTime(): Date

ActivityState

type: ObjectIdentity

BusinessProcess(ObjectIdentity, UserActivity, Set)

getTypeOf(): BusinessProcessModel

addActivity(Activ ity)

removeActivity(Activ ity)

addEvent(Event)

removeEvent(Event)

getActivatedActivities(): Set

getInProgressActivities(): Set

isProcessed(): boolean

isInProgress(): boolean

getBeginTime(): Date

getEndTime(): Date

getStartActiv ity(): UserActivity

getProcessView(): ProcessView

getTypePersistenceAdapter(): TypePersistenceAdapter

BusinessProcess

type: ObjectIdentity

Activ ity(ObjectIdentity)

consumeEvents()

undoConsumeEvents()

produceEvents()

setInProgress()

setActivated()

setProcessed()

getConsumedEvents(): Set

getProcess(): BusinessProcess

accept(Activ ityVisitor)

getBeginTime(): Date

getEndTime(): Date

getTypeOf(): Activ ityType

Activity

type: ObjectIdentity

open: boolean

Event(ObjectIdentity, Activity)

getTypeOf(): EventType

getProducer(): Activ ity

setClosed()

setOpen()

Event

SystemActivity(ObjectIdentity)

execute()

evaluateRule(): boolean

getTypeOf(): Activ ityType

SystemActivity

UserActivity(ObjectIdentity)

begin(Person)

complete()

rollback()

getTypeOf(): Activ ityType

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

UserActivity

observers: Observer

Observable()

register(Observer)

deRegister(Observer)

notifyObservers()

Observable

theProcessManager: ProcessManager

getTheProcessManager(): ProcessManager

getStartActiv ities(): Collection

getActivatedActivities(): Collection

getInProgressActivities(): Collection

update()

serialize()

deserialize()

addBusinessProcess(BusinessProcess)

getReadSession(): ReadSession

ProcessManager

update()

«interface»Observer

model: BusinessProcessModel

StartActiv ityProxy(BusinessProcessModel)

begin(Person)

complete()

rollback()

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

getTypeOf(): Activ ityType

StartActivityProxy

«interface»ReadSession

RevisionManager

ProcessViewFactory

«interface»ProcessView

serializeProcesses(Collection)

restoreProcesses(): Collection

«interface»ProcessPersistenceAdapter

fi lename: String

serializeProcesses(Collection)

restoreProcesses(): Collection

ProcessPersistenceXStream

XStream

processBeginTime: Date

TypePersistenceAdapter(Date)

getType(ObjectIdentity): Object

TypePersistenceAdapter

begin(Person)

complete()

rollback()

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

getTypeOf(): Activ ityType

«interface»ProxyOrActivity

BusinessProcessState(BusinessProcess)

getBusinessProcess(): BusinessProcess

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

BusinessProcessState

Activated()

getBeginTime(): Date

getEndTime(): Date

Activated

begin: Date

InProgress(Date)

getBeginTime(): Date

getEndTime(): Date

InProgress

begin: Date

end: Date

Processed(Date, Date)

getBeginTime(): Date

getEndTime(): Date

Processed

InProgress(BusinessProcess)

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

InProgress

Processed(BusinessProcess)

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

Processed

Person

ObjectSpace

- state

1

- processViewFactory

{order}

1

- businessProcess1

- activ ities1..*

- businessProcess

1

+ events1..*

- start 1

- processView

0..1

- typePersistenceAdapter

1

- businessProcess

1

- state

1

- objectSpace

1

- businessProcesses

*

- consumedEvents

*

- producer

1

- person

0..1

- observers

*

- processPersistenceAdapter

1

- readSession1

- revisionManager

{order}

1

«call»

0..1 - xstream

Activ ityState()

getBeginTime(): Date

getEndTime(): Date

ActivityState

type: ObjectIdentity

BusinessProcess(ObjectIdentity, UserActivity, Set)

getTypeOf(): BusinessProcessModel

addActivity(Activ ity)

removeActivity(Activ ity)

addEvent(Event)

removeEvent(Event)

getActivatedActivities(): Set

getInProgressActivities(): Set

isProcessed(): boolean

isInProgress(): boolean

getBeginTime(): Date

getEndTime(): Date

getStartActiv ity(): UserActivity

getProcessView(): ProcessView

getTypePersistenceAdapter(): TypePersistenceAdapter

BusinessProcess

type: ObjectIdentity

Activ ity(ObjectIdentity)

consumeEvents()

undoConsumeEvents()

produceEvents()

setInProgress()

setActivated()

setProcessed()

getConsumedEvents(): Set

getProcess(): BusinessProcess

accept(Activ ityVisitor)

getBeginTime(): Date

getEndTime(): Date

getTypeOf(): Activ ityType

Activity

type: ObjectIdentity

open: boolean

Event(ObjectIdentity, Activity)

getTypeOf(): EventType

getProducer(): Activ ity

setClosed()

setOpen()

Event

SystemActivity(ObjectIdentity)

execute()

evaluateRule(): boolean

getTypeOf(): Activ ityType

SystemActivity

UserActivity(ObjectIdentity)

begin(Person)

complete()

rollback()

getTypeOf(): Activ ityType

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

UserActivity

observers: Observer

Observable()

register(Observer)

deRegister(Observer)

notifyObservers()

Observable

theProcessManager: ProcessManager

getTheProcessManager(): ProcessManager

getStartActiv ities(): Collection

getActivatedActivities(): Collection

getInProgressActivities(): Collection

update()

serialize()

deserialize()

addBusinessProcess(BusinessProcess)

getReadSession(): ReadSession

ProcessManager

update()

«interface»Observer

model: BusinessProcessModel

StartActiv ityProxy(BusinessProcessModel)

begin(Person)

complete()

rollback()

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

getTypeOf(): Activ ityType

StartActivityProxy

«interface»ReadSession

RevisionManager

ProcessViewFactory

«interface»ProcessView

serializeProcesses(Collection)

restoreProcesses(): Collection

«interface»ProcessPersistenceAdapter

fi lename: String

serializeProcesses(Collection)

restoreProcesses(): Collection

ProcessPersistenceXStream

XStream

processBeginTime: Date

TypePersistenceAdapter(Date)

getType(ObjectIdentity): Object

TypePersistenceAdapter

begin(Person)

complete()

rollback()

getPerson(): Person

getNextPredecessorOfType(ActivityType): ProxyOrActivity

getTypeOf(): Activ ityType

«interface»ProxyOrActivity

BusinessProcessState(BusinessProcess)

getBusinessProcess(): BusinessProcess

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

BusinessProcessState

Activated()

getBeginTime(): Date

getEndTime(): Date

Activated

begin: Date

InProgress(Date)

getBeginTime(): Date

getEndTime(): Date

InProgress

begin: Date

end: Date

Processed(Date, Date)

getBeginTime(): Date

getEndTime(): Date

Processed

InProgress(BusinessProcess)

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

InProgress

Processed(BusinessProcess)

getEndTime(): Date

getBeginTime(): Date

isProcessed(): boolean

isInProgress(): boolean

Processed

Person

ObjectSpace

- state

1

- processViewFactory

{order}

1

- businessProcess1

- activ ities1..*

- businessProcess

1

+ events1..*

- start 1

- processView

0..1

- typePersistenceAdapter

1

- businessProcess

1

- state

1

- objectSpace

1

- businessProcesses

*

- consumedEvents

*

- producer

1

- person

0..1

- observers

*

- processPersistenceAdapter

1

- readSession1

- revisionManager

{order}

1

«call»

0..1 - xstream

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen GruppenSchnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Schnittstellen zu anderen Gruppen

Kompakte Schnittstelle zur Agenda

Diese wird zum Erzeugen von ToDo-Listen und zur Beeinflussung des Prozessablaufs

genutzt.

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen OberflächenOberflächen

Resumé und Ausblick

Oberflächen – MainView

Oberflächen – BusinessModelView

Oberflächen – MainView

Oberflächen – ProcessListDialog

Oberflächen – BusinessProcessView

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Resumé und Ausblick

Zeitbedarf des Projekts bei mehr als Stunden pro Woche pro Person

Vorschlag: 1 Quartal pro Phase Zusammenarbeit

Anforderungsänderungen seitens Auftraggeber?!

25

Danke für die Aufmerksamtkeit

Und das war mal wieder KERNIG...KERNIG...

... und auf in die Prüfungen!... und auf in die Prüfungen!

Recommended