Member Junction
    Preparing search index...

    Class EntityActionInvocationValidate

    Handles the Validate invocation type.

    Deliberately has no InvokeAction of its own. It used to override the single-record implementation with a near-copy that had drifted into a strict subset: same parameter mapping, same filters, but missing two things the parent does.

    1. Scope resolution. The override never called IsEntityActionInScope, so a binding narrowed to one record via ScopeEntityID/ScopeRecordID ran Validate against every record of the entity — the same class of bug as a workflow trigger that claims to be scoped and is not.
    2. Provenance. RunAction was called without it, so logging and redaction could not see which binding produced the run — meaning a whole-record Validate parameter was logged raw, ignoring the binding's LogValue rows and its LoggingMode.

    Inheriting is what keeps those two facts true for Validate forever, rather than until the next time the two copies drift. The class remains because @RegisterClass needs a distinct type to resolve the Validate key.

    Hierarchy (View Summary)

    Index

    Constructors

    Methods

    • The filter rows that gate this binding, in the order the binding declares.

      Two things this does beyond the obvious lookup:

      1. Disabled bindings are skipped. Filters fail closed by design, so a disabled binding that still gated would not merely be inert — it would prevent the action, and the only visible symptom is a trigger that silently stopped firing. Pending still gates: it is the column default, so treating it as inert would open every gate that was never explicitly activated.
      2. An unresolvable filter is reported separately, and prevents the run. A binding pointing at an ActionFilter the engine cannot see is a misconfiguration; running unfiltered would be the worst possible reading of it, since the whole point of the row is to narrow when this fires. Previously the undefined entry reached the evaluator and threw there — fail-closed by accident, with no usable reason in the log.

      Returns { Filters: MJActionFilterEntity[]; Unresolved: string[] }

    • Attempt to execute a script and wraps in try/catch to handle any errors so that no exceptions are thrown The scripts are passed an object called EntityActionContext which has a property called entityObject that is the entity object for the current Entity Action. The script can do whatever it wants to do, and passes back a value in the result property of the EntityActionContext object

      Parameters

      • EntityActionID: string
      • scriptText: string

        the script to execute

      • entityObject: BaseEntity

        the entity object to pass to the script

      Returns Promise<any>