you are not logged in


User login

Reporting in Mixed

Reporting EJB


Reporting in Mixed will be delegated to a Reporting EJB.


The Reporter reports user related events in the Mixed-Orchestration.

These events/message are something like “Starting conversion job…..” , or “Fetched x Plugins for Conversion……”, or “Source file:…..” etc.

After a Conversion-Job has finished, a report screen will appear, filled with all the ReportEntries belonging to the Conversion-Job (or Batch, if a Conversion-Batch was started). Also, at any time, Jobs- or Batch Reports can be retrieved on a different screen in the Mixed-Web-Console.


The Reporter class is the interface implemented by the ReporterBean which actualy handles the report-requests. The ReportPersister listens to a specific jms-queue which is filled with messages by the ReporterBean.

A report-request will create a ReportEntry. This ReportEntry will be persisted to the database. We use JPA in combination with Hibernate and/or Toplink, depending on the ApplicationServer in which Mixed is running (Jboss/Hibernate, Glassfish/Toplink). We use two different ORM’s, because of the same reason we use two different ApplicationServers: We want Mixed to be independent on choices like which app-server, ORM etc. By using different implementations in our environments (development/test), we are sure of this independency of Mixed and solve issues concerning these (in)dependencies.

The ReportEntry consists out of:

  1. message: the actually message to report.
  2. source of the message: who/what initiated the report.
  3. username: which user is running the MixedFramework/Conversion.
  4. date/time: Timestamp of report.
  5. Job: A report can originate from a Mixed-Conversion-Job (optional).
  6. ProvenanceMetadata: The provenance metadata for the Mixed-Conversion-Job (optional).



Technical notes:

    • We would really like to use LAZY fetching of jobs, batches and report entries. For this to work, the ReporterBean must be stateful and use an EXTENDED entity manager (otherwise the entitymanager is gone when exiting this bean and the view rendered). But lazy fetching on TopLink doesn't work for Remote interfaces (which are the default in mixed) because it can't use its ORM proxy objects within serialized objects (TopLink error 7242). Hibernate works OK. - so we use EAGER fetching in both Batch and Job implementations, note that this mandates the use of a Set (instead of an OrderedCollection) for the Job children of Batch in Hibernate, which can't eagerly fetch both Jobs and Job's ReportEntry children when both are a list. Sort the set of Jobs by hand before returning them.


The Service called “plugin-reporter-service” logs plugin actions and services requests to get a list of active converter-plugins on a specific date.

When a converter plugin is plugged-in or plugged-out of the Mixed Framework, PluginReporterService reports this action. This reporting is not saved in the database, instead it is directed to a mixed-log file.

 For reporting purpose, the service can also return a list of ConverterPlugins which where active on a specific date/time.