Skip to content

Architecture

Marcin Hewelt edited this page Aug 23, 2018 · 1 revision

Architecture Overview

This section gives an overview over the backend code and its package structure. It should provide a starting point for exploring the Chimera code. An overview of the architecture prior to release 1.3 can be found here

de.hpi.bpt.chimera.model

This package provides the object structure for case models.

de.hpi.bpt.chimera.persistencemanager

The Persistence Manager is responsible for saving Case Models and Cases into the database. More information about the new persistence layer implemented with JPA 2 and EclipseLink can be found here.

de.hpi.bpt.chimera.parser

Responsible for de-serializing case models sent from Gryphon case modeler. Case models are specified using JSON, containing XML strings to represent fragments. For the exact specification of the input format, see the Gryphon developer documentation.

  • The de.hpi.bpt.chimera.parser package contains JSON wrapper classes for the deserialization of case model data.
  • The de.hpi.bpt.chimera.parser.fragment package contains parser classes for retrieving information from the given data to parse a fragment.
  • The de.hpi.bpt.chimera.parser.fragment.bpmn package contains classes to parse the XML wrapper classes in a useful object struture.
  • The de.hpi.bpt.chimera.parser.fragment.bpmn.unmarshaller.xml package contains XML wrapper classes for the deserialization of the fragments and their BPMN elements
  • The de.hpi.bpt.chimera.validation package is used to perform different checks on a case model. This includes:
    • Checking names to prevent SQL injection
    • Checking, that all data objects used in fragments belong to a data class defined in the case model
    • Validating that activities only perform such data object transitions that are conformant with the object lifecycle (OLC)

de.hpi.bpt.chimera.execution

This package handles the execution of cases. More information can be found on a separate page ExecutingCases.

  • package de.hpi.bpt.chimera.execution.controlnodes defines classes in form of an instance for the runtime representation for the objects of model elements, e.g. gateway, activity, event. It provides the ControlNodeInstanceFactory that instatiates control nodes from a case model. ActivityInstance represents an activity at runtime.

  • package de.hpi.bpt.chimera.execution.controlnodes.event.eventhandling implements the integration with the event handling platform Unicorn. See section Event Integration.

  • package de.hpi.bpt.chimera.execution.data contains the data manager a logic unit for every case executioner for managing data objects during the case execution. It creates and locks data objects and checks the termination condition.

de.hpi.bpt.chimera.rest

Defines the REST interface (created with Jersey). The REST interface is documented with swagger. An interactive documentation is available in the deployed system at https://bpt-lab.org/ChimeraDev/swagger.

  • Case Model Deployment

  • Case Instantiation

  • Begin Activity Instance

  • Terminate Activity Instance

de.hpi.bpt.chimera.history

Provides classes and a REST interface for logging and retrieving the steps of the case execution. Chimera logs a) state changes of activity instances, b) state changes of data objects, and c) value changes of data attributes (TODO: state changes of events). The log can be exported in XES data format.

de.hpi.bpt.chimera.util

Different utility methods for converting data structures to JSON/XML, and for operations needed for computing input and output sets in fragments. Contains also the PropertyLoader to read properties from the configuration file.

de.hpi.bpt.chimera.configuration

This package provides a REST interface for configuring E-Mail-Tasks (email address and message body).

Frontend

Cases are executed via the frontend which shows an overview of enabled and running tasks. It is based on AngularJS.