Projects
Projects are used to group Engine content. If your workspace has a few resources only, you could very well leave them all in the "Default project". Once your automations get more complex, it starts making sense to group resources according to their functions.
Separating resources into different projects also enhances security with a more granular access control. Read more about RBAC if you want to limit access to resources in specific projects.
An additional benefit is, that you can easily transfer projects and their associated resources between workspaces. Please refer to Import / Export for details.
And finally, projects are used to set the scope of the git integration.
Use Cases
Use a project to
- logically divide your content into buckets,
- limit access to resources based on roles,
- bundle various Engine resources so they can be transported between Engine workspaces,
- set the scope of the git integration.
Concept
There is always a "Default project" in your workspace. It cannot be deleted and contains all resources which were not assigned a different project explicitly.
Projects should not be confused with bundles. Although similar in looks, they differ in functionality and behaviour.
Dashboard
You can open a project by selecting it through the sidebar:
The sidebar
Once in a project, the project dashboard displays information about executions (count, success ratio etc.) and resources (flows, connectors etc.). It is similar to the workspace dashboard, the main difference being that each project only displays information about executions and resources within that project.
The project dashboard of the project "CI/CD"
Link to the Execution Live Monitor
The "Daily executions" and "Latest executions" both contain a link to the execution live monitor. For this, click on "show all".
"Daily executions" displays executions for the last 7 days in a column chart. Each day's executions are categorized by whether they were successful. Clicking on any of the columns also leads you to the execution live monitor with pre-applied filters for the current project, your selected date and your selected execution status.
The column chart makes it easy to filter for specific executions
Accessing projects using Flow API
The Flow API in Cloudomation allows users to interact with projects programmatically. Projects serve as a logical unit for organizing resources such as records, metadata, and tags.
Accessing a project
To access a project, use the system.project("project_name_or_id")
method. This method allows you to refer to a project by its name as a default or by id using the parameter by="id"
.
Referencing a project using this method does not validate its existence. Even if a project with the provided name or ID does not exist, the Flow API will not throw an error.
For example:
this.log(system.project('some-name'))
This will log <Project some-name>
, even if the project 'some-name'
does not exist or if 'some-name'
does not refer to an actual project.
Therefore, it is necessary to explicitly validate the existence of a project before performing updates or modifications through the Flow API.
How to access and validate if the project actually exists
import flow_api
def handler(system: flow_api.System, this: flow_api.Execution, inputs: dict):
project = system.project('example_project_name')
if project.exists():
this.log("Project exists!")
return this.success('all done')
else:
return this.error("Project does not exist!")
Configuration
Please see the table below for the different project fields and their meanings:
Field | Description |
---|---|
Version | A version number of the project. |