Page History
Note |
---|
This feature is part of the ongoing effort to support more DCM features natively in the Blueriq Runtime. Its modules and behavior may change over time. Please check release notes and upgrade instructions when using it. |
The Case Engine component manages all operations on cases, case data and tasks. It communicates with the Blueriq Runtime through asynchronous messages and a REST API.
The Case Engine component is essential to use the event driven DCM architecture and depends on multiple other components to function properly.
This section explains how to install the Case Engine component, how to configure it and which other components are needed to be installed.
Installation
The Case Engine will be delivered with the runtime and can be downloaded in the artifactorycurrently is a Runtime with specific configuration. It is installed by deploying the Runtime WAR to a supported application server, see Installing Runtime. Alternatively you can also use the DCM 2.0 beta release which also includes the case engine
The Case Engine is a standalone application and should be started directly in Java using the command line:
Code Block | ||||
---|---|---|---|---|
| ||||
$ java -Dserver.port=18081 -Dspring.config.additional-location=file:///config/DCM2/CaseEngine/config -jar blueriq-dcm-case-engine-{{version}}.jar |
Dependencies
Blueriq DCM Development Installation which includes the case engine with configuration.
Dependencies
The Case Engine The case engine component depends on the following components:
- Audit component
- DCM Lists Client Components
- Timeline SQL Store component
- Trace SQL Store component
- DCM queueing RabbitMQ
- Document database MongoDB
- Customerdata service
- Process SQL store component
- Case Engine Scheduler
- Case Engine Scheduler Quartz
The bootstrap.properties
Include Page | ||||
---|---|---|---|---|
|
Code Block | ||||
---|---|---|---|---|
| ||||
spring.profiles.active=native,\ case-engine,\ customerdata-client,\ dcm-lists-publisher,\ externaldatasources,\ process-sql-store,\ timeline-event-publisher-amqp,\ trace-event-publisher-amqp,\ audit |
...
Specific for the case engine there are mutliple multiple properties that need to be set.
These properties are divided into three files:
...
: common properties that concern security, logging and the connection to the customer dataInclude Page _PropertiesFileJava _PropertiesFileJava
...
Include Page _PropertiesCaseEngine _PropertiesCaseEngine
...
- : properties for several queues,
...
- MongoDB and Quartz
: properties that enable theInclude Page _PropertiesExternalDatasources _PropertiesExternalDatasources
...
- Case Engine to communicate with the
...
- Process SQL Store
Create the files in the additional config location of the case engine and copy and paste the corresponding properties into each file.
Note |
---|
When using the DCM 2.0 beta release you don't need to create the files Blueriq DCM Development Installation this configuration is included |
Code Block | ||||
---|---|---|---|---|
| ||||
### Users ### blueriq.security.auth-providers.local01.type=in-memory blueriq.security.auth-providers.local01.users.location=users.properties blueriq.security.auth-providers-chain=local01 ### Customerdata ### blueriq.customerdata-client.url=http://localhost:30002/customerdata/api/v1/ blueriq.customerdata-client.username=blueriq blueriq.customerdata-client.password=welcome ### Exports ### blueriq.exports.description=Exports blueriq.exports.prefix=export blueriq.exports.folder=exports blueriq.exports.enabled=true ### Security settings ### blueriq.security.csrf-protection.enabled=false ### Blueriq logging ### logging#logging.level.com.aquima=DEBUG logging#logging.level.com.blueriq=DEBUG logging.file.name=logs/case-engine.log | ||||
Code Block | ||||
language | bash | title | ### Default Queue configuration, can be ommitted when overruled at specific configuration in application-case-engine.properties | blueriq.case.engine.rabbitmq.host=localhost ### blueriq.case.engine.rabbitmq.port=30010 blueriq.case.engine.rabbitmq.username=blueriq blueriq.case.engine.rabbitmq.password=welcome blueriq.case.engine.rabbitmq.virtualHost=/ blueriq.case.engine.rabbitmq.ssl.enabled=false blueriq.case.engine.rabbitmq.queueNames=dcmEventsQueue blueriq.case.engine.rabbitmq.exchangeName=dcmEvents blueriq.process.engine.v2.automatic-task.rabbitmq.default.rabbitmq.host=localhost blueriq.process.engine.v2.automatic-task.default.rabbitmq.port=30010 blueriq.process.engine.v2.automatic-task.default.rabbitmq.username=blueriqguest blueriq.process.engine.v2.automatic-taskdefault.rabbitmq.password=welcomeguest blueriq.process.engine.v2.automatic-taskdefault.rabbitmq.virtualHost=/ blueriq.process.engine.v2.automatic-taskdefault.rabbitmq.ssl.enabled=false blueriq.process.engine.v2.automatic-task.rabbitmq.exchangeName=dcmTasksEvents blueriq.process.engine.v2.process-finished.rabbitmq.host=localhost blueriq.process.engine.v2.process-finished.rabbitmq.port=30010 blueriq.process.engine.v2.process-finished.rabbitmq.username=blueriq blueriq.process.engine.v2.process-finished.rabbitmq.password=welcome blueriq.process.engine.v2.process-finished.rabbitmq.virtualHost=/ blueriq.process.engine.v2.process-finished.rabbitmq.ssl.enabled=false blueriq.process.engine.v2.process-finished.rabbitmq.exchangeName=dcmEvents blueriq.case.engine.scheduler.rabbitmq.host=localhost blueriq.case.engine.scheduler.rabbitmq.port=30010 blueriq.case.engine.scheduler.rabbitmq.username=blueriq blueriq.case.engine.scheduler.rabbitmq.password=welcome blueriq.case.engine.scheduler.rabbitmq.virtualHost=/ blueriq.case.engine.scheduler.rabbitmq.ssl.enabled=false |
Code Block | ||||
---|---|---|---|---|
| ||||
blueriq.case.engine.concurrency.concurrent-consumers=1 blueriq.case.engine.concurrency.max-concurrent-consumers=1 blueriq.case.engine.scheduler.rabbitmq.exchangeName=dcmScheduledEvents blueriq.case.engine.maintenance.rabbitmq.host=localhost blueriq.case.engine.maintenance.rabbitmq.port=30010 blueriq.case.engine.maintenance.rabbitmq.username=blueriq blueriq.case.engine.maintenance.rabbitmq.password=welcome blueriq.case.engine.maintenance.rabbitmq.virtualHost=/ blueriq.case.engine.maintenance.rabbitmq.ssl.enabled=false blueriq.case.engine.maintenance.rabbitmq.exchangeName=dcmMaintenanceEvents blueriq.case.engine.data.mongodb.host=localhost blueriq.case.engine.data.mongodb.port=30012 blueriq.case.engine.data.mongodb.database=caseEngine blueriq.locking.mongodb.host=localhost blueriq.locking.mongodb.port=30012 blueriq.locking.mongodb.database=locks spring.quartz.job-store-type=memory spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool spring.quartz.properties.org.quartz.threadPool.threadCount=2 |
For more information on concurrent consumers see Configuring RabbitMQ.
Code Block | ||||
---|---|---|---|---|
| ||||
#### Datasources H2PostgreSQL ### blueriq.datasource.process-sql-store.url=jdbc:h2postgresql:./h2db/dcm;AUTO_SERVER=TRUE//bq-postgres:5432/blueriq blueriq.datasource.process-sql-store.username=sablueriq blueriq.datasource.process-sql-store.password=welcome blueriq.datasource.process-sql-store.driverClassName=org.h2postgresql.Driver blueriq.hibernate.process-sql-store.hbm2ddl.auto=update blueriq.hibernate.process-sql-store.dialect=org.hibernate.dialect.H2Dialect blueriq.hibernate.process-sql-store.criteria.literal_handling_mode=BIND blueriq.hibernate.process-sql-store.globally_quoted_identifiers=true blueriq.hibernate.process-sql-store.globally_quoted_identifiers_skip_column_definitions=true validate |
Info | ||
---|---|---|
| ||
When using a production database, please use 'validate' instead of 'update' in combination with the supplied database scripts. |
Code Block | ||||
---|---|---|---|---|
| ||||
# queue configuration from blueriq.default.rabbitmq can be overruled
blueriq.dcm.lists-publisher.rabbitmq.exchangeName=dcmListsEvents |
Authentication
The synchronous operations are protected with basic authentication. To specify the credentials required to log in to the Case Engine, create a user in user.properties
with the case-engine
role.
...
If you are using a different authentication provider, like LDAP, you can create a user in that provider instead of users.properties
, as long as it has the proper role.
Event logging
It is possible to enable logging for events sent to the Case Engine. A line is logged when the Case Engine starts processing the event and when it is finished.
Events list
- AbortTaskService
- AbortTaskWithoutUnlocking
- AssignTask
- CompleteTask
- CreateCase
- DemuxedThrowMessageEvent
- GetCaseInfo
- GetTaskInfo
- RemoveCase
- ScheduledEvent
- StartTask
- ThrowMessage
How to enable
By default, the events are logged on INFO level. To specifically enable logging for the events only, configure the following package on INFO level:
Code Block | ||
---|---|---|
| ||
logging.level.com.blueriq.dcm.caseengine.service=INFO |
Example output
StartTask event logline:
2024-04-25 13:43:09.100 INFO c.b.d.c.c.CaseEngineRestController httpSessionId="43C5CF48C812F97E301843659A09A04A" runtimeSessionId="" userId="caseengine" projectName="" projectVersion="" currentPageName="" tenantName="" [trace=662a41cd99970f5e778c9835294b1413,span=be8f45537809ead6] - [startTask] Starting transaction - task ID: '6' case ID: '662a41c4fcab766683cab7c5'
Finishing a case
Whenever the process for a case finishes, the case will be closed. This means that the following persistent parts of a case will be removed:
- The process and its tasks and data in the process-sql-store
- The case and its manual tasks in the DCM Lists Service's MongoDB database
- The case document in MongoDB
- Any remaining entries in the scheduler database
- The case aggregate and the case data aggregate
We are aware that it may not be desirable to remove the aggregates, for example if your process doesn't have steps for archival. Therefore, we introduced a property to control this behavior:
Code Block | ||||
---|---|---|---|---|
| ||||
blueriq.case.engine.data.general.remove-aggregates-on-case-close = false |
The default value for this property is true
.