This is just an introductory article around the scope of Camunda-BPM involvement at an enterprise level.
A prior understanding of Business Processes would be of highly helpful for your understanding.
The idea of this article is to share the problems I saw some of my clients face initially, and hence help you as a manager to align a suitable solution.
What is covered here?
I won’t be covering the initial beginner level concepts around setting up the environment and downloading the package for creating initial models.
The idea of this article is to share the problems I saw some of my clients face initially, and hence help you as a manager to align a suitable solution.
So whenever we are talking about open source tools like Camunda, we are always energised with the possibilities we can achieve. However, we often end up with a mix team of developers and managers whose skill set is not ideal(java based) and they begin rethinking over their decisions after coming across the documentation(which is majorly java based) for Camunda.
Camunda itself clearly states that its not just a tool for automation but rather has its applications across both the levels:
- Creation of the BPMN Models and DMN tables
- Execution of the workflows
So without delay let me touch the first part of my article:
When you have the ideal team – Java based:
Things are pretty simple.
- you have your designers design the process diagrams in the Modeller
- Once your model is ready, you can simply go ahead and save it in the resources folder of your Eclipse project. Proceed to work on it and deploy it to the Wild-Fly server
- Once done, you can start using Camunda Task form in the listener to initiate your BPMN process from within JSF. See their official documentation here for code reference.
You can continue to configure EJB Services also based on your requirements. The idea here is, just follow the book.
This brings me to the next part:
What do you mean Ideal team? My team is not Java based, they are still ideal to me:
Thanks to Camunda BPMN API, yes your team is still ideal.
Just like any API based solution, things are simpler with Modelling API too.
To easily create simple BPMN 2.0 processes we provide the fluent builder API. It supports most BPMN 2.0 elements and allows you to set attributes and add some child elements. The following process is deployable and can be executed by the camunda BPM platform.
BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("processId") .startEvent() .userTask() .endEvent() .done();
What next to do?
Once you are done with the Model, You can very easily utilize the rest API to deploy the model too.
You can even start new process instances too.
It offers the following methods to your service:
-
POST /process-definition/{id}/start
-
POST /process-definition/key/{key}/start (starts the latest version of the process definition which belongs to no tenant)
-
POST /process-definition/key/{key}/tenant-id/{tenant-id}/start (starts the latest version of the process definition for tenant)
Here are further link to the available code support for PHP:
PHP: http://camunda.github.io/camunda-bpm-php-sdk/
This sdk is only for reference, you can pretty much utilise this functionally on your project.
This being done I will briefly touch my next point.
You can write unit test using JUnit.
Here is how a code with JUnit4 would look like for your test case:
public class MyBusinessProcessTest { @Rule public ProcessEngineRule processEngineRule = new ProcessEngineRule(); @Test @Deployment public void ruleUsageExample() { RuntimeService runtimeService = processEngineRule.getRuntimeService(); runtimeService.startProcessInstanceByKey("ruleUsage"); TaskService taskService = processEngineRule.getTaskService(); Task task = taskService.createTaskQuery().singleResult(); assertEquals("My Task", task.getName()); taskService.complete(task.getId()); assertEquals(0, runtimeService.createProcessInstanceQuery().count()); } }
You can annotate test classes and methods with @Deployment . Before the test is run, a resource file named TestClassName.bpmn20.xml (for a class-level annotation) or TestClassName.testMethod.bpmn20.xml (for a method-level annotation), in the same package as the test class, will be deployed
One benefit of Camunda being open source is: they have an amazing indepth documentation and github support for most major issues you will face during integration.
Reporting
Lastly as a manager, you can further scale up your utilisation by exploiting the enterprise level benefits of the application for:
Complete Reporting and Analytics functionalities are part of Camunda Optimize, a product you get with you license for enterprise version.
While setting Optimize up you can customise the level of usage you plan on to have, create Authorisations and Configure the ElasticSearch to make the communication encrypted.
Once configured, you can customize the report you need to access, or directly select from the list of available reports. You can also edit and customise the dashboard for the widgets and services you want to have access to.
Hi there! Such a wonderful article, thanks!
This is a great tip particularly to those new to the blogosphere.
Brief but very precise information… Appreciate your sharing
this one. A must read article!