Action Plugin Configuration

ActionPluginConfiguration classes are annotated with data which describes their behaviour in Enterprise and JEF.

Example:

ActionPluginConfiguration(async = true, description = "Email details needed by the Notification-Email-Action")
public class EmailActionConfiguration implements ActionConfiguration {
Field Default Value Description
description string The description of the action plugin.
async false Whether or not the action plugin is asynchronous.
autoRetrySupported false Whether or not the action plugin will auto-retry after failing.
ignoreFailureSupported false Whether or not the action plugin will ignore a failure.

Action Plugin Configuration Properties: Metadata Annotations

The action and resource configuration in JEF are “plain old java objects” (POJOs) and are serialised into Dalet Flex metadata definitions for the purposes of native Enterprise importing.

Java properties can be extended in order to define any additional metadata that is required by metadata definitions. For this purpose, JEF provides a metadata annotation library to augment java properties into configuration parameters that can be used in Enterprise.

Example:

@ConfigField( displayName = "Script Content", required = true, multiplicity = Multiplicity.MULTI, supportsExpression = true )

Extendable Properties

ConfigField

Java configuration class properties can be extended using java annotations, in order to define metadata definition property parameters.

Example:

// BuiltIn Configuration classes</span>
    @ConfigField(displayName = "Source File", description = "Details of the source file to import. If not specified, no media file will be imported into the asset. This can be used to create placeholder assets.", required = true )
    private VFSLocation builtInClassVfsLocation;
    @ConfigField(displayName = "Colour Field", required = true)
    private Colour builtInClassColour;

Properties for the ConfigField annotation:

Field Default Value Description
displayName string The name of the field. Example: profileName = "Profile Name",
description string This usually tells a user the purpose of the field, as well as the value that must be entered. Example: description = "This is a description field."
required false Whether or not the field is mandatory. Some plugins have mandatory configuration fields that must be filled out. If a value is not entered in a mandatory field, the plugin cannot be saved and enabled. Example: required = true
multiplicity SINGLE This is how many times a field can be replicated. Some fields can be created multiple times. The possible values are as follows: SINGLE ZERO_TO_ONE ZERO_TO_MANY ONE_TO_MANY
expressionEnabled false This lets you specify whether or not the field supports scripting.
defaultValue string If you do not specify a value, Dalet Flex automatically populates the field with a default.

The following additional annotation properties are available:

  • ObjectField: formType, objectType, classNames, objectTypedId, variantId.
  • OptionField (enum only): type (SINGLE, MULTI).
  • ValidationField: validation, validationDescription, validationHandler, and maxLength.

Java properties are converted into metadata definition properties:

  • Java primitives are mapped into metadata definition properties. These are as follows:  string, float, long, double, integer, and boolean.
  • Java wrappers are mapped into metadata definition properties. These are as follows:  string, float, long, double, integer, and boolean.
  • Java collections are mapped into metadata definition properties (list, map, and so on).
  • Enumerated types are mapped into metadata definition multi options.
  • Java POJO classes can be nested in a hierarchy.

Metadata annotation libraries provide preset built-in types:

  • Built-in metadata annotation classes provide the base metadata definition types. Adding them as properties in POJOs hides the complexity of the parameter definitions: Action, Asset, Colour, Email, File, Flex Object, Image Validation, Key Value, Password, Protocol, Script, Synchronous Execution Action, Time, Time Code, User, VFSLocation.
  • Collections of built-in types are supported (e.g. List<Asset>).
  • VFSLocation now supports a Boolean sharded option. This is to support sharding of storage resources.

All of the properties listed above can be combined to produce both simple and complex metadata definition configurations.

Example:

A valid action configuration could be as follows:

public class MetadataAnnotationE2EActionConfiguration implements ActionConfiguration  {
  private String stringFieldWithoutFieldAnnotation;
  private boolean primitiveBooleanFieldWithoutFieldAnnotation;
  private PojoWithoutFieldAnnotation pojoWithoutFieldAnnotation;
  ...
  @ConfigField(displayName = "Long Field Displayname", description = "Description", expressionEnabled = true)
  private Long primitiveLongFieldWithAnnotation;
  ...
  @ConfigField(displayName = "Pojo Object With ConfigField", description  = "To test ConfigField Annotation on a Pojo object")
  private PojoWithFieldAnnotation pojoObjectWithAnnotation;
  ...
  @ConfigField(displayName = "Enum Object with ConfigField", description = "To test ConfigField Annotation and OptionField as type Multi on Enum object")
  @OptionField(type = OptionTypes.MULTI)
  @ObjectField(formType = FormType.MULTI_SELECT, objectType = "")
  private EnumStatus enumWithAnnotation;
  ....