Developing in Genus
Developing in Genus
Genus is the ultimate low-code platform to build modern enterprise software. Focusing directly on business outcomes rather than on technology and language syntax, Genus empowers you as a Business Engineer to make a difference. Genus enables non-programmers to design, build and maintain advanced enterprise applications from a business perspective at up to ten times the speed of traditional software development.
The application model is the model that describes your application, allowing the Genus software to run with your carefully specified data structure, user interfaces and business logic.
Introducing functional changes to your application only affects the application model, meaning that no software installation or altering is necessary to change the features of your system. Simply deploy your changes directly from Genus Studio, and Genus will automatically access the updated application model from the database next time you run your application.
Genus is a visual and model-driven development platform, enabling talent with little or no programming expertise to create and deploy professional enterprise applications. Genus Studio is a low-code IDE (Integrated Development Environment) providing an extensive visual library of configurable items to specify and maintain your application model.
The development of an application model in Genus can be divided into four aspects: defining the data model, building the business and application logic, creating the user interfaces and connecting your application to other systems, data sources and applications. As you can easily deploy, run, and test your applications, we recommend an iterative work process, adding layer by layer of functionality to your application.
The data model in Genus is a description of your business data objects, their attributes, and how they relate to each other. Your data model can be developed from two perspectives. Either it is designed from scratch, or it may be reversed engineered based on existing data structures in your system portfolio. Usually, a combination of the two is the best way to go. Especially if you wish to integrate your existing core systems with your new Genus application.
Your Genus environment sits directly on top of a Relational Database Management System (RDBMS), such as Microsoft SQL Server, Oracle, or MySQL. You may draft your entire data model directly in Genus Studio and generate the appropriate scripts to establish the structure in your RDBMS.
The data model consists of Object Classes, representing the entities in your application. Genus Studio allows you to enrich your data model with Object Class relations, connections, data types and interpretations, data formats, rules and validations, data integrity, security, search properties, naming, symbols, and more. The configurations you do on an Object Class and property level will be reflected throughout your application – wherever you choose to access your data model.
Business and application logic
Once the data model is in place, the Object Classes can be used to configure Actions. Actions are logical snippets that allow for different kinds of data manipulation. Actions are designed and developed in Genus Studio through configurable drag and drop effects. When building Actions, you combine the desired Object Classes as Data Sources (global or local) with logical effects such as read, create, modify, open, export, import, sort etc.
All effects are structured in blocks. You create the desired flow of effects by using scopes, decisions (if/else), enumerators (for each) and while loops. Scopes encapsulate depending effects and control when the data is manipulated. This enables you to ensure consistency in the data, as the data manipulation is performed in a single transaction where either all or no data is manipulated.
When working with Actions, Genus provides updated flow charts that will help you understand how the implemented algorithms work and will also help you detect logical errors. This gives you the same, or better, control of the logical expressions and flow as a programmer would have had. Actions can be used in Agents, Web Services, Rules, or other Actions to define an execution sequence.
What you build in Genus Studio can generally be accessed in multiple contexts and be reused. This also applies to business logic, meaning that an Action can be used in several distinct settings.
Genus Expression Language (GX)
Genus Expression Language (GX) is a pure functional query language. This allows the Business Engineer to easily configure advanced expressions for calculations, filters, conditions, data validations and conditional formatting.
GX includes a library of functions with built-in data types (e.g. int, string, etc.), function libraries (e.g. CheckSum, Regex, etc.), model types (e.g. Account, DataSet, etc.), and app model types (e.g. Object Class, Schema).
The GX editor has context-based autocomplete functionality with syntax and error highlighting.
During the execution of an action, errors may occur that could result in a disruption in the execution flow. To control the action’s behavior in the case of errors, exception handlers can be added to handle error situations in a controlled manner. Exception handlers are special steps which are dedicated to resolving error situations, and they are only executed if an error occurs.
Genus enables two types of end-user clients:
- Genus Web: A comprehensive web application client with support for progressive web apps (PWA), following modern design principles.
- Genus Desktop: A native (installed) Microsoft Windows client providing a familiar Windows interface.
Genus Studio includes a visual drag-and-drop development environment for designing user interfaces for both targets.
Genus Web makes it possible to design advanced web applications for end-users, with rich client-side functionality to support all business processes, functions, and roles.
With Genus Web, you can build one or more Apps that are accessible through a Start Page or directly through an URL. The Start Page (built-in construct in Genus Web) provides an overview of all apps, dashboards, and other functionality that the end-user has access to.
An App consists of one or more pages and dashboards, structured in a site map. This makes it possible to use Genus Web for more advanced applications such as case management, and more simple forms such as data registration or simple access to information.
The first step in creating an application with Genus Web is to define a Module. Modules allow you to organize and separate the functionality of your larger application model into smaller functional parts.
A Module contains the data sources, pages, and client actions that will be included in the application. Only the data sources included in the Module can be modified by the user. You will then design Pages and define Client Actions to create the user interface for the end-users.
Modules are interchangeable and can be used for assembly of apps of differing size, complexity, or function. Pages and components within a module can be defined as public or private. Public pages and components can be reused in other modules. Additionally, all public pages can be reached from the sitemap within an app.
A Page is the user interface part of a Module. Three different types of Pages can be created: Form, View and Canvas.
- Form: A Form is a Page with a single master data source. The Form presents data in a schematic layout and is typically used for presenting and editing one object and any related objects. A form can be used as a default presentation for single instances of an Object Class.
- View: A View is a Page with a master data source collection presented in a tabular format. The View is used for searching and presenting multiple objects. A View can be used as a default presentation of a collection of objects for an Object Class.
- Canvas: A Canvas is a Page tailored to present user interfaces with multiple objects of equal importance. A Canvas is an ideal construction for standalone layouts where no object is the main or leading context.
A Page always belongs to a Module, and the data available for Pages is limited to the Data Sources made available through the Page’s Module.
A Component is an assembly of UI controls that can be reused in Pages within the same Module, and also in other Modules. Components can be of the three same types as a Page: Form, View or Canvas. The Components must be placed inside other Pages or other Components.
A Client Action is a sequence of effects initiated by an event in the user interface, such as a click on a button. These effects support common tasks such as create, read, update and delete (CRUD) operations for objects, navigation between pages and dashboards, displaying messages and notifications, uploading- and downloading files, and executing other Client- and Server Actions.
Block constructs such as decisions, for-each loops, and catch exception provide functionality for conditional execution, enumeration of objects, and handling of exceptions.
Genus Desktop is an installed software on your Microsoft Windows computer. The user interface consists of a navigation pane, tables and forms for data interaction, and ribbons to execute events and business logic.
The Navigation Pane is the left side menu in Genus Desktop. The setup of the Navigation Pane has a tree structure consisting of View Buttons, Groups, Folders, and Shortcuts. Shortcuts can point to tables, forms, actions, dashboards, and reports. The Navigation Pane is governed by a security configuration, so you can define what different end-users will see when opening the desktop client.
A Form allows the user to enter or modify data in your app. A Form presents your data in various, highly customizable, formats using a range of controls such as text edits, number edits, labels, combo box edits, buttons, tables, charts, graphs, and more. The layout is easily customizable with container controls such as groups, group boxes and tab sheets.
A Table presents bound data in a tabular format, where the columns represent data fields and rows represent objects. Numerous data management and layout customization features are supported.
By designing different views of your Table, you can offer users several ways to see the data. For example, you might create a special view that is optimized for printing, or a high-level summary view to eliminate some of the details in a complex table.
Tables can also be embedded in forms to enable rich table functionality when designing forms.
The Ribbon is a command bar that organizes the features of an application into a series of tabs at the top of the application window. It allows users to quickly browse and understand the available commands, and find the command needed for completing a task in very few clicks. The combination of symbols and text simplifies recognition of commands.
The ribbon is customized for each Form and Table. This flexibility allows a clean and minimalistic design, where key commands are highlighted, and unused commands can be removed.
While Genus Web is a relatively new part of the Genus Platform, Genus Desktop has been on the market for more than 20 years. Naturally, Genus Desktop has some functionality that is not yet available in Genus Web, such as Multidimensional Tables.
To ensure that you can utilize the full potential of Genus in Genus Web, the Hybrid Web technology has been introduced. This allows end-users to open user interfaces in Genus Desktop directly from Genus Web with data context input.
Integration is essential when building advanced enterprise solutions. Your company data will naturally be owned and maintained in separate systems and should be accessed from where they originated to avoid duplicated data. Further, you will want to exchange data with customers, partners, governments, and third-party services.
Genus can integrate with external services and applications on several levels. Our platform provides built-in web service options, dedicated actions for file import/export, and supports database integrations through views or ETL-procedures.
Both REST and SOAP services can be modelled and maintained in Genus Studio. Genus supports both consumption and exposure of data through these standards.
Genus modelled web services provide lightweight, data-centric access to resources in the application model. The web services are made up of a sequence of effects that perform the desired actions to send, receive, create or modify data based on the request.
REST services support all CRUD4-operations, using standard HTTP-verbs (e.g. POST, GET, PUT, DELETE, PATCH). The REST service definition may be exposed using the OpenAPI Specification (Swagger). The specification may be represented in JSON or YAML, while request/response data elements may be in JSON or XML. Content of type “multipart/form-data” when consuming REST services is also supported.
The SOAP Service definitions will automatically be generated based on the application model and can be exposed using the Web Services Description Language (WSDL).
Web service authentication is managed through the security model in Genus Studio, effectively securing your company data while opening for integrations.
Although most modern integrations are service-oriented, Genus also supports traditional techniques for batch file import and export. File-integrations can be tailored in the Task and Action tools, giving the Business Engineer full flexibility to define file formats, targets, and sources, and to include more advanced logic.
If you wish to integrate on a database-level, we recommend using a suitable script or ETL-tools for your database platform.
Calendars and contact lists can be configured in your application model and shared by a URI. Your users may subscribe to calendars by adding a subscription in their mobile device, in Microsoft Outlook, or similar. Calendar sharing is based on the Webcal scheme for accessing iCalendar files. Calendars are shared read-only, but each shared item contains a link, so your user can open your Genus app and inspect or edit the calendar item. Contact sharing is based on a read-only CardDAV service. Both integrations are available through the Genus Start Page on Genus Web.
Genus comes with built-in Business Intelligence features that connect directly with your data model. Genus Dashboard is a data discovery tool using a Data Mart to present data and connections, allowing users to instantly filter, explore and analyze the data in your applications. Genus Analysis is an easy-to-use reporting tool suitable for recurring reports like monthly revenue.
A Data Mart contains a subset of your data model, both in terms of objects and filtering. Data Marts will pre-load server side to enable easy and responsive presentation, navigation, drilling, and discovery of data.
Dashboards present data and connections from Data Marts in an associative and intuitive manner. Various controls for visualization are available, like lists, fields, grids, charts, tab sheets, and groups.
The Dashboards automatically refine all data sources based on selections made by the end-user. Grouping, joining, and calculations are performed on-the-fly using high-performance, in-memory technologies.
Dashboards can be published to both Genus Desktop and Genus Web, and they offer great flexibility when it comes to the end user’s freedom to change, explore, and share the visualization of data.
Analysis is a Genus Desktop tool for advanced reporting, allowing you to build complex analytical queries with rapid execution time. The tool allows you to build reports where data values are grouped and aggregated across two axes (horizontal and vertical).
Analysis is used for Business Intelligence purposes, such as sales revenue by products and/or departments, or by associated costs and incomes. The output can be merged into documents or email templates and may even be opened directly in Microsoft Excel using the built-in Microsoft Office integration.
Secure your data first, then your functionality!
We believe that security and access control should encourage smart application design rather than just being a necessity. Therefore, Genus comes with the most comprehensive security functionality of any low-code platform and provides full flexibility in the design of the security model.
The dynamic security model in Genus allows for access control down to Object Class and Property level, removing the risk of unintentional data exposure. Combined with options of conditional security based on your data, Genus puts you in charge to facilitate a smart and dynamic setup for data access.
Users, authentication, and identity providers
The application model contains users that are mapped to one or more ID-providers. This setup provides multiple ways to authenticate a user. You can manage the available identity providers in Genus Studio. Two-factor authentication is also available for the identity providers that offer this.
Genus supports multiple identity providers, as described in Identity and Access Management (IAM).
Account profiles describe the account policies for users, and optionally a description on how to associate a user with a business object, such as an employee or a customer.
When an account profile is mapped to an Object Class, it is possible to use this information in conditions in the application. For instance, a user’s access to a specific object can be granted or denied based on whether she is assigned to this object in the data.
Security groups are used to grant permissions and privileges to users. A security group can also be a member of another security group and inherit permissions and privileges from it.
Data sets are used to separate the data storage between different business entities or “tenants” (e.g. companies within an enterprise) using the same application model, preventing access to each other’s data. Data set access is granted to security groups.
Privileges define the type of operations and actions members of a security group can perform in the Genus platform. Examples of privileges that can be granted include Sign in as a Desktop user, Open Genus Studio, and Manage users.
Permissions regulate the user access to an object. These are granted on a CRUD basis to either individual users or security groups. Permissions can be granted to all objects of a given type, to individual objects, and to object properties.
API-keys can be generated for users to allow other systems and applications to access APIs defined in Genus. A user can have multiple API-keys. The goal of API-keys is to provide an access key that can be used to consume model exposed APIs such as a REST or SOAP service.
API-keys cannot be used to login to the Genus Desktop or Genus Web client.
Grant matrix is a tool to check the security settings for users or security groups. Through the grant matrix, you can check and verify permissions and privileges for users and security groups.
For more information about security, see the Security section in Platform Architecture.
Genus protects you from creating and deploying corrupt or invalid logic and ensures consistency in your model. However, this does not mean that it is not possible to encounter situations where the logic executes incorrectly or does not produce the expected result.
When you build applications with Genus, you can use the built-in reference finder to locate all instances where an Object Class, property, action, or UI element has been used within the application model. This makes it easier to locate issues related to these elements.
However, in some cases, it is necessary to follow the execution flow, state, and content of objects and properties to understand and locate errors or unwanted behavior in the application model. The Genus platform offers several tools to help you in your investigation, such as Genus Trace Log, Data Set Inspector, Action Debugger, and Expression Editor.
Genus Trace Log
Genus Trace Log is a built-in tool for real-time monitoring of important application events. The web-based tool monitors both server- and client-side events to provide comprehensive information about communication and requests, errors and faults, runtime changes and states, and actual data queries to the database. The tool is used both for debugging, monitoring of execution and performance optimization during application development.
Genus Trace Log monitors both server-side services and client-side communication and events for both Genus Web and Genus Desktop. To get access to monitor events, a user must have the privilege Monitor Trace Log.
Developer tools in Genus Web
Genus comes with three tools for inspecting a Genus Web application and its data and actions. Data Sets Inspector, Action Debugger and Expression Editor.
The Data Sets Inspector lets you inspect the content and state of objects on the current page. This enables you to see if values are changed, objects are deleted or committed, or if the desired objects are available in the data set.
The Action Debugger allows for tracing the flow of a Client Action. You can set breakpoints and execute the effects in a Client Action step-by-step. Combined with the Data Sets Inspector and/or Expression Editor it allows for detailed analyzes of the executed effects and how these manipulate the Data Sets.
The Expression Editor lets you write advanced and detailed expressions using the Genus Expression Language (GX) to explore even more details on data in the Page.
Natural language support
Genus currently supports English (US) and Norwegian as languages for the built-in platform constructs (mechanical constructs). This applies to all platform constructs, such as built-in menus, windows, and Genus Studio. However, the platform is designed to be translated and can be made available in other languages upon customer demand.
The “model language” is the language used in the modelled constructs in the applications. This includes labels, Object Classes and their properties, actions, tables, navigation panes, and more.
For Genus Web, you can select a Translation Key for labels and other visible elements in the user interface. The Translation Keys are maintained in the built-in Translation Tool, where available languages and their corresponding translations are configured.
This enables reusability on translated phrases, as the same translation can be used throughout the solution. If a Translation Key is missing a translation for the selected language, the platform defaults to the standard language for the application model.
For Genus Desktop and the data model itself, all translatable concepts are available for translation in a generic dictionary. This dictionary supports export of a standard translation file that can be used in third-party translation tools and imported into the system again.
There is no built-in support in Genus for translation of the data in your applications, but web service calls may be added to utilize automatic translation tools like Google Translate or similar.
Cloud Computing, Machine Learning (ML), Artificial Intelligence (AI), Internet of Things (IoT), Big Data, and Robotic Process Automation (RPA). These are a handful of the emerging technologies recognized not only by buzzwords and acronyms but also by endless opportunities. A multitude of hubs, tools, and protocols for connecting devices, data and users are available via different vendors and platforms, and the capabilities and possibilities are increasing progressively.
Our strategy is to embrace cutting edge technologies by enabling easy and secure integration. Rather than offering a limited set of predefined services, Genus fully supports common interfaces used to connect and exchange data and is not limited to specific providers, data structures or use cases. To set up a connection, you simply define the desired logic and data structure in Genus Studio.