InvocableMethod Annotation In Apex

Invocable actions are identified by the use of InvocableMethod annotation. Used to called with the Rest API to invoke a Apex method. They have dynamic input and output values and support describe calls.

Invocable Method Considerations:

  • Only one method in a class can have the InvocableMethod annotation.
  • Triggers can’t use invocable methods.
  • The invocable method must be static and public or global, and its class must be an outer class.
  • Other annotations can’t be used with the InvocableMethod annotation.
  • There can be at most one input parameter and its data type must be one of the following:
    • A list of a primitive data type or a list of lists of a primitive data type – the generic Object type is not supported.
    • A list of an sObject type or a list of lists of an sObject type – the generic sObject type is not supported.
    • A list of a user-defined type, containing variables of the supported types and with the InvocableVariable annotation. Create a custom global or public Apex class to implement your data type, and make sure your class contains at least one member variable with the invocable variable annotation.
  • If the return type is not Null, the data type returned by the method must be one of the following:
    • A list of a primitive data type or a list of lists of a primitive data type – the generic Object type is not supported.
    • A list of an sObject type or a list of lists of an sObject type – the generic sObject type is not supported.
    • A list of a user-defined type, containing variables of the supported types and with the InvocableVariable annotation. Create a custom global or public Apex class to implement your data type, and make sure your class contains at least one member variable with the invocable variable annotation.
  • You can use invocable methods in packages, but once you add an invocable method you can’t remove it from later versions of the package.
  • An invocable method can be public in a managed package, but it won’t appear as an action in the Cloud Flow Designer’s list of available actions while building or editing a flow. These invocable actions can still be referred to by flows within the same managed package. Global invocable methods in a managed package can be used in flows outside the managed package, anywhere in the organization, and appear in the Cloud Flow Designer’s list of available actions to add to a flow.

Leave a Reply

Your email address will not be published. Required fields are marked *