Implementing the Process.Plugin Interface

Process.Plugin is a built-in interface that allows you to pass data between your organization and a specified flow.
Tip
We recommend using the @InvocableMethod annotation instead of the Process.Plugin interface.
  • The interface doesn’t support Blob, Collection, sObject, and Time data types, and it doesn’t support bulk operations. Once you implement the interface on a class, the class can be referenced only from flows.
  • The annotation supports all data types and bulk operations. Once you implement the annotation on a class, the class can be referenced from flows, processes, and the Custom Invocable Actions REST API endpoint.

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 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 = 'Force.com 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 above class.

@isTest
                        
private class flowChatTest { static testmethod 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); } }
© Copyright 2000–2015 salesforce.com, inc. All rights reserved.
Various trademarks held by their respective owners.