Reporting

Goozzee offers the possibility to design, generate and print reports, constituted of collections of topics. For example, if you keep a list of your contacts inside Goozzee, you can generate a report showing each contact, with the company he works for, his telephone number, email address and so on... And if you designed your topic map cleverly, you could even create various reports showing these contacts sorted in multiple ways (by company, by contact name, ....).

A report appears as a regular document, among the documents list of a topic. Which means that it can be attached to multiple topics simultaneously, it can be assigned access rights, and it can be inherited from classes to instances. What makes it different from any other document is its extension .GoozzeeReport. This extension tells Goozzee to process it as a special kind of document.

Behind the scene, a report is a little text file that describes the contents and layout of that report. The final output is generated dynamically when you double-click on the report to open it. So that you don't need to care about updating a report : when you open it, it will always contain the very latest data from your topic map.

This is a pretty powerful feature. But since it was recently added, it's still a bit rough, and should improve over time. For now, there is one main restriction : it strictly relies on the constraints you defined inside you topic map. (see previous section about ontologies).

To help explain this feature, I will illustrate this section using examples based on the Italian Opera topic map. In order to be able to create reports from that topic map, you will have to create a few constraints on the existing association types :

Association Type Member 1 Role 1 Member 2 Role 2
Aria in Opera
Aria
Aria
Opera
Opera
Sung By
Character
Character
Aria
Aria
Character in Opera
Character
Character
Opera
Opera

To create a new report, choose the 'Create a report' item from the File menu. As said previously, reports strictly rely on the constraints you created in you topic map. This implies that this menu item will only be available when your current topic is a class topic. Otherwise, the menu item will be greyed-out. Note that the report you are creating will be attached to your current topic.

a) Designing the hierarchy of sections

A report description is a hierarchy of sections and subsections. For example, say we are going to create a report showing, for each opera of our topic map, the list of arias, and for each of these aria, the list of characters who take part in singing this aria. In this case, we will create the report inside the Opera topic (i.e. the class containing all the operas), and the report's sections hierarchy will look like this :

    Opera
        Instance
            Aria
                Character

Note that the top element of the hierarchy is the current topic (the Opera topic). When generating the report using this report description, Goozzee will first iterate on each instance of the Opera class; for each opera instance it finds, it will look for the arias that are associated with it. And for each aria, it will read all the characters associated with it.

Pretty simple.

Reporting 1

This is the Report Edition window.

Creating the sections hierarchy is done on the left hand tree view. At open time, it only contains the current topic (in our case, the Opera topic). Right-clicking on this item, a contextual menu will propose all the subsections you are allowed to create. The possible values are :
  • 'instance' : in the generated report, this will create a section for each instance of the selected topic. In our example, it will create a section for each opera contained in the Opera class.
  • the subclasses of the selection : here, the menu displays the list of all the subclasses it finds for the selected topic. In our example, nothing is shown since the Opera class contains only instances, no subclasses.
  • the list of classes with which it has constraints. For our example, we had initially created a few constraints, between Opera and Character, Opera and Aria... So, the contextual menu will propose to create some Character and Aria subsections.
There is no theoretical limit on the depth of your report hierarchy - although it was never tested with very deep ones. Goozzee won't restrain you from creating complex reports. It will only prevent the creation of duplicate sections.

You can play in many ways with the hierarchy of your reports. For example, with the very few constraints we created in the Italian Opera topic map, we could already create multiple different reports, such as :
Herarchy Type Report
Opera
     Instance
          Aria
          Character
List of operas with, for each of them, a list of the arias, followed by a list of the characters
Opera
     Instance
          Character
          Aria
List of operas with, for each of them, a list of the characters, followed by a list of the arias (which shows the importance of the order of your sections, compared to the preceding row)
Aria
     Instance
          Opera
               Character
List of the arias stored in yout topic map with, for each of them, the opera it belongs too, and the list of all the characters of the opera.
Aria
     Instance
          Opera
          Character
List of the arias with, for each of them, the opera it belongs to, and the list of the characters who sing it.


Generating the final report is simply done by double-clicking on it, in the list of documents. After some time – usually a few seconds, but it depends on the size of your topic map and the complexity of your report – an editor window will appear showing the generated report.
Note that security rules and scopes apply to the generated text : the report will only show :
  • the topics you are allowed to read
  • the topics belonging to your browsing scope.
At this point, the text and layout can still be modified. But it cannot be saved, in order to avoid having multiple versions of a report saved here and there. Preventing people from saving reports helps ensuring that Goozzee remains your documentation reference. Of course, you can still copy and paste the generated text into some other program, but beware that copy/paste won't preserve the report's formatting.
The main purpose of a report is to be printed. For this, the Print menu allows you to print, or preview the generated text.