Some Source Code for Bonita Rest API Implementation

bonitasoft

[adsenseyu2]

Following are key source code blocks/classes/APIs to consider for you to get started with Bonita REST API implementation:

  • AccessorUtil: This is the gateway API which is used to get instance of key API implementations. For example, AccessorUtil.getRuntimeAPI() gets you an instance of RuntimeAPI to work with.
  • ProcessDefinitionUUID: The ProcessDefinitionUUID (org.ow2.bonita.facade.uuid.ProcessDefinitionUUID) class is one of the important parameter required to create an instance of process, such as ProcessInstanceUUID. Following code helps instantiate the process:
            ProcessDefinitionUUID processDefinitionUUID = new ProcessDefinitionUUID(process, version);
            try {
                return runtimeAPI.instantiateProcess(processDefinitionUUID, params);
            }
            catch (ProcessNotFoundException e) {        
            }
            catch (VariableNotFoundException e) {
            }
  • LightTaskInstance: LightTaskInstance (org.ow2.bonita.light.LightTaskInstance) defines the tasks for the workflow.
  • RuntimeAPI: RuntimeAPI (org.ow2.bonita.facade.RuntimeAPI) is used to start the tasks by setting the process instance variables and finish the tasks. Some of the important APIs methods are following:
      • startTask
      • setProcessInstanceVariables
      • finishTasks

    Following is the source code representing usage of above methods to create a task:

    public void createTask(final String taskId, final Map<String, Object> taskVariables) {
            ActivityInstanceUUID activityUUID = new ActivityInstanceUUID(taskId);
            ProcessInstanceUUID processUUID;
            runtimeAPI = AccessorUtil.getRuntimeAPI();
            queryRuntimeAPI = AccessorUtil.getQueryRuntimeAPI();
            try {
                processUUID = queryRuntimeAPI.getLightTaskInstance(activityUUID).getProcessInstanceUUID();
                LightProcessInstance lpInstance = queryRuntimeAPI.getLightProcessInstance(processUUID);
    
                runtimeAPI.startTask(activityUUID, true);
                runtimeAPI.setProcessInstanceVariables(lpInstance.getProcessInstanceUUID(), taskVariables);
                runtimeAPI.finishTask(activityUUID, true);
            }
            catch (TaskNotFoundException e) {            
            }
            catch (InstanceNotFoundException e) {
            }
            catch (IllegalTaskStateException e) {
            }
            catch (VariableNotFoundException e) {
            }
    }
  • ProcessInstanceUUID: ProcessInstanceUUID (org.ow2.bonita.facade.uuid.ProcessInstanceUUID) represents the actual process instance
  • LightTaskInstance: Represents the task instance. Following code can be used to create the task instance:
    public LightTaskInstance getTask(final String taskId) {
            ActivityInstanceUUID activityInstanceUUID = new ActivityInstanceUUID(taskId);
            try {
                return queryRuntimeAPI.getLightTaskInstance(activityInstanceUUID);
            }
            catch (TaskNotFoundException e) {         
            }
            return null;
    }
    

 [adsenseyu1]

Ajitesh Kumar

Ajitesh Kumar

I have been recently working in the area of Data analytics including Data Science and Machine Learning / Deep Learning. I am also passionate about different technologies including programming languages such as Java/JEE, Javascript, Python, R, Julia, etc, and technologies such as Blockchain, mobile computing, cloud-native technologies, application security, cloud computing platforms, big data, etc. I would love to connect with you on Linkedin. Check out my latest book titled as First Principles Thinking: Building winning products using first principles thinking.
Posted in BPM. Tagged with , , .