Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejson
{
  "title": "My App",
  "description": "The description of the app",
  "icon": "some_icon_id",
  "color": "teal-8",
  "hidden": false,
  "tags": [
    "admin"
  ],
  "permissions": {
    "read": [
      "CAN_APP_io.pipeforce.myapp",
      "ROLE_ADMIN",
      "ROLE_DEVELOPER"
    ],
    "write": [
      "CAN_APP_io.pipeforce.myapp",
      "ROLE_ADMIN",
      "ROLE_DEVELOPER"
    ],
    "view": [
      "CAN_APP_io.pipeforce.myapp",
      "ROLE_ADMIN",
      "ROLE_DEVELOPER"
    ]
  }
}

"title"

The short title of the app. Can optionally be a $uri:i18n key for translations.

"description"

The description of the app. Can optionally be a $uri:i18n key for translations. Can be empty.

"icon"

The id of the Google Material icon to be used for this app. See here for listing of all available icons: https://fonts.google.com/icons . Note: Make sure to use the id of the icon not its name. If no icon is set, the system default icon will be used.

"color"

The color to be used for the app icon. If not set, the default color will be used. Also see here: Colors for more details about supported color codes.

"hidden"

An optional flag. If true, the app wont be shown in the apps listing in the portal. The default value is false.

"tags"

A list of optional search keywords. This improves finding this app via UI search.

"permissions"

Defines the required permissions for this app.

  • read = A list of ROLES, the logged-in user must be member of (at least in one of it) to be able to read values in this app (for example list properties / data stored in this app).

  • write = A list of ROLES, the logged-in user must be member of (at least in one of it) to be able to write values in this app (for example properties / data to the property store, submit forms).

  • view = A list of ROLES, the logged-in user must be member of (at least in one of it) to be able to see the app tiles, forms and lists in the web UI.

/

...

data

In case there are data objects (JSON documents), typically based on a schema, they should be stored inside this path structure:

Code Block
global/app/tld.domain.myapp/data/form/create-user
<NAME>/<UUID>

Whereas <NAME> is the name of the data object.

<UUID> is the unique id of a single data object.

For example:

Code Block
global/app/tld.domain.myapp/form/delete-user

See here for more details: Forms Framework

/function

This optional folder contains all Python FaaS functions which will be automatically deployed when such a property of this app is stored in the property store in this folder.

For more information see: Python Functions

Info

Any time the hub service restarts (for example because of rescaling), all function scripts inside this folder will be automatically scanned and re-deployed to the FaaS backend if required.

/i18n

This optional folder contains all internationalization (i18n) files like message files and other resources.

/install

Status
colourBlue
titleSInce Version 9.0

This optional folder can also contain pipeline YAML scripts. These pipelines will be executed only in case the app will be installed using the app.install or app.update command.

This is handy in case you would like to do some preparation on the install or update phase of an app like migrations for example.

The pipelines will be executed in their natural naming order. So if you would like to make sure a pipeline gets executed the very first, make sure it is at the very top of the naming order by using prefixes like 001-, 002- and so on.

Info

The pipelines in this folder wont be auto-executed on save of properties in the portal or on publish using the CLI or on hub restart. Only the initial app.install will execute them.

/list

This optional folder contains all list configuration properties for any list of the app, whereas the name of the property is the name of the list. For example:

Code Block
global/app/tld.domain.myapp/list/all-users
global/app/tld.domain.myapp/list/all-employees

See here for more details: List Framework

/object

This optional folder contains any application model (schema) and its instances (if there are any).

/schema

The schema of an object is stored in a property having this path:

Code Block
global/app/tld.domain.myapp/object/<NAME>/<VERSION>/schema

Whereas <NAME> is the name of the object.

<VERSION> is the version of the object schema.

For example:

Code Block
object/person/v1/schema

The schema property typically contains as value a JSON schema, which describes this object. For the person object, the schema could, for example, look like this:

Code Block
languagejson
{
  "type": "object",

  "properties": {
    "firstName": {
   data/person/fa471958-fdb7-4bf6-a0a3-c5e8c782893e

Each instance property will contain as value the data of the object instance which typically matches the schema, for example:

Code Block
languagejson
{
  "firstName": "Homer",
  "lastName": "Simpson",
  "age": 48,
  "gender": "male"
}
Info

Note: In case of an update of an app, the data folder wont be deleted by default. See the options of the app.update and app.install commands for more details.

/form

This optional folder contains all form configurations for any form of the app, whereas the name of the property is the name of the form. For example:

Code Block
global/app/tld.domain.myapp/form/create-user
global/app/tld.domain.myapp/form/delete-user

See here for more details: Forms Framework

/function

This optional folder contains all Python FaaS functions which will be automatically deployed when such a property of this app is stored in the property store in this folder.

For more information see: Python Functions

Info

Any time the hub service restarts (for example because of rescaling), all function scripts inside this folder will be automatically scanned and re-deployed to the FaaS backend if required.

/i18n

This optional folder contains all internationalization (i18n) files like message files and other resources.
Also see: Internationalization (i18n).

/install

Status
colourBlue
titleSInce Version 9.0

This optional folder can also contain pipeline YAML scripts. These pipelines will be executed only in case the app will be installed using the app.install or app.update command.

This is handy in case you would like to do some preparation on the install or update phase of an app like migrations for example.

The pipelines will be executed in their natural naming order. So if you would like to make sure a pipeline gets executed the very first, make sure it is at the very top of the naming order by using prefixes like 001-, 002- and so on.

Info

The pipelines in this folder wont be auto-executed on save of properties in the portal or on publish using the CLI or on hub restart. Only the initial app.install will execute them.

/list

This optional folder contains all list configuration properties for any list of the app, whereas the name of the property is the name of the list. For example:

Code Block
global/app/tld.domain.myapp/list/all-users
global/app/tld.domain.myapp/list/all-employees

See here for more details: List Framework

/object (deprecated)

Note

DEPRECATED since

Status
colourBlue
titleVERSION 9.0
. Use /data folder instead.

This optional folder contains any application model (schema) and its instances (if there are any).

/schema (deprecated)

Note

Folder /object/schema is DEPRECATED since

Status
colourBlue
titleVERSION 9.0
. Use /schema folder in app root instead.

The schema of an object is stored in a property having this path:

Code Block
global/app/tld.domain.myapp/object/<NAME>/<VERSION>/schema

Whereas <NAME> is the name of the object.

<VERSION> is the version of the object schema.

For example:

Code Block
object/person/v1/schema

The schema property typically contains as value a JSON schema, which describes this object. For the person object, the schema could, for example, look like this:

Code Block
languagejson
{
  "type": "object",

  "properties": {
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "age": {
      "type": "number"
    },
    "gender": {
      "type": "string",
      "enum": ["male", "female", "neutral"]
    }
  }
}

See the JSON schema section for more details: JSON Schema

/instance​ (deprecated)

Note

DEPRECATED since

Status
colourBlue
titleVERSION 9.0
. Use /data folder instead.

In case there are object instances (JSON documents) based on a schema, they should be typically stored inside this path structure:

Code Block
global/app/tld.domain.myapp/object/<NAME>/<VERSION>/instance/<UUID>

Whereas <NAME> is the name of the object.

<VERSION> is the version of the object schema.

<UUID> is the unique id of a single object.

For example:

Code Block
global/app/tld.domain.myapp/object/person/v1/instance/fa471958-fdb7-4bf6-a0a3-c5e8c782893e

Each instance property will contain as value the data of the object instance which matches the object schema, for example:

Code Block
languagejson
{
  "firstName": "Homer",
  "lastName": "Simpson",
  "age": 48,
  "gender": "male"
}

/pipeline

This optional folder contains all persisted pipeline YAML scripts for the given app. A pipeline can be seen as the business logic or data integration part of an application.

Each property name corresponds with the name of the pipeline and contains as value the pipeline YAML script.

Examples:

Code Block
global/app/tld.domain.myapp/pipeline/001-send-invite-email
global/app/tld.domain.myapp/pipeline/add-to-sap
global/app/tld.domain.myapp/pipeline/inform-hr

Such a pipeline YAML script could look like this:

Code Block
languageyaml
pipeline:
  - mail.send:
      to: hr@company.de
      subject: "A new employee was addded!"

Also see Data Pipeline for more details how to create persisted pipelines.

Info

Any time the hub service restarts (for example because of rescaling), all pipeline scripts inside this folder (recursively) will be automatically scanned and any trigger command inside each pipeline will be re-registered (for example jobs, message listeners, …).

/report

This optional folder can contain all report configurations.

See here for more details: Reporting Framework

/resource

This optional folder can contain any resource required inside the app. For example images, CSS files or similar.

/schema

The schema of an data object is stored in a property having this path:

Code Block
global/app/tld.domain.myapp/schema/<NAME>

Whereas <NAME> is the name of the data object this schema stands for.

For example:

Code Block
global/app/tld.domain.myapp/schema/person

The schema property typically contains as value a JSON schema, which describes this object. For the person object, the schema could, for example, look like this:

Code Block
languagejson
{
  "type": "string"
    },
object",

  "lastNameproperties": {
      "type": "string"
    },
    "age"firstName": {
      "type": "numberstring"
    },
    "gender": {
 
    "typelastName": "string",{
      "enumtype": ["malestring",
"female", "neutral"]
    }
  }
}

See the JSON schema section for more details: JSON Schema

/instance​

In case there are object instances (JSON documents) based on a schema, they should be typically stored inside this path structure:

Code Block
global/app/tld.domain.myapp/object/<NAME>/<VERSION>/instance/<UUID>

Whereas <NAME> is the name of the object.

<VERSION> is the version of the object schema.

<UUID> is the unique id of a single object.

For example:

Code Block
global/app/tld.domain.myapp/object/person/v1/instance/fa471958-fdb7-4bf6-a0a3-c5e8c782893e

Each instance property will contain as value the data of the object instance which matches the object schema, for example:

Code Block
languagejson
{
  "firstName": "Homer",
  "lastName": "Simpson",
  "age": 48,
  "gender": "male"
}

/pipeline

This optional folder contains all persisted pipeline YAML scripts for the given app. A pipeline can be seen as the business logic or data integration part of an application.

Each property name corresponds with the name of the pipeline and contains as value the pipeline YAML script.

Examples:

Code Block
global/app/tld.domain.myapp/pipeline/001-send-invite-email
global/app/tld.domain.myapp/pipeline/add-to-sap
global/app/tld.domain.myapp/pipeline/inform-hr

Such a pipeline YAML script could look like this:

Code Block
languageyaml
pipeline:
  - mail.send:
      to: hr@company.de
      subject: "A new employee was addded!"

Also see Data Pipeline for more details how to create persisted pipelines.

Info

Any time the hub service restarts (for example because of rescaling), all pipeline scripts inside this folder (recursively) will be automatically scanned and any trigger command inside each pipeline will be re-registered (for example jobs, message listeners, …).

/report

This optional folder can contain all report configurations.

See here for more details: Reporting Framework

/resource

This optional folder can contain any resource required inside the app. For example images, CSS files or similar.

/setup

Note

DEPRECATED since

Status
colourBlue
titleVERSION 9.0
. Use /install folder instead.

This optional folder can also contain pipeline YAML scripts. These pipelines will be executed only in case the app will be installed using the app.install command.

This is handy in case you would like to do some preparation on setup phase of an app.

The pipelines will be executed in their natural naming order. So if you would like to make sure a pipeline gets executed the very first, make sure it is at the very top of the naming order by using prefixes like 001-, 002- and so on.

Info

The pipelines in this folder wont be auto-executed on save of properties in the portal or on publish using the CLI or on hub restart. Only the inital app.install will execute them.

/script

Note
DEPRECATED since
,
    "age": {
      "type": "number"
    },
    "gender": {
      "type": "string",
      "enum": ["male", "female", "neutral"]
    }
  }
}

See the JSON schema section for more details: JSON Schema

/setup (deprecated)

Note

DEPRECATED since

Status
colourBlue
titleVERSION 9.0
. Use /install folder instead.

This optional folder can also contain pipeline YAML scripts. These pipelines will be executed only in case the app will be installed using the app.install command.

This is handy in case you would like to do some preparation on setup phase of an app.

The pipelines will be executed in their natural naming order. So if you would like to make sure a pipeline gets executed the very first, make sure it is at the very top of the naming order by using prefixes like 001-, 002- and so on.

Info

The pipelines in this folder wont be auto-executed on save of properties in the portal or on publish using the CLI or on hub restart. Only the inital app.install will execute them.

/script (deprecated)

Note

DEPRECATED since

Status
colourBlue
titleVERSION 9.0
. Use /function folder instead.

/system

This folder contains all system related backend data of this specific app. For example tmp data, workflow or form data. It is not meant for manual handling and you should not be required to touch or change content in it. It is fully managed by the platform.

Info

Note: By default this folder wont be deleted on app.install or app.update.

/template

This optional folder should contains all templates like FreeMarker templates an others.

See here for more details: Template Transformation

/test

This optional folder typically contains pipelines for tests only. Whenever necessary, PIPEFORCE automatically executes the test pipelines inside this folder to make sure the app is working as expected. Therefore you have to make sure that these tests can be executed at any time and are fully reentrant (once a test has been finished it can be executed again as often as necessary).

For example:

Code Block
global/app/tld.domain.myapp/test/create-user

The property contains the test pipeline as value. Such a test pipeline could look like this:

Code Block
languageyaml
pipeline:
  - assert:
      true: ${someTestExpression}

See here for more details: Testing

/uninstall

Status
colourBlue
title

...

/template

This optional folder should contains all templates like FreeMarker templates an others.

See here for more details: Template Transformation

...

SInce Version 9.0

This optional folder typically contains pipelines for tests only. Whenever necessary, PIPEFORCE automatically executes the test pipelines inside this folder to make sure the app is working as expected. Therefore you have to make sure that these tests can be executed at any time and are fully reentrant (once a test has been finished it can be executed again as often as necessary).

For example:

Code Block
global/app/tld.domain.myapp/test/create-user

The property contains the test pipeline as value. Such a test pipeline could look like this:

Code Block
languageyaml
pipeline:
  - assert:
      true: ${someTestExpression}

See here for more details: Testing

...

can also contain pipeline YAML scripts. These pipelines will be executed only in case the app will be uninstalled using the app.uninstall command.

This is handy in case you would like to do some preparation before uninstall.

The pipelines will be executed in their natural naming order. So if you would like to make sure a pipeline gets executed the very first, make sure it is at the very top of the naming order by using prefixes like 001-, 002- and so on.

Info

The pipelines in this folder wont be auto-executed on save of properties in the portal or on publish using the CLI or on hub restart. So triggers in these pipelines wont work. Only a call of app.uninstall will execute them.

/update

Status
colourBlue
titleSInce Version 910.0.1

This optional folder can also contain folder is optional and contains all migration pipeline YAML scripts in order to migrate from one app version to another. These pipelines will be executed only in case the app will be uninstalled installed using the app.uninstallupdate command.

This is handy in case you would like to do some preparation before uninstall.

The pipelines will be executed in their natural naming order. So if you would like to make sure a pipeline gets executed the very first, make sure it is at the very top of the naming order by using prefixes like 001-, 002- and so on.

Info

The pipelines in this folder wont be auto-executed on save of properties in the portal or on publish using the CLI or on hub restart. So triggers in these pipelines wont work. Only a call of app.uninstallupdate will auto-execute them.

/workflow

This optional folder contains any BPMN workflow files defining a business process.

...