Giter Club home page Giter Club logo

Comments (2)

sfmskywalker avatar sfmskywalker commented on August 10, 2024

Absolutely. The component allows you to define activity definitions in 3 ways:

  1. Programmatically using JavaScript
  2. Declaratively using the <wf-custom-activity> tags
  3. As a web component built with StencilJS

Ultimately, an activity definition is a plain old JavaScript object that looks like this:

interface ActivityDefinition {
  type: string;
  displayName: string;
  description: string;
  category: string;
  properties: Array<ActivityPropertyDescriptor>;
  getOutcomes(activity: Activity): string[];
}

Your back-end could simply store these as JSON. However one thing I might not have thought through enough is the getOutcomes field, which expects a function value that computes the available outcomes. In most scenarios, this will simply return an array of strings, but in some scenarios, that array will be based on certain attributes of a given activity.

For example, the Fork activity allows the user to specify a comma-separated list of branches. The getOutcomes function for this activity will take these branch names and return them as an array of outcomes.

Could you maybe tell a little bit more about your use case on how you were thinking to store activity definitions in your back-end?

from elsa-designer.

sfmskywalker avatar sfmskywalker commented on August 10, 2024

I gave this some more thought, and I think I found a neat solution to allow for data-driven activity definitions. I am planning on building a reference dashboard application with Orchard Core that would allow an admin to define activity definitions from the dashboard.

Ultimately, you will be able to define activity definitions using any of the following approaches:

  1. Using ActivityManager, a singleton service that exposes addActivityDefinition, accepting a simple object describing the activity.
  2. Using <wf-activity-definition>, exposing attributes to configure an activity definition.
  3. Using StencilJS to define custom activities.

Options 2 and 3 are complete optional, as they all ultimately just add a simple activity definition in the form of an object (serializable from and to JSON) to the internal store.

I'll close this issue and create a new one to track progress on this work, but feel free to keep posting here if you want.

from elsa-designer.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.