You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

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.

Example 1: JSON Tool

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();


  • No labels