T
timasmith
I just cant seem to get my head around this. I've tried a few
approaches without any warm fuzzy feelings. Here is the gist of the
problem
a) Forget about simple workflow - we can all do that
b) Forget about wizards, they rarely reach the complexity level
b) We need workflow, generally defined as a state diagram, where moving
from state to state can be due to
i) User choices
ii) System configuration
iii) System response due to state
c) There could be as many as 15 states with 2-3 possible transitions
from state to state
d) Many of these states will be represented to the user through a
graphical interface
e) Workflow might be implemented with a thin or fat client and so
should be devoid of user interface references
f) Workflow definition should create a contract that implementation
must adhere to
g) Workflow should be easily extensible and/or modifiable without
breaking deployed configurations.
So far I can think of the following implementations
a) Hard code every possible workflow, assign each an identifier and
users choose which one to enact. Almost impossible with large state
diagrams.
b) Define all options and write a single hard coded client based
workflow which can traverse the entire state diagram. Not bad, but
difficult to extend due to complexity of reading the mass of code.
Difficult to inspect code and understand how you arrived at any state.
c) Users write an XML document against an XSD to represent the workflow
desired. Difficult to define in XML I expect.
d) Users write the desired workflow in a scripting language. API
changes will break this approach, requiring revalidation.
e) Users write code against a small API to compile time validate the
workflow. Not bad, API changes are obvious. Code would probably have
to be deployed to the clients.
What does everyone else think?
thanks
Tim
approaches without any warm fuzzy feelings. Here is the gist of the
problem
a) Forget about simple workflow - we can all do that
b) Forget about wizards, they rarely reach the complexity level
b) We need workflow, generally defined as a state diagram, where moving
from state to state can be due to
i) User choices
ii) System configuration
iii) System response due to state
c) There could be as many as 15 states with 2-3 possible transitions
from state to state
d) Many of these states will be represented to the user through a
graphical interface
e) Workflow might be implemented with a thin or fat client and so
should be devoid of user interface references
f) Workflow definition should create a contract that implementation
must adhere to
g) Workflow should be easily extensible and/or modifiable without
breaking deployed configurations.
So far I can think of the following implementations
a) Hard code every possible workflow, assign each an identifier and
users choose which one to enact. Almost impossible with large state
diagrams.
b) Define all options and write a single hard coded client based
workflow which can traverse the entire state diagram. Not bad, but
difficult to extend due to complexity of reading the mass of code.
Difficult to inspect code and understand how you arrived at any state.
c) Users write an XML document against an XSD to represent the workflow
desired. Difficult to define in XML I expect.
d) Users write the desired workflow in a scripting language. API
changes will break this approach, requiring revalidation.
e) Users write code against a small API to compile time validate the
workflow. Not bad, API changes are obvious. Code would probably have
to be deployed to the clients.
What does everyone else think?
thanks
Tim