30
Das Kernmodell eines Workflow-Management- Systems Entwurf Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau Matthias Pfau FHDW Hannover 2005 FHDW Hannover 2005

Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Embed Size (px)

Citation preview

Page 1: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 2: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Page 3: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Einleitung

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

Page 4: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Agenda

Einleitung Analyse im Entwurf

CRC-VorgehensmodellCRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Page 5: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 6: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 7: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

CRC-VorgehensmodellClass, Responsibilities and Collaboration

Page 8: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

CRC-VorgehensmodellClass, Responsibilities and Collaboration

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

Page 9: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

SchichtenarchitekturSchichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Page 10: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Schichtenarchitektur

Page 11: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur KlassendiagrammeKlassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Page 12: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 13: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 14: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 15: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 16: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 17: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 18: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 19: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 20: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Schnittstellen zu anderen Gruppen

Kompakte Schnittstelle zur Agenda

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

genutzt.

Page 21: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen OberflächenOberflächen

Resumé und Ausblick

Page 22: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Oberflächen – MainView

Page 23: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Oberflächen – BusinessModelView

Page 24: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Oberflächen – MainView

Page 25: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Oberflächen – ProcessListDialog

Page 26: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Oberflächen – BusinessProcessView

Page 27: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Agenda

Einleitung Analyse im Entwurf

CRC-Vorgehensmodell Fachliche und technische Architektur

Schichtenarchitektur Klassendiagramme Schnittstellen zu anderen Gruppen Oberflächen

Resumé und Ausblick

Page 28: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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

Page 29: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

Danke für die Aufmerksamtkeit

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

Page 30: Entwurf Das Kernmodell eines Workflow-Management- Systems Entwurf Bernd Deterding, Christian Eilers, Thomas Gutsche, Matthias Pfau FHDW Hannover 2005

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