2

Activiti is a promising business process engine, many organizations has started to develop business process management systems using activiti.

In my case I would like to use activiti to develop a BPM system that fulfills a specific business requirements,However the activiti engine functionalities covers only about 70% of my business requirements.

Most of the business requirements that I want to add are not bpmn related. I have decided to add my specific business requirements by working on workarounds.

The question is, what is the preferred way to extend the Activiti process engine functionalities?

Currently I have two general options:

  1. Changing the activiti source code directly. Should I edit the source code implementation classes directly? That would be faster, but wouldn't this makes upgrading to new versions harder? Or should I extend and wrap some of the implementation classes? Wouldn't this choice lead to an unexpected behavior?

  2. Use the activiti engine as a dependency then add the new functionalities by extending and wrapping some of its implementation classes. Another choice would be to add the extensions totally outside the activiti engine with totally independent data model. I don't know what is the preferred way to adapt.

what are your opinions?

dgmora
  • 1,239
  • 11
  • 27

1 Answers1

1

The fast option would be find a work-around and wait until it's on activiti.

Another option is looking for businessTask, which is implemented in Activiti (http://activiti.org/userguide/#bpmnBusinessRuleTask). This will keep you 'inside' activiti and BPMN, which has the advantadge of being a standard.

In case you still want to extend it, I think it makes more sense not to mess up with the code. If you modify directly the code, it will be complicated to upgrade to newer Activiti versions. Also, you won't introduce bugs in code that is already tested by other people.

You don't say which kind of requirements you need, but I think most of thinks should be possible with BPMN. You can also ask/look for more concrete help in activiti forums.

dgmora
  • 1,239
  • 11
  • 27
  • Most of the business requirements that I want to add are not bpmn related. I have decided to add my specific business requirements by working on workarounds. Should I edit the source code implementation classes directly, That would be faster, but wouldn't this makes upgrading to new versions harder. OR should I extend and wrap some of the implementation classes,but wouldn't this choice lead to an unexpected behavior. Another choice would be to add the extensions totally outside the activiti engine with totally independent data model. I don't know what is the preferred way to adapt. – user1908382 Dec 17 '12 at 12:34
  • Updated answer regarding your comment – dgmora Dec 17 '12 at 13:03