It is questionable whether this question really belongs here, but, in any case, it does not fit in Stack Overflow or any other Stack Exchange site. So here I go.
My current pet project consists in developing a software tool to generate code from business process specifications.
The program's inputs are...
- Process diagrams (very detailed ones, of course!)
- User interfaces, if necessary, for those activities to be automated
- Identification of interfaces with third-party programs, either already existing or to be constructed later
And the program's outputs are...
- Table, view and stored procedure creation scripts
- Application code (CRUD, information flow between processes/activities/users, etc.)
Well, I still do not know which process modeling notation I should use.
Personally, I like EPC (event-process chain) diagrams very much because of the simplicity of their structure:
The process flow must start with an event and must end with an event. If there are several alternative branches, this rule applies to all branches and possible flows.
Events may trigger zero or more activities. If they trigger zero activities, they are final events. If they trigger two or more activities, a branch opening must be used.
When completed, an activity must trigger exactly one event.
Activities may be triggered by one or more events. If they are triggered by two or more events, a branch closing must be used.
Everything else (i.e., anything that is not an event or an activity; e.g. personnel, resources, physical materials, information) can be added after completing the description of the process flow.
However, at least judging from other software developers I know, EPC diagrams are unpopular. Everyone else seems to be using BPMN, which are of course excellent for describing functional / responsibility aspects (i.e., who performs each activity), but are horrible for everything else, because the lanes get in the way.
Other notations I know but have explicitly rejected are...
UML sequence diagrams: Because a diagram must be created for each alternative flow, the cost of which would be prohibitive for users of my tool.
IDEF: IDEF0 is great for mapping information flows, but IDEF3 is a horrible process flow notation: gotos should not be allowed at this level.
Which process notations have you used? Which one would you recommend me for my project?