java - Suggest a persistent strategy for a workflow system -


i in process of creating ui configuration tool pet project. 1 aspect of tool lets end user define orchestration. need save orchestration definition database. there executable version of definition in running system. executable version created dynamically on-demand.

idea separate definition executable version have flexibility choose runtime version among bpmn or jpdl or pojo based workflow solution (beanflow).

limitation: can't use bpmn editors come frameworks jbpm, activiti etc wan't use own ui specific domain.

i need suggestions on how persist definition.

  1. should use rdbms tables? if so, there db schema can borrow close orchestration concepts?

  2. should serialize definition bpmn/jpdl xml instance document?

  3. are there other simple formats can use?

by "orchestration" i'm assuming mean finite state machine. current state dictates transitions can followed other states. representation of states , transitions edges , vertices produces directed acyclic graph, there times when graph cycle (e.g. draft -- submit approval --> pending approval -- reject --> draft).

in practice, separating definition execution calls persistence format can accommodate customization. system evolves find number of unanticipated edge cases solution should not require altering persistence schema, code. implies xml or nosql solution - schema changed or non existent.

now, having written own xml definition purpose (for uninteresting reasons i'll exclude), suggestion using jpdl (or bpmn). reason definitions incorporate whatever you're considering now, in future, , enable customization - such hanging arbitrary data or behavior off them @ given point. advantage of tools built - not ui - dealing cycle detection , ensuring there path completion example.

some of interesting features know jpdl possesses ability merge forked processes, timed tasks (including repeat periodically), , facilities sending notification. last item - notification - bears further exposition. 1 of things i've found own system need sending out configurable email content based on data flowing through. these existing engines make relatively easy providing way plugin variables instance text that's dynamically evaluated @ run time before transmission. provide bridges between engine , whatever user store purpose of sending notifications groups of people, tasking them , enforcing security policy.

finally, depending on scope of system, still using database well. suggest storing off xml , data being orchestrated database in serialized format. then, if data being altered travels through execution, write out serializations of data - , perhaps workflow if changed - history/audit log table well.


Comments

Popular posts from this blog

sql server - python to mssql encoding problem -

java - SNMP4J General Variable Binding Error -

windows - Python Service Installation - "Could not find PythonClass entry" -