/elsa-designer

A standards-based Workflow Designer built with StencilJS

Primary LanguageTypeScriptMIT LicenseMIT

Built With Stencil

Elsa Workflow Designer

npm (scoped)

Elsa is a visual programming tool that allows you to implement parts or all of your application with workflows. Elsa Designer is a standalone client-side web component that you can embed in your own application.

html-based workflow designer

Installing this component

Script tag

  • Put a script tag similar to this <script src='https://unpkg.com/@elsa-workflows/elsa-workflow-designer@0.0.10/dist/elsa-workflow-designer.js'></script> in the head of your index.html
  • Then you can use the element anywhere in your template, JSX, html etc

Node Modules

  • Run npm install @elsa-workflows/elsa-workflow-designer --save
  • Put a script tag similar to this <script src='node_modules/@elsa-workflows/elsa-workflow-designer/dist/elsa-workflow-designer.js'></script> in the head of your index.html
  • Then you can use the element anywhere in your template, JSX, html etc

In a stencil-starter app

  • Run npm install @elsa-workflows/elsa-workflow-designer --save
  • Add an import to the npm packages import @elsa-workflows/elsa-workflow-designer;
  • Then you can use the element anywhere in your template, JSX, html etc

Using this component

To use the component, add the following HTML tag:

<wf-designer-host></wf-designer-host>

Out of the box, the designer registers a default set of activities that are provided from a set of plugins. To add custom activities, you need to define them as part of a custom plugin.

Integration with other Frontend framework

Angular(2+)

  1. Add Elsa Designer pkg CDN on index.html
<script
    type="module"
    src="https://unpkg.com/@elsa-workflows/elsa-workflow-designer@0.0.61/dist/elsa-workflow-designer/elsa-workflow-designer.esm.js"
></script>
<script
    nomodule=""
    src="https://unpkg.com/@elsa-workflows/elsa-workflow-designer@0.0.61/dist/elsa-workflow-designer/elsa-workflow-designer.js"
></script>
  1. On app.module.ts, add CUSTOM_ELEMENTS_SCHEMA
@NgModule({
  //whatever you have on app module goes here... 
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule {}
  1. Add <ng-wf-designer-host></ng-wf-designer-host> to the HTML
<wf-designer-host
    id="designerHost"
    canvas-height="300vh"
    [attr.data-activity-definitions]="activityDefinition"
    [attr.data-workflow]="workflowModel">
</wf-designer-host>

See full example here

Custom Activities

TODO: Describe how to register custom activity definitions using JavaScript & JSON.