Overview
The Data-Index subsystem maintains a real-time view of process instances by efficiently processing events from the process engine and storing them in an optimized format for querying. This provides a comprehensive view of active processes without impacting the performance of the process execution engine.
The system consists of three main components:
- Transport: The medium used to transfer events between the runtime and the Data-Index service. In the Adaptive Process Architecture, this is in-vm transport.
- Storage: The persistence tier of the Data-Index component, typically using the same database as the rest of the application.
- Data-Index: The main component responsible for creating/updating the Data-Index, and for providing query capabilities.
Key Features
Real-Time Process Visibility
The Data-Index receives incremental state change events from the Orchestration Engine and efficiently computes the current state by integrating these changes with existing contextual data. This provides an up-to-date view of all process instances without the need for complex synchronization mechanisms.GraphQL Querying Capabilities
The Data-Index exposes powerful GraphQL interfaces that allow both systems and users to query process data using flexible, domain-specific queries. This enables:- Advanced filtering and sorting
- Relationship traversal across process instances
- Selection of specific process attributes
- Complex conditional queries
Dashboarding Support
The Data-Index serves as the foundation for process monitoring dashboards, providing the necessary data access layer to:- Track KPIs and business metrics
- Monitor process throughput
- Identify bottlenecks
- Visualize process flows
Low-Impact Monitoring
By maintaining a separate query-optimized data store, the Data-Index allows comprehensive monitoring and analysis without impacting the performance of the process execution engine.Using GraphQL with Data-Index
The Data-Index supports GraphQL queries through the following endpoint:Example Queries
Retrieve All Process Instances
Find Process Instances by State
Retrieve Process Variables
Adding Data-Index to Your Project
The Data-Index capability can be added to your project by including the following dependency:Configuration
The Data-Index automatically uses the same data source as your main application, which simplifies configuration and deployment. The most important configuration properties for the Data-Index are:Best Practices
Optimizing Queries
- Limit result sets using pagination for large data volumes
- Select only the fields you need to reduce response size
- Use appropriate indexing on the database for frequently queried fields
- Consider caching for repeated identical queries
Integration with Monitoring Tools
- Use the GraphQL API to feed data to your monitoring dashboards
- Setup alerts based on process KPIs
- Implement automatic reporting for key business metrics
Performance Considerations
- The Data-Index adds some overhead to process execution due to event processing
- For extremely high-throughput scenarios, consider making the Data-Index optional
- Monitor the size of your Data-Index database and implement appropriate retention policies