Graphileon Knowledge
On This Page
Graphileon runs applications by loading application logic — functions and triggers — from a label-property graph stored in a graph database, and subsequently executing them. The central pattern is:
(:IA_Function)-[:TRIGGER {type: event_name}]->(:IA_Function)
Combined with around 60 different function types, this pattern provides exceptional flexibility for building graph-powered applications.
Graph Elements (Vertex Labels)
Graphileon’s application model is built around the following node (vertex) labels stored in the graph database:
Allowed Patterns
These are the graph patterns that define how Graphileon’s application logic is structured:
- Function triggers Function — all
IA_Functionvertices have a requiredtypeproperty that determines their behaviour and the outgoing events that can be triggered.
(source:IA_Function {type})-[:TRIGGER]->(target:IA_Function {type}) - Function requires Permission —
REQUIREedges have a requiredforproperty. Use of permissions is optional.
(:IA_Function {type})-[:REQUIRE {for: read|query|filter}]->(:IA_Permission) - Dashboard shortcut to Function — the shortcut materialises as a button; activating it initiates the function.
(:IA_Dashboard)-[:SHORTCUT {name}]->(:IA_Function {type}) - User personal shortcut — appears as a button in the user segment on all accessible dashboards.
(:IA_User)-[:SHORTCUT {name}]->(:IA_Function {type}) - Team shortcut — appears as a button in the team segment on all accessible dashboards.
(:IA_Team)-[:SHORTCUT {name}]->(:IA_Function {type}) - Dashboard auto-start — loading the dashboard automatically starts the linked function.
(:IA_Dashboard)-[:START]->(:IA_Function {type}) - Dashboard bookmark — makes functions accessible at a named URL pattern.
(:IA_Dashboard {iaName})-[:BOOKMARK {name}]->(:IA_Function {type}) - User can see Dashboard
(:IA_User)-[:DASHBOARD]->(:IA_Dashboard) - Team can see Dashboard — a user who is a member of a team can see a dashboard.
(:IA_Team)-[:DASHBOARD]->(:IA_Dashboard) - User is member of Team
(:IA_User)-[:MEMBER]->(:IA_Team) - Nested Team structure — team A is a member of team B; patterns can be chained.
(:IA_Team {name: 'A'})-[:MEMBER]->(:IA_Team {name: 'B'}) - User granted Permission
(:IA_User)-[:ALLOW]->(:IA_Permission) - Team granted Permission
(:IA_Team)-[:ALLOW]->(:IA_Permission)
Core Mechanisms
Understanding these mechanisms is essential to building effective Graphileon applications:
- Graphileon loads application logic from a label-property graph and executes functions and triggers. The central pattern
(:IA_Function)-[:TRIGGER {type:event_name}]->(:IA_Function), combined with ~60 function types, enables great flexibility. :TRIGGERedges match specific events using thetypeproperty. A trigger with notypeproperty fires on any event. Multiple events can be matched using an includes expression:{ true: includes(['functionExecuted','functionUpdated'],(%).type) }.- Functions are stored in
(:IA_Function)nodes. Triggers are stored on edges and fired when events occur. Triggers support matching (when to fire) and mapping (what data to pass). - The value of the
typeproperty on a[:TRIGGER]relationship must correspond to one of the event names of the source function. - Query statements must be configured inside a
Queryfunction. If aTreeVieworGridViewneeds data, use aQueryfunction with aTRIGGER {type: 'success'}to the consumer. - Application flows can be recursive — a function may trigger itself:
(a:IA_Function)-[:TRIGGER {type:event_name}]->(a). - When a UI widget function is triggered, it automatically executes and appears in the designated area (default:
content). [:TRIGGER|SHORTCUT|START]edge property keys belong to one of these categories:match,map_to_target,match_to_path,manage_appearance,manage_instance,permission, orid.- A
public: false|trueproperty on a[:TRIGGER]determines whether it fires without a logged-in user. Default isfalse. - To pass parameters to a
Queryfunction, use a$paramsobject on the trigger:{'$params.myParameter': '123'}. - Backend functions are killed after execution unless
stayAliveis set todashboardorsession. Commonly used withIO,Timer,CustomStyle, andIterate. - A new function instance is created on every incoming event unless the function’s
_instanceproperty is set to a specific name. - UI widget triggers with
{type: 'context'}create right-click context menus. Triggers with{type: 'batch'}create buttons at the top of the container. - Triggers can access the global object via
(@)— e.g.(@).user.namefor the current user or(@).instances.myInstance.datafor named instances. - Triggers access event data via the event object
(%)— e.g.(%).datafor the event payload or(%)._function.cypherto read the source function’s property. - Property keys starting with
$_path.or#_path.map values to the application path object, accessible downstream via(%)._path. - Instance management uses
$_instance,$kill, and$_instanceUpdateOnly.$_instance: '_new'|[name]|'_previous'|'_all'directs flow to specific instances. - Trigger property keys that do not start with
#or$are matching properties — conditions that must be true for the trigger to fire. - Multiple matching conditions can be combined using
trueas the key:{ true: (@).user.name == 'Tom' && (%).data.length >= 5 }. - Function properties whose keys start with
#or$can be updated at runtime. Properties without these prefixes are read-only. - UI functions are rendered inside containers. Container properties (id, title, state, area, height, width) are set via the
$containerproperty key. - If a function renders in a container with an existing id, the previous function is killed and replaced — preventing screen clutter.
- Four default display areas exist:
content(centre),sidebar-right,sidebar-left, andmodal. - Property values that reference expressions or combine multiple event/global objects must be wrapped in
evaluate():{ $message: "evaluate('Hello ' + (@).user.name)" }. - All parameters support Mustache templating by default:
{{ placeholder }}is replaced at execution time. Templating can be disabled per parameter with the:templating: nonemeta property. - Routing between application branches is achieved by creating multiple outgoing triggers with matching properties to determine which branch fires.
- Property keys must be unique on a function, ignoring the
#/$prefix — you cannot have both$fooand#fooon the same function.
Function Types
Graphileon provides approximately 60 function types spanning backend logic, data management, UI views, maps, charts, graph visualisation, and administration.
Backend & Logic
Server-side / Flow control
API
Represents an API endpoint that can receive requests from outside or from within Graphileon.
IO
The most basic function — for passing, branching, or storing data without additional processing.
Query
Executes database queries in Cypher, Gremlin, or SPARQL on a specified store and returns results.
Request
Performs a request to an internal or external endpoint with options for authentication, custom headers, and download functionality.
ElasticsearchQuery
Executes a query in Elasticsearch and processes results for Graphileon.
ExecuteFunction
Executes another function identified by its database ID or iaName.
Iterate
Processes each item in an array or object, triggering events for each key-value pair iteratively. Supports serial and parallel modes.
Timer
Counts down from a specified time and triggers actions upon reaching zero, with optional repeat functionality.
EventListener
Listens for global events such as login, logout, dashboard load, and errors, then conveys them via triggers.
SessionMessage
Broadcasts a message to a specified channel for session-based messaging across connected clients.
Websocket
A backend function that establishes a WebSocket connection.
Hash
Generates cryptographic hash values from input data using algorithms from the crypto library.
CSVParser
Parses a delimited data string or remote URL and converts it into JSON format.
Sends an email to specified recipients. Requires mail server configuration in config.json.
PreloadFunctions
Preloads multiple functions to improve application loading times and performance.
Data Management
Graph database operations
DataManagement
Bundles actions for managing nodes and relations in the database.
NodeManagement
Bundles actions for managing nodes — create, delete, update, import, and read.
DeleteNode
Deletes a node from the graph database with an optional confirmation prompt.
DeleteRelation
Deletes a relation from the graph database with an optional confirmation prompt.
AppManagement
Bundles actions for managing Graphileon Apps — packages of functions and triggers.
UI Views — Data Display
Tables, trees & grids
AgGridView
A powerful grid with styling, editing, grouping, and inline editing functions.
TableView
Renders data in a table format with customisable columns and row interactions.
GridView
Displays data in a grid format with customisable columns and rows.
TreeView
Displays data in a collapsible tree format with optional checkboxes, icons, and search.
PropertiesView
Displays detailed properties of a node or relation with options for specific entities and stores.
NeighboursView
Lists neighbours of a selected node or relationship in a filterable tree format with grouping and search.
DiffView
Compares two data objects and displays the differences between them.
ContainerListView
Renders a panel-management widget that lists open containers and lets users focus or close them.
UI Views — Forms & Input
User input & editing
InputView
Creates a dynamic form based on a JSON schema, supporting a variety of input types, validations, and customisations.
SearchView
Displays a search form with customisable options and triggers.
EntityFormView
Unified form view used to create or edit both nodes and relationships.
NodeFormView
Edits properties for creating or updating nodes with predefined fields and styling options.
RelationFormView
Allows editing properties for new or existing relationships between nodes.
MarkdownEditView
Allows users to edit Markdown documents in code or WYSIWYG modes.
UI Views — Charts & Timeline
Data visualisation
ChartJsView
Renders a Chart.js chart with customisable options and data.
ChartView
Renders a Google Chart with customisable data and options.
TimelineView
Displays events in a timeline format with customisable event and group properties, markers, and visible time range.
CalendarView
Renders a calendar displaying events, with options for clicking on specific events and days.
UI Views — Maps & Geo
Spatial & geographic
LeafletMapView
Enables map rendering with multiple layers, markers, GeoJSON data, and drawing tools using Leaflet.
MapView
Displays a map with interactive markers, features, and optional address search.
ImageMapView
Displays an interactive HTML image map with zooming and panning functionality.
UI Views — Graph & Network Visualisation
Graph rendering
YFilesView
Advanced graph and network visualisation using yFiles with customisable layouts, node and relation styles, and many interaction events.
YFilesIsometricView
Renders an isometric graph visualisation using yFiles components with customisable node styles and interactions.
NetworkStylesView
Opens the styles editor, allowing users to edit styles for specific nodes or relationships.
UI Views — Layout & Content Rendering
Layout & HTML
LayoutView
Displays multiple views in a split workspace using resizable panels and tabs.
HtmlView
Generates HTML from a template and data, with optional interactive features.
MarkdownView
Renders a Markdown document with support for HTML, emoji, tables, and more.
CustomStyle
Adds global CSS style to the current dashboard.
IFC3DView
Loads IFC files and displays 3D construction designs, with functionality to interact and highlight elements.
Navigation & Diagrams
Navigation & diagrams
LoadDashboard
Loads a specified dashboard with optional bookmark and parameters.
Navigate
Navigates the browser to a specified URL.
SaveDiagram
Saves or updates a diagram in the application store, including nodes, relations, and filters.
LoadDiagram
Loads a saved diagram node created with the YFilesView Save function.
Output & File Generation
File output
PDFFile
Generates a PDF document based on a JSON definition and triggers optional download.
FileDownload
Downloads text content, such as query results or evaluated data, from Graphileon to the user’s local machine.
Console
Generates console log or error messages in the browser console for debugging purposes.
Administration
User & team management
UserManagement
Manages user actions including creation, deletion, activation, and password handling.
TeamEditView
Manages team details and members, enabling creation, updating, and deletion of teams.
PermissionEditView
Manages permissions, allowing viewing and editing of permissions granted to teams and users.
SetPasswordView
Renders a view for users to set or change their password, with visible error or success messages.
TranslateView
Displays a grid interface to manage translations for different languages and namespaces.
Universal Events
In addition to the events listed for each individual function type, all function types fire the following events:
| Event | Description |
|---|---|
functionExecuted |
Fires when the function has completed its execution actions. |
functionUpdated |
Fires when the function model was updated. |
functionClosed |
Fires when the function instance was closed. |
error |
Fires when the function encounters an error. |
Example Configurations
The following examples illustrate common patterns using Graphileon’s graph-based application syntax.
(db:IA_Dashboard)-[:SHORTCUT {name: 'start query'}]->
(q:IA_Function {type: 'Query', cypher: 'MATCH () .. RETURN ..', store: 'data'})-
[s:TRIGGER {type: 'success', #data: '(%).data'}]->
(cjs:IA_Function {type: 'ChartJsView'})
(db:IA_Dashboard)-[:START]->
(q:IA_Function {type: 'Query', cypher: 'MATCH () .. RETURN ..', store: 'data'})-
[r:TRIGGER {type: 'success', #data: '(%).data'}]->
(tv:IA_Function {type: 'TableView|GridView|AgGridView'})
(q:IA_Function {type: 'Query', cypher: 'MATCH () .. RETURN ..', store: 'data'})-
[r:TRIGGER {type: 'success', #data: '(%).data'}]->
(it:IA_Function {type: 'Iterate'})-
[r2:TRIGGER {type: 'iteration', #data: '(%).data'}]->
(em:IA_Function {type: 'Email'})-
[r3:TRIGGER {type: 'sent', $iterationNext: true, $_instance: '_previous'}]->
(it)