Fluent Commerce Logo
Docs
Sign In

Rule Info Annotation

Topic

Author:

Fluent Commerce

Changed on:

22 Sept 2023

Overview

The 

`@RuleInfo`
 Annotation describes the metadata for the Rule. It is important to annotate the Rule as accurately as possible.

The information in the Rule Info

Author:

Fluent Commerce

Changed on:

22 Sept 2023

Overview

The following steps breakdown how the rules should be annotated to make sure that the workflow functions properly.

Key points

  • The rule’s properties are used in the workflow, the WF orchestration modeller, and the rule library. 
  • The syntax in the previous entities needs to follow the methodology explained below.
  • The
    `@EventInfo`
    Annotation describes the Event specific metadata for incoming/outgoing action events (rule info
    `accepts`
    /
    `produces`
    property respectively).

The information in the Rule Info is used in the following ways:

  • To validate the Rule for Workflow Execution.
  • To provide data to display in the Workflow Orchestration Modeller and Rule Library.

The Rule Info includes the following properties:

  • `name`
     - this is the Rule name. Make sure your Rule Names are descriptive and specific to the intended logic and behavior of the rule.
  • `description`
     - this is a parameterized string used to describe the behavior of the Rule, as well as indicate what and how the Rule Parameters are used.
  • `accepts`
     - this is a list of 
    `@EventInfo`
     Annotations (see below) to describe the 
    `entityType`
    s for which this Rule will work on.
  • `produces`
     - this uses an 
    `@EventInfo`
     Annotation (see below) to describe the Event that the rule outputs.
  • `exceptions`
     - this is a list of 
    `RuleExecutionException`
     classes that this rule might throw. Make sure you read up on Exception Management for more info.

The description Property and the Modeller

The 

`description`
 property is also used by the Modeller to display form fields for Parameter values. It is important that all parameters defined for the rule via the 
`@Param<Type>`
 annotations are reflected in the description.

The syntax here is important. Wrap parameter names in curly braces 

`{`
 and 
`}`
 as shown below:

1@RuleInfo(
2        name = "ExampleRule"
3        , description = "This is the description of the Example Rule using parameter {ParamString1}"
4)
5@ParamString(name = "ParamString1", description = "Parameter String 1", defaultValue = "PS1")
6public class ExampleRule implements Rule {
7
8    // ...
9}

Language: java

Name: Syntax

Description:

[Warning: empty required content area]
1@RuleInfo(
2        name = "ExampleRule"
3        , description = "This is the description of the Example Rule using parameter {" + MyRuleConstants.PARAM_STRING_1_NAME + "}"
4)
5@ParamString(name = MyRuleConstants.PARAM_STRING_1_NAME, description = "Parameter String 1", defaultValue = "PS1")
6public class ExampleRule implements Rule {
7
8    // ...
9}

Language: java

Name: Example

Description:

[Warning: empty required content area]

This will render a form field for use within the Modeller:

No alt provided

The @EventInfo Annotation

The 

`@EventInfo`
 Annotation describes the Event specific metadata applicable to either the incoming event (Rule Info 
`accepts`
 property) or the outgoing action event (Rule Info 
`produces`
 property).

The Event Info includes the following properties:

  • `eventName`
     - the Name of the Event produced by this Rule.
  • `entityType`
     - the Entity Type of the Events accepted by this Rule, or the Entity Type of the Event produced by this Rule.
  • `entitySubType`
     - the Sub Type of the Entity of the Event produced by this Rule.
  • `status`
     - the Status of the Entity of the Event produced by this Rule.
1    produces = {
2        @EventInfo(eventName = "{eventName}"
3        , entityType = EventInfoVariables.EVENT_TYPE
4        , entitySubtype = EventInfoVariables.EVENT_SUBTYPE
5        , status = EventInfoVariables.EVENT_STATUS
6    )

Language: java

Name: Example

Description:

[Warning: empty required content area]
Fluent Commerce

Fluent Commerce

Copyright © 2024 Fluent Retail Pty Ltd (trading as Fluent Commerce). All rights reserved. No materials on this docs.fluentcommerce.com site may be used in any way and/or for any purpose without prior written authorisation from Fluent Commerce. Current customers and partners shall use these materials strictly in accordance with the terms and conditions of their written agreements with Fluent Commerce or its affiliates.

Fluent Logo