Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including @opuscapita/fsm-workflow-history with all npm packages installed. Try it out:

require("sequelize/package.json"); // sequelize is a peer dependency. var fsmWorkflowHistory = require("@opuscapita/fsm-workflow-history")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

@opuscapita/fsm-workflow-history v2.2.9

Business-object history for FSM workflow

Workflow History

badge-npm-version NPM Downloads

Workflow History is an extension to FSM Core. It provides server-side API for storing and extracting Business Object lifecycle history.


Install package

npm install --save-prod @opuscapita/fsm-workflow-history

Basic Usage

// Run migrations and initiate an instance of FSM Workflow History.
const history = await require('@opuscapita/fsm-workflow-history')(sequelize);

history is JavaScript object with the following structure/interface:

  // add history record
  async add({
    from: <string>,
    to: <string>,
    event: <string>,
    businessObjType: <string>,
    businessObjId: <string>,
    user: <string>,
    workflowName: <string>,
    ?description: <string>
  }) {
    return <History Record>;

  // search for history record
  async search({
      ?object: {
        ?businessObjType: <string>, // example: 'invoice'
        ?businessObjId: <string> // example: 'john.miller'
      ?user: <string>,
      ?workflowName: <string>,
      ?finishedOn: {
        ?gt: <date>, // example: new Date("2018-03-05T21:00:00.000Z")
        ?gte: <date>,
        ?lt: <date>,
        ?lte: <date>
  }, {
      ?max: <number, 100 by default>,
      ?offset: <number, 0 by default>
  }, {
      ?by: <string, History Record field name, "finishedOn" by default>, // example: 'user'
      ?order: <string, "desc" (default) or "asc">
  }) {
    return [<History Record>, ... ];

  // delete history record
  async delete({
    businessObjType: <string>,
    businessObjId: <string>,
  }) {
    return <deleted records number>;


History Record is JavaScript object with values from DB:

idintegertrueautogenerated id
businessObjTypestringtrueexample: 'invoice'
businessObjIdstringtrueexample: '123456789'
userstringtrueuser initiated a transition
workflowNamestringtrueunique workflow name, known by workflow machine
descriptionstringfalseevent/object/trsnaition information
finishedOntimestamptruelike in Grailsflow, object finished the transition in 'to' state

See Express Server Demo for an example of using Workflow History.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free