process.yml

Process File

A process YAML file defines: ,- the process properties (name, mainTable, icon, etc.). ,- forms, which are referenced from user tasks. ,- field groups, which are used by forms. ,- process permissions ,- service tasks

type

object

properties

  • key

The process key. It must be unique in the app.

Identifier

  • type

Must be process.

type

string

enum

process

default

process

  • name

Process Name

type

string

  • description

Optional Process Description.

type

string

  • summary

Describes how to display a process instance.

type

object

examples

OrderedDict([(‘title’, ‘Vacations request by {{_vars.initiator.firstName}} {{_vars.initiator.lastName}}’), (‘subtitle’, ‘From {{startDate}} to {{endDate}}’)])

properties

  • title

First line (title) of the item.

type

string

  • subtitle

Second line (subtitle) of the item.

type

string

additionalProperties

False

  • icon

Process icon to display for starting a process.

Icon

  • mainTable

Main table to be used by this process. Main table is the table where the process will store data, and where it will get the information from.

type

string

  • startsFromExistingData

Whether the process should start using data from an existing record of the main table, or if it should create a new record. See more at Main table documentation.

type

boolean

  • mainTableFilter

Which records to show when starting from existing data.

filter

  • publicStart

Whether the process can be started by an anonymous user.

type

boolean

default

False

  • permissions

Process permissions

permissions

  • fieldGroups

Field groups allows to easily repeat fields that are common to multiple forms

type

object

patternProperties

fieldGroup

  • forms

Process forms used by this process

patternProperties

processForm

  • serviceTasks

Service tasks used by this process

patternProperties

serviceTask

additionalProperties

False

Examples

Minimum

# myProcess.yml

key: myProcess
type: process
name: My Process
description: Description of the process
summary:
  title: "{{firstName}} {{lastName}}"
mainTable: invitation

Full

key: processExample1
type: process
name: Start Recruitment
description: Description of the process
icon: person
mainTable: invitation
startsFromExistingData: false
publicStart: false

summary:
  title: "{{candidate.firstName}} {{candidate.lastName}}"
  subtitle: "{{candidate.email}}"

permissions:
  recruiter: true # recruiter can do everything
  employee:
    start: true # can start a process
    pause:
      own: true # can pause only own cases
  manager:
    start: true # can start cases
    pause: true # can pause any case
    # (cannot archive cases)

fieldGroups:

  summary:
    readOnly: true
    rows:
      - [candidate.firstName, candidate.lastName]
      - education

  summaryWithScores:
    readOnly: true
    rows:
      - _group: summary
      - _title: Scores
      - _statement: Please enter the candidate scores
      - iqScore
      - englishScore
      - handsOnScore
      - [candidate, position]

forms:

    fillOutScores:
      name: Fill out scores
      title: Fill out scores for {{candidate.firstName}} {{candidate.lastName}} - {{candidate.email}}

      rows:
        - _group: summary
        - _title: Scores
        - _statement: Please enter the candidate scores
        - iqScore
        - englishScore
        - handsOnScore

    approveCandidate:
      name: Approve Candidate
      rows:
        - _group: summaryWithScores
        - approvalComments
      outcomes:
        approve: Approve
        reject:
          title: Reject
          form:
            rows:
              - rejectReason

serviceTasks:
  calculateScore:
    name: Calculate score
    type: httpRequest
    retries: 3
    method: POST
    url: http://example.com/myEndpoint/{{candidate.email}}
    query:
      a: any text
      b: "{{candidate.id}}"
      d: "{{_secrets.mySecret}}"
      e: "{{_vars.initiator.id}}"
      f: A mix of anything {{_vars.initiator.email}} {{_secrets.abc}}
    headers:
      Authorization: Bearer {{_secrets.myToken}}
    body:
      myKey: myValue
      anotherKey: "{{_secrets.mySecret}}"
    mapping:
      _vars.response: "{{body}}"
      candidate.score: "{{body.data.score}}"
      _vars.statusCode: "{{statusCode}}"
      _vars.expireDate: "{{headers.expires}}"

You can see more detailed examples for each section in the following pages.