Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 5

Process.

Plugin :
-----------------
1. It is the name of the Interface which need to be implemented to achive
plugin concepts

2. Any class which implements Process.Plugin Interface has to define two


methods

1.invoke

2.describe

Process.PluginRequest:
----------------------
1. This is a apex class defined by the salesforce which takes the inputs
given
from the flow and submit to the Plugin class

2. This class has structure simillar to this

public class Process.PluginRequest{

public Map<String,Object> inputparameters ;

3. Process.PluginRequest request=new Process.PluginRequest();

request.inputparameters=new Map<String,Object>();

request.inputparameters.put('Name','Satish');

request.inputparameters.get('Name');

Process.PluginResult :
----------------------
1. This class takes the output genarated from business logic in the plugin
class
and return to flow

2. Public class Process.PluginResult{

public Process.PluginResult(Map<String,Object> response){

}
public Process.PluginResult(String, Object){

3. Map<String,Object> resMap=new Map<String,Object>();


resMap.put('Name','Satish');
Process.PluginResult result=new Process.PluginResult(resMap);

invoke Method :
----------------
1.This will take the inputparameters from Flow and implement business logic
and return the result back to flow

Syntax :

public Process.PluginResult invoke(Process.PluginRequest request){

logic
}

Example :

public Process.PluginResult invoke(Process.PluginRequest request){

String name=(String)request.inputparameters.get('empName');

name='My Name :'+name;

Map<String,Object> resMap=new Map<String,Object>();

resMap.put('name',name);

Process.PluginResult result=new Process.PluginResult(resMap);

return result;
}

Process.PluginDescribeResult :
------------------------------

1. This class contains description about all the inputparameters and


outputparametes

2. Structure of the class

public class Process.PluginDescribeResult{

public List<Process.PluginDescribeResult.Inputparameter>
inputparameters;

public List<Process.PluginDescribeResult.Outputparameter>
outputparameters;

3. Creating a object for the class

Process.PluginDescribeResult result=new Process.PluginDescribeResult();


result.inputparameters=new List<Process.PluginDescribeResult>();

result.outputparameters=new List<Process.PluginDescribeResult>();

Process.PluginDescribeResult.Inputparameter:
----------------------------------------------

1. This class will define description about a particular inputparameter

2. constructor

Process.PluginDescribeResult.inputparameter(name, dataType,required/not)

3.Example

Process.PluginDescribeResult.inputparameter('empName',

Process.PluginDescribeResult.ParameterType.String, true);

1.Process.PluginDescribeResult.Inputparameter ip1=
new Process.PluginDescribeResult.inputparameter('empName',

Process.pluginDescribeResult.ParameterType.String,true);

2. Process.PluginDescribeResult.Inputparameter ip2=
new Process.PluginDescribeResult.inputparameter('Salary',
Process.PluginDescribeResult.ParameterType.Decimal,true);

Process.PluginDescribeResult.Outputparameter
---------------------------------------------
1.This class will describe properties of outputparameters

2. Constructor

Process.PluginDescribeResult.Outputparameter( parameterName, DataType)

3. Example

Process.PluginDescribeResult.Outputparameter('name',
Process.PluginDescribeResult.ParameterType.String)

Describe Method :
---------------
1. This method is used to describe inputparameters and outputparameters

2. Syntax :

Public Process.PluginDescribeResult describe(){

}
Complete Example :

public class PluginExample implements Process.Plugin {


public Process.PluginResult invoke(Process.PluginRequest request){
String plugName=(String)request.inputParameters.get('empName');
plugName='My Name is modified to :'+plugName;
Map<String,Object> objMap=new Map<String,Object>();
objMap.put('name',plugName);
Process.PluginResult result=new Process.PluginResult(objMap);
return result;
}
public Process.PluginDescribeResult describe(){
Process.PluginDescribeResult result=new Process.PluginDescribeResult();
Process.PluginDescribeResult.inputParameter ip1=
new Process.PluginDescribeResult.inputParameter
('empName',Process.PluginDescribeResult.ParameterType.String,true);
Process.pluginDescribeResult.outputParameter op1=new
Process.PluginDescribeResult.outputParameter
('name',Process.PluginDescribeResult.ParameterType.String);
result.inputparameters=new
List<Process.PluginDescribeResult.inputParameter>{ip1};
result.outputParameters=new
List<Process.PluginDescribeResult.outputParameter>{op1};
return result;
}

VF page :
<apex:page >
<flow:interview name="Flow3" finishLocation="/apex/page1"></flow:interview>
</apex:page>

---------------------------------------------------------------------------------

You might also like