The DCM-Foundation consists of the following projects, dashboards and internal libraries:
External Libraries + Internal Library: BlueriqDocumentModelling
The external libraries are imported from the BlueriqCompleteLibraries package, and are necessary for modelling the basic interaction with the Blueriq Runtime.
Internal Library: Globals
The Globals library contain process-types (globals) which can be similar for all Case-Types, and are used in the process module for each Case-Type.
Internal Libary: Basis_ZaakMetadata
This internal library shares the "ZaakMetadata" or Case Metadata definition. This is an aggregate definition where the properties are stored which are relevant for various Case-Types. This definition could hold attributes like "Phase", "Status" or "Deadlines". This is modelled in the form of an aggregate definition. In all interaction models, this definition can be used to either determine the values of this metadata field for the specific case, or to use the metadata "labels" for searching on active cases (DCM_CaseSearch) or requesting lists (for example the DCM_WorkList or DCM_CaseList).
Internal Library: ZaakType_A_Interface
This library contains the Webservice REST interface to communicate with the Case-Type. This library could be shared with other Blueriq models when you want to call the BAARS to the Case-Type. It is also used by the Case-Type to consume the Webservice, by having a data-mapping to the service implementation module.
Dashboards: Foundation
This is the model used in the DCM-Dashoard application. There is one dashboard model for all Case-Types (with possibly different pages for each Case-Type).
At this moment, there is no way to actively reload this model from Encore to the Dashboarding Service. Make sure when altered, to update the export on the server and restart the DCM-Dashboarding-service.
Project Main_Dashboard
Main_Dashboard exists for all user-interaction that is not bound to a single Case-Type. Widgets for Caselists, and selecting the start of a new CaseType are modelled in this project. It uses the Metadata to retrieve and filter on generic properties of Case-Types.
Project ZaakType_A
This is the implementation of a Case-Type. It uses all that is needed to model the user interaction with a case, and also the case properties itself. It uses the Basis_ZaakMetadata library to set all necessary metadata fields for this Case-Type, and also uses the interaction libraries from the BlueriqCompleteLibraries.
Using the Foundation in different repositories
To make sharing easier, all projects are maintained in a single repository. For demo purposes it is convenient to just keep every model in one repository. When you start using the DCM Foundation to actually create your solution, please consider how the models should be maintained. You could start by splitting the projects into two repositories:
- DCM-Main_Dashboard containing all models which are deployed once for all Case-Types. This repository could consist of the Main_Dashboard project, the Dashboards project (there is one dashboard for all Case-Types), Globals libary and Basis_ZaakMetadata internal library.
- Case-Type_XXX containing an actual Case-Type. This model includes the Case-Type itself, and the Basis_ZaakMetadata as an external library. Together with an include of the Globals (external) library. You could duplicate this repository for each new Case-Type that needs to be added.