Categories: BPM

Some Source Code for Bonita Rest API Implementation

[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

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.

Share
Published by
Ajitesh Kumar

Recent Posts

Retrieval Augmented Generation (RAG) & LLM: Examples

Last updated: 25th Jan, 2025 Have you ever wondered how to seamlessly integrate the vast…

1 week ago

How to Setup MEAN App with LangChain.js

Hey there! As I venture into building agentic MEAN apps with LangChain.js, I wanted to…

2 weeks ago

Build AI Chatbots for SAAS Using LLMs, RAG, Multi-Agent Frameworks

Software-as-a-Service (SaaS) providers have long relied on traditional chatbot solutions like AWS Lex and Google…

2 weeks ago

Creating a RAG Application Using LangGraph: Example Code

Retrieval-Augmented Generation (RAG) is an innovative generative AI method that combines retrieval-based search with large…

3 weeks ago

Building a RAG Application with LangChain: Example Code

The combination of Retrieval-Augmented Generation (RAG) and powerful language models enables the development of sophisticated…

3 weeks ago

Building an OpenAI Chatbot with LangChain

Have you ever wondered how to use OpenAI APIs to create custom chatbots? With advancements…

3 weeks ago