Developers build most applications using a common design pattern. That pattern can be object-based, object-oriented, component-based, modular, etc. Some patterns exist. FlowWright helps developers by using a layered approach where modules are separated into components, and components are broken down into objects using a complete object-oriented design.
FlowWright's object model comprises several objects that are related in various ways to other objects. The following diagram illustrates the object hierarchy and the relationships among objects.

As you can see from the above mind map, FlowWright has a comprehensive object model to support broad and intuitive functionality. It offers extensive features, which you can read about on the features page.
All FlowWright objects can be accessed through the FlowWright .NET API or a REST API that uses the .NET API. The API is split into high-level and low-level APIs. The high-level API provides access to most objects, while the low-level API relates to the engine and workflow model.
The high-level API is organised around parent and child objects. Internal child objects can be accessed through the parent objects. For example, the deWorkflowDefinition object cannot be retrieved directly from the API or created on its own. Instead, you must create the parent object deDesign first, and then retrieve the deWorkflowDefinition using the deDesign parent object.
In contrast, the low-level API handles the workflow engine and model. FlowWright's engine can operate in two different modes:
- background mode by default.
- using the real-time mode, where a workflow can be executed instantly in memory using the engine (similar to a workflow instance being executed in the background by the engine service).
The low-level API also includes the workflow modeling API: using this low-level API, you can access every part of a workflow definition or instance. Although workflow definitions and instances are represented and stored as XML documents, the low-level object model provides a clear, object-oriented way to access the model's objects.