Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
In Bean Shell plugin, we can call other Joget plugins programmatically to perform specific task without the need to rewrite specific functionality that existing plugins may have already addressed.
In this Bean Shell code, we will make use of JSON Tool.
Before we move on, let's inspect how the plugin is configured first.
import java.util.Map; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import org.joget.apps.app.service.AppUtil; import org.joget.plugin.base.Plugin; import org.joget.plugin.base.PluginManager; import org.joget.workflow.util.WorkflowUtil; import org.joget.apps.app.model.AppDefinition; import org.joget.apps.app.service.AppPluginUtil; import org.joget.plugin.property.model.PropertyEditable; import org.joget.workflow.model.service.WorkflowManager; import org.joget.workflow.model.WorkflowProcess; import org.joget.apps.app.service.AppUtil; import org.joget.workflow.model.WorkflowProcessLink; import org.joget.workflow.model.WorkflowProcessResult; import org.joget.workflow.model.WorkflowActivity; import org.joget.workflow.model.WorkflowVariable; import org.joget.commons.util.LogUtil; import org.joget.apps.app.lib.JsonTool; public void callPlugin(){ try { PluginManager pluginManager = (PluginManager) AppUtil.getApplicationContext().getBean("pluginManager"); //plugin to call String pluginName = "org.joget.apps.app.lib.JsonTool"; Plugin plugin = pluginManager.getPlugin(pluginName); AppDefinition appDef = AppUtil.getCurrentAppDefinition(); //JSON API to call to start a new process String jsonURL = "http://localhost:8080/jw/web/json/workflow/process/start/expenseclaim:latest:process1"; //prepare workflow variables for the process List params = new ArrayList(); Map param = new HashMap(); param.put("name", "var_approval"); param.put("value", "New"); params.add(param); param = new HashMap(); param.put("name", "var_SelectApprover"); param.put("value", "clark"); params.add(param); Object[] paramsArray = params.toArray(); //prepare propertiesMap mapped specifically for JSON tool Map propertiesMap = new HashMap(); propertiesMap.put("jsonUrl", jsonURL); propertiesMap.put("requestType", "post"); propertiesMap.put("debugMode", "true"); propertiesMap.put("headers", new Object[]{}); //propertiesMap.put("params", new Object[]{ params }); propertiesMap.put("params", paramsArray ); //set properties into the JSON tool programmatically if (plugin instanceof PropertyEditable) { ((PropertyEditable) plugin).setProperties(propertiesMap); LogUtil.info("migrateProcess", "set properties"); } //invoke the JSON plugin plugin.execute(propertiesMap); LogUtil.info("callPlugin", "execution finished"); } catch (Exception ex) { LogUtil.error("callPlugin", ex, "Error"); } } callPlugin();