Member Junction
    Preparing search index...

    Module @memberjunction/ng-record-process-studio

    @memberjunction/ng-record-process-studio

    The generic Bulk Operations studio — reusable Angular UI for authoring, running, and auditing Record Processes (rules-driven bulk operations). MJExplorer's Bulk Operations app is a thin host over these components, but any MJ Angular app can drop them in.

    A "Record Process" is a saved, reusable operation that runs over a set of an entity's records. The flagship work type is FieldRules — declarative rules that set fields from a fixed value, another field, a formula, an entity lookup, or an AI prompt — always previewed as an exact per-record diff before any write happens.

    Component Selector Purpose
    RecordProcessStudioComponent <mj-record-process-studio> The hub — list / search / create / edit / run bulk operations.
    RecordProcessEditorComponent <mj-record-process-editor> Author one process: basics + target entity + scope + the embedded visual rules builder + an inline dry-run Preview.
    RecordProcessHistoryComponent <mj-record-process-history> Run history with per-record drill-in (the field diff persisted on each Process Run Detail).

    All three are standalone, OnPush, extend BaseAngularComponent (so they accept [Provider] for multi-provider), use --mj-* design tokens only (light + dark), and import nothing from @angular/router (Generic-package rule).

    <!-- the whole hub -->
    <mj-record-process-studio [Provider]="ProviderToUse"></mj-record-process-studio>

    <!-- just the authoring editor for one record (e.g. embedded in an entity form) -->
    <mj-record-process-editor [Record]="record" [ShowToolbar]="false" [Provider]="ProviderToUse"></mj-record-process-editor>

    <!-- run history, optionally scoped to one process -->
    <mj-record-process-history [RecordProcessID]="id" [Provider]="ProviderToUse"></mj-record-process-history>

    Call LoadRecordProcessStudio() once from your app bootstrap to keep the components through tree-shaking.

    ng-record-process-studio
    ├─ embeds <mj-field-rules-builder> ← @memberjunction/ng-entity-action-ux (visual rule authoring)
    ├─ embeds <mj-ai-prompt-selector> ← (grouped AI-prompt picker, via the builder)
    ├─ mounts RecordProcessRunnerUX ← @memberjunction/ng-entity-action-ux (dry-runconfirm runner)
    └─ runs RunRecordProcess ← @memberjunction/graphql-dataproviderRecordProcessExecutor engine

    The studio is intentionally thin orchestration over already-tested primitives: the rule engine (@memberjunction/global field-rules, 25 tests), its metadata-aware layer (@memberjunction/core EntityFieldRules), the transform plugins (@memberjunction/field-rules-transforms, 8 tests), the builder/runner/serialization (@memberjunction/ng-entity-action-ux, 23 tests), and the executor + scope-override (@memberjunction/record-set-processor, 24 facade tests). The studio adds the list/edit/run/history surfaces around them.

    • In the Bulk Operations appRecordProcessStudioComponent shows it with its Save / Preview toolbar.
    • In the custom MJ: Record Processes entity formShowToolbar=false; the form's <mj-record-form-container> owns Save while the editor mutates the record in place. So editing a process from anywhere in Explorer gets the same visual rules builder instead of a raw Configuration JSON field.

    Standalone + inject() · @if/@for/@switch · PascalCase public members · --mj-* tokens only · multi-provider via [Provider] / ProviderToUse · no Router imports · self-contained chrome (each component owns its own toolbar so it drops into any host).

    Classes

    RecordProcessEditorComponent
    RecordProcessHistoryComponent
    RecordProcessStudioComponent

    Functions

    LoadRecordProcessStudio