Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Include Page_DcmArchitectureBetaLabel_DcmArchitectureBetaLabelThe Case Engine 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 currently 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 use the DCM 2.0 beta installation Blueriq DCM Development Installation which includes the case engine with configuration.

...

These properties are divided into three files:

  • Include Page
    _PropertiesFileJava
    _PropertiesFileJava
    : common properties that concern security, logging and the connection to the customer data
  • Include Page
    _PropertiesCaseEngine
    _PropertiesCaseEngine
    : properties for several queues, MongoDB and Quartz
  • Include Page
    _PropertiesExternalDatasources
    _PropertiesExternalDatasources
    : properties that enable the 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 installation Blueriq DCM Development Installation this configuration is included

Code Block
languagebash
titleapplication.properties
### 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.level.com.aquima=DEBUG
#logging.level.com.blueriq=DEBUG
logging.file.name=logs/case-engine.log

### Default Queue configuration, can be ommitted when overruled at  
Code Block
languagebash
title
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. ###
blueriq.default.rabbitmq.host=localhost
blueriq.process.engine.v2.automatic-taskdefault.rabbitmq.port=30010
blueriq.process.engine.v2.automatic-taskdefault.rabbitmq.username=blueriqguest
blueriq.process.engine.v2.automatic-task.default.rabbitmq.password=welcomeguest
blueriq.process.engine.v2.automatic-task.default.rabbitmq.virtualHost=/
blueriq.process.engine.v2.automatic-taskdefault.rabbitmq.ssl.enabled=false
Code Block
languagebash
titleapplication-case-engine.properties

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
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.concurrency.concurrent-consumers=1
blueriq.case.engine.concurrency.max-concurrent-consumers=1

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

...

Code Block
languagebash
titleapplication-external-datasources.properties
#### 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
titlehbm2ddl.auto

When using a production database, please use 'validate' instead of 'update' in combination with the supplied database scripts.

Code Block
languagebash
titleapplication-dcm-lists-publisher.properties
# 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
titleapplication(-case-engine).properties
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
languagepowershell
titleapplication-case-engine.properties
blueriq.case.engine.data.general.remove-aggregates-on-case-close = false

The default value for this property is true.