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

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

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

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!