Learn All About Flows and Plugins in Salesforce | The Developer Guide
Flows
When the process involves the number of pages when the data need to be transferred between the pages. We prefer to uses flows.
Plugin
Plugin is a built-in interface that allows you to write business logic and to pass data between your organization and a specified flow.
Process Namespace
These are the interfaces and classes in the Process namespace.
- Plugin Interface - This interface allows us to pass data between the organization and the specified flow.
- PluginDescribeResult Class - This class describes the input and output parameters of the Process.PluginResult.
- PluginDescribeResult.InputParameter Class - This class describe the input parameters of Process.PluginResult.
- PluginDescribeResult.OutputParameter Class - This class describes the output parameter for Process.PluginResult.
- PluginRequest Class - This class passes the input parameters from the class that implements the Process.Plugin interface to the flow.
- PluginResult Class - This class returns output parameters from the class that implements the Process.Plugin interface to the flow.
Process.Plugindescriberesult:
This class contains all the properties of all the list of input/ouput parameters.
Public class plugindescriberesult{ List<process.plugindescriberesult.inputparameter> inputparameters; List<process.plugindescriberesult.outputparameter> outputparameters; }
Don't forget to check out: Flow Builder in Salesforce | The Ultimate Developer Guide
Process.plugindescriberesult.inputparameter
This class contains all the input parameters.
process.plugindescriberesult.inputparameter(param1,param2,param3);
param1: name of input parameter param2: datatype of input parameter param3: required value/not required value.\
Example:
process.plugindescriberesult.inputparameter ip1= new process.plugindescriberesult.inputparameter(‘Exp’, process.plugindescriberesult.inputparameter.decimal,true); list<process.plugindescriberesult.inputparameter> inputs= new list<process.plugindescriberesult.inputparameter>{ip1,ip2}
Process.plugindescriberesult.outputparameter
This class contains all the output parameters.
process.plugindescriberesult.outputparameter(param1,param2);
param1: name of output parameter param2: datatype of output parameter
Example:
process.plugindescriberesult.outputparameter op1= new process.plugindescriberesult. outputparameter(‘Exp’, process.plugindescriberesult. outputparameter.decimal); list<process.plugindescriberesult. outputparameter> outputs= new list<process.plugindescriberesult. outputparameter>{op1,op2}
Process.pluginrequest
This class will gives information about all the input parameters we have received from flow.
Public class process.pluginrequest { Map<string,object> inputparameters; } Example: Process.pluginrequest request= new process.pluginrequest(); String city=request.inputparameter.get(‘city’); Decimal exp=request.inputparameter.get(‘exp’);
Process.pluginresult.
This class will give information about all the output parameters we have received from Plugin.
Public class process.pluginresult { Map<string,object> outputparameters; }
Example:
Process.pluginresult result= new process.pluginresult();
Decimal bonus=result.outputparameter.get(‘bonus’);
Decimal salary=result.outputparameter.get(‘salary’);
Check out another amazing blog by Kirandeep here: Learn All About Standard Controllers in Salesforce | The Developer Guide
Example 1: Create a flow to capture experience and salary in the first screen, pass the captured values to the Plugin for calculation of bonus and total and display the output in the final screen.
public class PluginExample3 implements Process.Plugin { public Process.PluginResult invoke(Process.PluginRequest request){ Decimal salary=(Decimal)request.inputparameters.get('salary'); Decimal exp=(Decimal)request.inputparameters.get('exp'); Decimal bonus,total; if( exp >3){ bonus=(salary*15)/100; total=bonus+salary; } else{ bonus=(salary*10)/100; total=bonus+salary; } Map<String,Object> outputMap=new Map<String,Object>(); outputMap.put('total',total); outputMap.put('bonus',bonus); Process.PluginResult result=new Process.PluginResult(outputMap); return result; } public Process.PluginDescribeResult describe(){ Process.PluginDescribeResult result=new Process.PluginDescribeResult(); Process.PluginDescribeResult.Inputparameter ip1=new Process.PluginDescribeResult.inputParameter('salary',Process.PluginDescribeResult.ParameterTyp e.Decimal,true); Process.PluginDescribeResult.Inputparameter ip2=new Process.PluginDescribeResult.inputparameter('exp',Process.PluginDescribeResult.parametertype. Decimal,true); Process.PluginDescribeResult.Outputparameter op1=new Process.PluginDescribeResult.outputparameter('total',Process.PluginDescribeResult.Parametertyp e.Decimal); Process.PluginDescribeResult.Outputparameter op2=new Process.PluginDescribeResult.Outputparameter('bonus',Process.PluginDescribeResult.ParameterT ype.Decimal); List<Process.PluginDescribeResult.Inputparameter> inputs =new List<Process.PluginDescribeResult.Inputparameter>{ip1,ip2}; List<Process.PluginDescribeResult.Outputparameter> outputs=new List<Process.PluginDescribeResult.Outputparameter>{op1,op2}; result.inputparameters=inputs; result.outputparameters=outputs; return result; } }
Responses