Official Plugins (Kuzzle v2.x)
Workflows v0.x
2

This plugin is part of the Kuzzle Enterprise Plan. If you are interested, please contact us.

WorkflowContext #

Copied to clipboard!
import _ from 'lodash';
import {
  KuzzleRequest,
  DocumentNotification,
  JSONObject,
} from 'kuzzle';
import { Workflow } from '../models';
export class WorkflowContext {
  /**
    * Tenant index where the workflow document is present
    */
  engineIndex: string;
  /**
    * Workflow currently executed
    */
    workflow: Workflow;
    /**
      * Original payload who triggered the workflow.
      *
      * For trigger of type `notification` it's a DocumentNotification
      * For trigger of type `event`, it can be a KuzzleRequest or any other kind of payload
      */
    originalPayload: KuzzleRequest | DocumentNotification | JSONObject;
    /**
      * Extracted payload
      */
    payload: JSONObject;
    /**
      * Additional information passed between actions
      */
    props: JSONObject;
  constructor ({ engineIndex, workflow, originalPayload, props }: {
    engineIndex: string,
    workflow: Workflow,
    originalPayload: JSONObject,
    props?: JSONObject,
  }) {
    this.engineIndex = engineIndex;
    this.workflow = workflow;
    this.originalPayload = originalPayload;
    this.props = props || {};
    this.payload = this.extractPayload();
  }
  extractPayload () {
    const item = this.originalPayload;
    return this.workflow.content.payloadPath === '.'
      ? item
      : _.get(item, this.workflow.content.payloadPath);
  }
}