The scope of the audit trail plugin is to enable the Generic Workflow Execution Service (GWES) to write RFC3881-compatible audit trails, which are used within the health care sector to enhance the data privacy protection and to protocol modifications and processing of data within clinical studies.
The audit trail plugin is being developed within the PneumoGRID project. In line with the PneumoGRID project funded by the BMBF (German Federal Ministry of Education and Research), a grid-based infrastructure and services supporting diagnostics and treatment of chronic obstructive pulmonary disease (COPD) are being developed within the scope of the grant program ”IKT 2020 – Research for innovation” in the field ”Grid services for economics and science”.
The project’s main focus is on grid-based analysis of medical signal and image data for the dynamic imaging of ventilation in healthy persons and patients with COPD. For this, middleware components and grid services are being developed and expanded that meet the legal requirements on data processing for multi-centric studies and clinical applications. The project aims at creating a system that offers established and innovative imaging procedures for lung ventilation testing in clinical studies and patient care to doctors, clinical test centers and companies regardless of location in a user-friendly and inexpensive fashion. Additionally, the middleware components and generic services developed within the scope of this project shall also be used in other clinical applications and studies of various medical fields.
gwes-plugin-audit-trail-2.1.1.rc1-bin.tar.gz or gwes-plugin-audit-trail-2.1.1.rc1-bin.zip
gwes.logger.class=de.fraunhofer.first.gwes.plugin.audittrail.AuditTrailLogger
gwes.audittrail.file=${catalina.base}/logs/gwes-rfc3881-audit-trail.xmlThe GWES logs the following events together with additional information about the active user, the process and the activity:
| Event Identifier (refer to RFC3881, 5.1.1) | Event Action (refer to RFC3881, 5.1.2) |
| GET_WORKFLOW_IDS | Read/View/Print/Query |
| GET_WORKFLOW_STATUS_ARRAY | Read/View/Print/Query |
| GET_AVAILABLE_RESOURCES | Read/View/Print/Query |
| GET_RESOURCE_DESCRIPTION | Read/View/Print/Query |
| WORKFLOW_GET_WORKFLOW_DESCRIPTION | Read/View/Print/Query |
| WORKFLOW_GET_DATA | Read/View/Print/Query |
| WORKFLOW_GET_DESCRIPTION | Read/View/Print/Query |
| WORKFLOW_GET_PROPERTY | Read/View/Print/Query |
| WORKFLOW_GET_PROPERTIES | Read/View/Print/Query |
| WORKFLOW_GET_CHECKPOINTS | Read/View/Print/Query |
| WORKFLOW_GET_ACTIVITY_STATUS_ARRAY | Read/View/Print/Query |
| WORKFLOW_GET_STATUS | Read/View/Print/Query |
| WORKFLOW_GET_MODIFICATIONS_FOR_UPDATE | Read/View/Print/Query |
| WORKFLOW_WAIT_FOR_STATUS_CHANGE | Read/View/Print/Query |
| GET_CREDENTIAL | Read/View/Print/Query |
| WORKFLOW_INITIATE | Create |
| WORKFLOW_RESTART | Create |
| WORKFLOW_RESTORE | Create |
| ACTIVITY_CONSTRUCT | Create |
| ACTIVITY_INITIATE | Create |
| ACTIVITY_RESTART | Create |
| LOAD_CREDENTIAL | Create |
| WORKFLOW_START | Execute |
| ACTIVITY_START | Execute |
| WORKFLOW_SUSPEND | Update |
| WORKFLOW_RESUME | Update |
| WORKFLOW_STORE | Update |
| WORKFLOW_MODIFICATION_COMMIT | Update |
| WORKFLOW_STATUS_CHANGE | Update |
| WORKFLOW_SET_WORKFLOW_DESCRIPTION | Update |
| WORKFLOW_SET_DESCRIPTION | Update |
| WORKFLOW_SET_PROPERTY | Update |
| ACTIVITY_STATUS_CHANGE | Update |
| ACTIVITY_SUSPEND | Update |
| ACTIVITY_RESUME | Update |
| SET_LOGGER_LEVEL | Update |
| SET_CREDENTIAL | Update |
| WORKFLOW_ABORT | Delete |
| WORKFLOW_REMOVE | Delete |
| ACTIVITY_ABORT | Delete |
| ACTIVITY_CLEAN | Delete |
The GWES audit trail plugin provides additional syntax elements that are used, e.g., to identify workflows or specific activities. Here is the table of GWES-specific participant object ID type codes that extend the default code set as specified in RFC3881, 5.5.4:
| Code | Code System | Code System Name | Display Name | Original Text |
| 100 | de.fraunhofer.first.gwes | GWES | Workflow ID | Workflow ID |
| 101 | de.fraunhofer.first.gwes | GWES | Workflow Activity ID | Activity ID |
| 102 | de.fraunhofer.first.gwes | GWES | Workflow Activity Operation Name | operationName |
| 103 | de.fraunhofer.first.gwes | GWES | Workflow Activity Resource Name | resourceName |
| 104 | de.fraunhofer.first.gwes | GWES | Transition Occurrence Identifier | transitionOccurrence |
| 105 | de.fraunhofer.first.gwes | GWES | Resource Identifier | resourceUri |
| 106 | de.fraunhofer.first.gwes | GWES | Resource Class Identifier | ofClass |
| 107 | de.fraunhofer.first.gwes | GWES | Memory Level (1=memory, 2=database, 3=filesystem) | level |
Here is an example audit message as provided by the GWES audit trail plugin:
<AuditMessage>
<EventIdentification EventOutcomeIndicator="0" EventDateTime="2011-07-27T15:57:28.351+02:00" EventActionCode="E">
<EventID code="ACTIVITY_START"/>
</EventIdentification>
<ActiveParticipant UserID="hoheisel"/>
<AuditSourceIdentification AuditSourceID="http://poseidon.first.fraunhofer.de:8280/gwes">
<AuditSourceTypeCode code="3"/>
</AuditSourceIdentification>
<ParticipantObjectIdentification ParticipantObjectTypeCode="2"
ParticipantObjectID="hoheisel_377605de-4985-4b33-9b6c-afb4b81de38e">
<ParticipantObjectIDTypeCode codeSystemName="GWES" codeSystem="de.fraunhofer.first.gwes"
originalText="Workflow ID" displayName="Workflow ID" code="100"/>
</ParticipantObjectIdentification>
<ParticipantObjectIdentification ParticipantObjectTypeCode="2"
ParticipantObjectID="hoheisel_377605de-4985-4b33-9b6c-afb4b81de38e_0000000002">
<ParticipantObjectIDTypeCode codeSystemName="GWES" codeSystem="de.fraunhofer.first.gwes"
originalText="Activity ID" displayName="Workflow Activity ID" code="101"/>
</ParticipantObjectIdentification>
<ParticipantObjectIdentification ParticipantObjectTypeCode="2"
ParticipantObjectID="sort">
<ParticipantObjectIDTypeCode codeSystemName="GWES" codeSystem="de.fraunhofer.first.gwes"
originalText="operationName" displayName="Workflow Activity Operation Name" code="102"/>
</ParticipantObjectIdentification>
<ParticipantObjectIdentification ParticipantObjectTypeCode="2"
ParticipantObjectID="http://fhrg.first.fraunhofer.de:8080/linuxtoolbox/services/Sort?wsdl">
<ParticipantObjectIDTypeCode codeSystemName="GWES" codeSystem="de.fraunhofer.first.gwes"
originalText="resourceName" displayName="Workflow Activity Resource Name" code="103"/>
</ParticipantObjectIdentification>
<ParticipantObjectIdentification ParticipantObjectTypeCode="2" ParticipantObjectID="sort,i:d2,i:d4">
<ParticipantObjectIDTypeCode codeSystemName="GWES" codeSystem="de.fraunhofer.first.gwes"
originalText="transitionOccurrence" displayName="Transition Occurrence Identifier"
code="104"/>
</ParticipantObjectIdentification>
</AuditMessage>