Process.Plugin is a built-in interface that
allows you to pass data between your organization and a specified flow.
The class that implements the Process.Plugin interface must call these methods.
| Name | Arguments | Return Type | Description |
|---|---|---|---|
| describe | Process.PluginDescribeResult | Returns a Process.PluginDescribeResult object that describes this method call. | |
| invoke | Process.PluginRequest | Process.PluginResult | Primary method that the system invokes when the class that implements the interface is instantiated. |
Example Implementation
global with sharing class flowChat implements Process.Plugin { // The main method to be implemented. The flow calls this at runtime. global Process.PluginResult invoke(Process.PluginRequest request) { // Get the subject of the Chatter post from the flow String subject = (String) request.inputParameters.get('subject'); // Use the Chatter APIs to post it to the current user's feed FeedItem fItem = new FeedItem(); fItem.ParentId = UserInfo.getUserId(); fItem.Body = 'Flow Update: ' + subject; insert fItem; // return to flow Map<String,Object> result = new Map<String,Object>(); return new Process.PluginResult(result); } // Returns the describe information for the interface global Process.PluginDescribeResult describe() { Process.PluginDescribeResult result = new Process.PluginDescribeResult(); result.Name = 'flowchatplugin'; result.Tag = 'chat'; result.inputParameters = new List<Process.PluginDescribeResult.InputParameter>{ new Process.PluginDescribeResult.InputParameter('subject', Process.PluginDescribeResult.ParameterType.STRING, true) }; result.outputParameters = new List<Process.PluginDescribeResult.OutputParameter>{ }; return result; } }
Test Class
The following is a test class for the preceding class.
@IsTest private with sharing class flowChatTest { @IsTest static void flowChatTests() { flowChat plugin = new flowChat(); Map<String,Object> inputParams = new Map<String,Object>(); string feedSubject = 'Flow is alive'; InputParams.put('subject', feedSubject); Process.PluginRequest request = new Process.PluginRequest(inputParams); plugin.invoke(request); } }