BProc add-on 1.0.0 released

Hi everyone,

We’ve just released the first version of the BProc add-on!

The BProc add-on provides seamless integration of a BPM engine into your project, extending it with multiple powerful features.

bpmn-modeler

The add-on allows you to describe business process steps right in the application using the integrated BPMN 2.0 modeler. Being a part of the application, it enables seamless integration with the runtime application parts and visual process customizing. For example, to specify which service method should be invoked at a particular process step, you just need to select a Spring bean name and a method from a dropdown list.

Users may interact with running process instances using process forms. For simple cases, you can declare input dialogs right in the modeler. Also, you can use screens based on CUBA Generic UI to create process forms of any complexity.

Features

  • The embedded light-weight Flowable (https://flowable.org) runtime engine. You are free to use the Flowable API directly, or you may use an API layer provided by the BProc add-on.
  • Integrated BPMN 2.0 visual designer based on bpmn.io (https://bpmn.io) framework.
  • Integrated DMN 1.1 decision table designer for complex decision logic.
  • Different types of process forms:
    • Input dialogs that can be created at runtime in the process modeler
    • Design-time defined CUBA screens
  • Administrative screens for managing running processes provide a ready solution to:
    • view all running process instances
    • reassign user tasks
    • modify process variables’ values
    • investigate failed jobs
    • analyze processes execution history, etc.
  • API for working with business processes from the code.

Links

2 Likes

Hello,
bumped into some errors when added an additional datastore to a project, looks like the cause lurks here: ExecutionListenerModel in registered in web-metadata.xml twice (lines 36 and 37). The error goes:

java.lang.IllegalStateException: Entity cannot belong to more than one store: com.haulmont.addon.bproc.web.entities.model.ExecutionListenerModel

Regards,
Ilia Rodionov.

Hi,
thank you for reporting the problem. We’ve created an issue for that. Will be fixed in the next bugfix release.

1 Like

Hi, here in UserTaskCompletedEventListener the call to taskEntity.getAssignee() might return null, which leads to the NPE. Shall we lift the assignee up to optional immediately?

@Override
public void onEvent(FlowableEvent event) {
    FlowableEntityEvent entityEvent = (FlowableEntityEvent) event;
    TaskEntity taskEntity = (TaskEntity) entityEvent.getEntity();
    Optional<User> userOpt = findAssigneeUserOpt(taskEntity.getAssignee());
    TaskData taskData = engineEntitiesConverter.createTaskData(taskEntity);
    ProcessDefinitionData processDefinitionData = bprocRepositoryService.getProcessDefinitionById(taskEntity.getProcessDefinitionId());
    events.publish(new UserTaskCompletedEvent(this, taskData, userOpt.orElse(null), processDefinitionData));
}

Regards,
Ilia Rodionov.

Hi,
We’ve created an issue. Thanks!

1 Like

Hello!
This is a minor issue, just for record.

When the task’s id gets changed and there are gateways’s flows depending on this tasks’s outcomes (based on old task’s id), the BPM editor fails with NPE when clicking on any of affected flows.

java.lang.NullPointerException
	at com.haulmont.addon.bproc.web.screens.modeler.properties.sequenceflow.SequenceFlowPropertiesFragment.initConditionDetailsFieldsVisibility(SequenceFlowPropertiesFragment.java:217)
	at com.haulmont.addon.bproc.web.screens.modeler.properties.sequenceflow.SequenceFlowPropertiesFragment.onModelElementSet(SequenceFlowPropertiesFragment.java:123)
	at com.haulmont.addon.bproc.web.screens.modeler.properties.sequenceflow.SequenceFlowPropertiesFragment.onModelElementSet(SequenceFlowPropertiesFragment.java:36)
	at com.haulmont.addon.bproc.web.screens.modeler.properties.AbstractElementPropertiesFragment.setModelElement(AbstractElementPropertiesFragment.java:13)
	at 

Hello,

ProcessFormUiControllerDependencyInjector treats all frame owners as screens and fails with the class cast exception in line 49 when encounters a fragment

Screen screen = (Screen) frameOwner;
1 Like

BProc 1.0.1 is published. Here is a list of fixed issues.

1 Like