OSWorkflow vs. OSWf
OSWorkflow from OpenSymphony
Rational for Forking into OSWf
Forks of OSWorkflow which I am aware of are:
What does the 'OS' in 'OSWf' stand for?
The 'OS' stands for 'Open Source' Workflow. However, as an homage to the original OpenSymphony project the 'OS' could continue to stand for 'OpenSymphony' as all of the original ideas, simplicity and beauty of the architeture remain.
Differences between OSWorkflow and OSWf
- Gradle build system; Command include:
clean
,compileJava
,test
,install
- Use Simple logging for Java (SL4J) instead of Apache Commons-Logging
- JUnit 4.x testing with annotations
- Compiled under Java 1.5+; Remove all deprecated methods and classes
- Convert the use of Java arrays (i.e.
[]
) to Lists; This required changes to several of the interface classes - Change top-level package from 'com.opensymphony.workflow' to '
net.sf.oswf
' - Remove EJB, ofbiz, Soap. This is not deprecation but seperation. These implementations can/should be provided as plugins.
- All major interfaces moved to '
net.sf.oswf
'; implementations moved into sub-packages - A seperate sub-package for homogenous sets of classes; conditions, descriptors, exceptions, functions, registers and validators. Used plural in package names to indicate the homogeneity of the classes contain in each package
- 'util' contains only helper, support or static classes
- 'impl' (Implementation) contains 'abstract/default' class implementations
of major interfaces such as
ActorEngine
,DefaultStep
, Workflow DescriptionLoaders
, built-in workflowStores
and PropertySetDelegate implementations - Rename Condition FunctionProviders to use boolean verbs,
is*
,has*
similar to boolean JavaBean properties; Dropped 'Condition
' suffix - Rename
Workflow
toOSWfEngine
for in order to avoid confusion with aWorkflowDescriptor
(Process Description) orWorkflowEntity
(Process Instance) - Rename '
old-status
' to 'exit-status
' for clarity; this attribute in not required, defaults to 'Finished
'; 'old-status
' has been deprecated but is supported for backwards compatibility - Rename '
unconditional-result
' to 'default-result
' for clarity; 'unconditional-result
' has been deprecated but is supported - Default value of '
status
' is not required and defaults to 'Pending
' - Use default type of '
AND
' for 'conditions
' - Rename all Workflow Description XML files to end with '
.oswf.xml
' as a convention for clarity, not required - Use and return typed classes, i.e. generics, for all/most collections; implementation is ongoing
- Remove the use of
Iterator
; replace with Java 1.5+ 'for
' loop constructs - Removed Hibernate 2.x support; Created Hibernate 3.x WorkflowStore as seperate JAR
- Merge WorkflowStore interface methods '
markFinished
' and 'moveToHistory
' into a single method named 'moveToHistory
' using the 'markFinished
' parameters - Publish via SourceForge as 'OSWf'