FAQ
From Informer 4 Wiki
What is the latest version of Informer?
The latest version is Informer 4.2.9
What will be fixed in the next version?
The next version of Informer will be version 4.3. Fixes TBA.
How do I set up Informer to use an https:// (SSL) connection?
There are two parts to setting up Informer to use SSL. The first is setting up your certificate and importing it into the java virtual machine. You may find that documentation here:
http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
You may ignore the configuring jetty xml code, this all happens automatically by Informer. The second part is Informer configuration. In the informer installation directory, you will see a file 'informer.properties'. Uncomment (remove the '#') from the following:
- #informer.ssl.port=443
- #informer.ssl.keystore=<path to keystore>
- #informer.ssl.password=
Set "<path to keystore>" to reflect what keystore you imported your certificate into. Make sure to include the filename of the keystore at the end of the path. If your path contains a backslash, then you'll need to double it up since it's a control character.
Now restart the Informer service.
How do I configure Virtual Hosts for Informer?
Sometimes it is desirable to allow Informer to respond to a set of Virtual hostnames different from the default of the server. For example, if your Informer server currently resides at the domain informer.websrv.local but you want to have the server only respond to requests on the domains informer.mybox.org and informer.mybox.com, then you need to configure Virtual Hosts for Informer by following these steps:
First, contact your network administrator to setup DNS entries and appropriate firewall modifications to map the desired hostnames to your server box so that requests to those domains are properly routed to your server.
Second, now that the network side is configured properly, there are a couple of paths to take based on your Informer version:
- Versions 4.0 to 4.1
- Right-click this link and 'save link as...' jetty-web.xml to your " /<INFORMER_HOME>/.../WEB-INF/ " directory of your latest version (The correct directory will also contain a web.xml file). Make sure that the file name is jetty-web.xml. Navigate to the directory where you saved this file and open the file with any text editor.
- Version 4.2 and later
- Navigate to your " /<INFORMER_HOME>/.../WEB-INF/ " directory of your latest version and there should be a file named jetty-web-dist.xml. Rename this file to jetty-web.xml and open it with any text editor.
Once you have the appropriate jetty-web.xml file open in a text editor, the commented instructions and configuration template example will guide you through configuring a set of Virtual Hosts for Informer. After you have added your desired Virtual Host domains to the file, save your modifications and close this file. Note that the domains that are specified in this file are now the ONLY domains that Informer is accessible through. Attempts to access Informer via ANY domain that is not specified in this file will be unsuccessful.
Now restart the Informer service.
Your Informer should be accessible via the domains you specified in the jetty-web.xml file. For example, if you had previously accessed Informer via informer.mybox.local:8080/informer and you configured your jetty-web.xml file with the Virtual Host informer.production.org, you should be able to access Informer via informer.production.org:8080/informer.
Important note when upgrading Informer after this
Installation-specific modifications such as this will not survive an Informer upgrade because the configuration file is bundled with the distributed .war file. So if you have made a modification such as this to your Informer installation, and you are upgrading Informer to another version, it is advisable to save a backup copy of your old "jetty-web.xml" file to a different directory outside of the WAR directory prior to upgrading. Then you should:
- Perform the upgrade.
- Start the upgraded Informer service so the WAR is unpacked.
- Stop the Informer service and move your backed-up jetty-web.xml file into the new version's fresh WEB-INF directory.
- Restart your Informer service.
Why can't I log into Informer?
When using Internet Explorer to access the Informer web application in certain cases if you use the correct username and password to log in, the URL will appear to change to the report home page, but the screen will remain on the login page and no error message is displayed. If this happens it is most likely the case that you need to add the Informer URL to your list of trusted sites.
How do I open my Informer 3.2 and 4.0 in the same browser?
If you have Informer running on different hosts (servers), or on the same server but with different context names, like http://server:8080/oldinformer and http://server/newinformer, then you should be able to do this without a problem. You will only have a problem when the Informer instances are running on the same server (different ports) and both contexts (the part after the beginning 'http://server:xxxx/') are named the same. You would then need to log in every time you switched tabs. This is do to cookies in the browser. In this case you will need to use the IP address of the server for one informer and the host name for the other.
For example, say 3.2 is on port 8080 and 4.0 is on port 80. Both are installed on a server named "reporting" and that IP address is 000.52.12.121. Use http://002.52.12.121:8080/informer for 3.2 and http://reporting/informer for 4.0 (the 80 is implied, if it were another port you would need to supply it)
How do I increase the amount of server memory allocated to Informer?
Increasing the Amount of Memory Dedicated to the Informer Process
Overview
Informer runs atop a java virtual machine. The "java" command starts this virtual machine. The "java" command accepts a parameter that will limit the amount of memory the process may consume. Without this parameter, the default is very low.
-Xmx1024m - means 1024MB (1GB) of memory is allocated to Informer. -Xmx2048m - means 2048MB (2GB) of memory is allocated to Informer.
NOTE: The amount of memory must be specified in MB. Don't try to increase to 3GB by doing this: -Xmx3g. It won't work.
NOTE: You should copy the files that you edit so you may revert to an earlier configuration if there is an error.
Depending on your Informer server operating system, the way to change this allocation varies...
I. Unix/Linux:
You are running Informer using "bin/startup.sh". In this script in this line:
$JAVA_HOME/bin/java -Xmx1024m -Dinformer.home=...
indicates you have 1024MB of memory allocated to Informer. Increase the 1024 to whatever is available or desired. Then simply restart the process.
II. Windows running as a service:
You have installed Informer as a service and the service registry needs updating.
- Stop the service.
- Close the services popup.
- Uninstall the service by executing "service-remove.bat" in the "bin" directory of your Informer installation.
- Edit the file "service-install.bat" in the "bin" directory of your Informer installation, on around line 36 where you see a similar line:
"C:\Program Files\Entrinsik\informer\bin\%JVSERVICE%" -install "Entrinsik Informer 4.2" "%JAVA_DLL%" "-Xmx1024m"
and change the "-Xmx1024m" to the desired amount of memory.
- Reinstall the service by executing the updated "service-install.bat"
- Start the service.
- If Informer has trouble starting you have specified too much memory and should a smaller level.
III. Windows running standalone (very rare): Edit the file "startup.bat" and change this line (or similar)
"C:\Program Files (x86)\Java\jre1.6.0_04\bin\java.exe" -Xmx1024m
to the desied amount of memory.
How do I move Informer to another server?
Sometimes you may wish to install Informer on a different server. The basic idea is install the latest version of Informer on the new machine and replace its "db/informer" directory with the old one, then start it up.
Here are the detailed steps:
- Install Informer on the new server. Be sure to get the latest version from Entrinsik.
- Start up the new Informer and license it.
- If you use SSL configure that as well.
- Stop the new Informer.
- Stop the old Informer.
- Rename the "informer" directory in the "db" directory of the installation to "informer.bak" on the new machine. NOT THE OLD MACHINE.
- Copy the "db/informer" directory from the old Informer to the "db" directory in the informer installation on the new server.
- If you have anything in the "plugins" directory in the old installation, copy those also.
- Copy the "informer.properties" file from the old installation. If you set up SSL on the new server you may want to compare the 2 and merge any old differences that don't involve ssl.
- Copy "mail.properties" from the old installation to the new one. You may not have a "mail.properties" and you can ignore this.
- Copy "log4j.properties" from the old installation to the new one, only if you wish to preserve logging settings.
- Start the new Informer.
How do Informer 3.2 and 4.0 differ in querying your U2 database?
How 3.2 Works
Informer 3.2 separates record selection and column evaluation into two phases, each performed by Informer UniBASIC subroutines installed into the Informer database account. A typical report runs as follows:
- User clicks launch on a report that finds contact information for all people who live in “NC”.
- An Informer subroutine is invoked to perform the selection: “SELECT PERSON WITH STATE = ‘NC’”.
- The keys returned by the selection are preserved.
- Another subroutine is invoked to evaluate the first page worth of columns.
- This subroutine evaluates columns and links by opening files, reading attributes, and performing necessary output conversions. I-Descriptors are evaluated using the ITYPE function.
- The first page of data is returned to the web server along with the list of keys that were selected.
- The user clicks “next” to advance to the next page.
- The column evaluation subroutine is called again, this time passing in keys for the second page of data.
- The user clicks export.
- The column evaluation subroutine is called once more for the entire result set. All columns are evaluated for all rows.
- The data is returned to the web server and converted into the user’s output format of choice.
Drawbacks to the 3.2 Approach
While Informer 3.2 works well, we identified opportunities for improvement:
- The dependency on UniBASIC subroutines requires a separate database installation step.
- Manual field evaluation is slower than the U2 LIST processor.
- In some cases, manual field evaluation can produce different results than the U2 LIST processor when evaluating some I-Descriptors and correlatives.
- Certain operations (grouping, sorting on linked fields, and export) require the entire result set in order to work. These operations can lead to a suboptimal usage of database server resources.
How 4.0 Works
The Informer 4.0 architecture leverages the power and flexibility of the U2 LIST processor – the same processor used when you run a LIST or SELECT command from the database prompt. All selection and field evaluation logic is implemented using standard SELECT, MERGE.LIST, and LIST commands executed over UniObjects for Java. This removes the need to install anything to your database server. Let’s revisit the report we just ran, this time in 4.0:
- User clicks launch on a report that finds contact information for all people who live in “NC”.
- Informer 4.0 consolidates the selection criteria and requested columns into a single LIST command: LIST PERSON WITH STATE = “NC” FIRST.NAME LAST.NAME CITY STATE EVAL "TRANS('COMPANY',COMPANY.ID, NAME, 'X')"
- The report results are returned and cached in web server memory for a brief period of time.
- The user clicks “next” to advance to the next page.
- The web server plucks the next page worth of data from memory and immediately returns the results to the client.
- The user clicks export.
- The web server renders the cached results in the selected output format and delivers them to the browser.
- The user clicks log out or is idle for 10 minutes.
- The web server destroys the cached report results.
Advantages of the 4.x Approach
The new 4x architecture benefits end users in the following ways:
- Provides quicker and more robust functionality when utilizing full result sets
- Allows instant grouping and sorting
- Enables analytics and charting
- Reduces database round trips
- Transfers primary workload from target database to web server
- Allows instant exporting
4.0 Future Direction
We are committed to providing the best possible user experience for 4x and as such are actively working on ways to promote speed enhancements within the new architecture. For example, we are investigating ways to load report results progressively and to provide the user the ability to cancel long running reports. We look forward to making these and other improvements available to you as quickly as possible.
Security
How do I grant access to something for a specific group, but deny access to everyone else?
This is best accomplished through the use of the EVERYONE group. For example, say you wanted to grant access to the SENSITIVEINFO table to a group TRUSTED, but wanted everyone else in the system to be denied access. To accomplish this, you would deny access for EVERYONE to SENSITIVEINFO. Then, you would create the TRUSTED group, add users, and then grant access to SENSITIVEINFO. Now, only users in the TRUSTED group will have access to SENSITIVEINFO, while everyone else in the system will not have access.
This works because the denied access is *inherited*. In Informer, if a user is part of two groups, GroupA and Group B, and is specifically denied access to an object via membership in GroupA, but also specifically granted access to this same object via membership in GroupB, the deny wins. However, since all users are automatically part of the EVERYONE group, these permissions are *inherited*. In Informer, specifically granted permissions take precedence over inherited permissions. Thus, if a user is a member of GroupA and is granted access to an object, but the EVERYONE group is denied access to this same object, access is granted.
How do I remove a user/group from a set of permissions (i.e., from a datasource, mapping, etc.)?
Currently, this is not possible in Informer. However, to achieve the same result, simply:
- Go to the datasource/mapping/etc. where the user/group is that you want to delete.
- Click on the "Permissions" link.
- Select the user/group that you would like to delete.
- Click the "Reset" button and save.
This will reset the permissions for that user/group, and thus undo any permissions that were granted at that level (in essence, it will be as if you never added the group).
What are the basic criteria for a group to...?
1. See a report.
- Go to the report.
- Click Permissions on the Report Template page
- Search for the group
- Make sure "Launch" is set to Yes.
However, keep in mind that this will only allow the group to know of the report if they have access to the datasource. Also, if they do not have access to the mappings/properties used in the report, the report will be blank.
2. See a datasource.
- Go to the datasource.
- Click Permissions.
- For a group to be able to see this datasource's report, the "View in Report Column" and "Use in Report Criteria" need to be set to Yes.
- For a group to be able to simply view this datasource, the "View Settings" option must be set to Yes.
- For a group to be able to see this datasource's mappings, the "View property and association metadata" needs to be set to Yes.
3. See a mapping.
- Go to the datasource.
- Click on a mapping.
- For a group to be able to simply see this mapping, the "View property and association metadata" needs to be set to Yes.
- To use/view this mapping in a report, the "View in a Report Column" and "Use in Report Criteria" need to be set to Yes.
4. See a property.
- Go to the datasource.
- Click on a mapping.
- Click on a property.
- For a group to be able to use/view this property in a report, the "View in a Report Column" and "Use in Report Criteria" need to be set to Yes.
If a user is part of a group, then they inherit the group's permissions. However, these same rules apply to specific users as well.
How do I use Informer Functions?
Functions are located in the Mappings->Functions tab.
To add a new function, click +Add Function. You will be presented with a pop-up window where you can specify all the information related to the function as follows:
Function Name: This is the name of the function.
Description: A description of what the function tries to accomplish.
Parameters: Arguments that need to be supplied to the function.
Expression: The code for the function.
Definition: What the final version of the function will look like.
As an example to explain how parameters are to be defined and used within the expression, I will walk through how to create a function that calculates the number of days between two dates.
First you would give the function a name (i.e., DateDifference).
Then, if you wanted, you could supply a description (not required).
Then, we would need to add two parameters (the dates we need to find the difference between). These parameters would correspond to two Date type columns in a report.
First, click "Click to add an argument." You would select the "Date" data type, enter a variable name (which will be used in the function), and a Label (which you will be shown when adding the function to a report). Then, you would want to click the "+" button, to add another parameter (make sure to give it a different variable name and label, so that you can differentiate between the two dates).
Next, we would need to provide the expression for the function -- this is the part of the function where the actual calculation takes place. To find the difference between two dates, we would want to enter something like the following:
if(date1!=null && date2!=null){
var date1MS = date1.getTime();
var date2MS = date2.getTime();
var difference = date2MS-date1MS;
var days = difference/(1000 * 60 * 60 * 24);
days = Math.round(days);
return days;
}
After we have entered this expression, we can click "Save."
Now that we have our function defined, we will want to go to a report that has two date fields included (or create a new report, and include two date fields).
Then, in the "Edit Columns" screen, we would select "Add Calculations." In this window, we would select "Script," and then click the button next to the expression window, and select the function that was just created. In this window, you will be able to select two columns for the Parameters. Click on the word "empty" next to each parameter, and choose the corresponding column (or enter a literal value -- in this example, something like today's date).
Once you have selected two parameters, click "Add this Function." Now, the "Expression" box in the "New Script Column" pop-up window will be populated with a call to the new function (it will look something like: informer.DateDifference(columnAlias1, columnAlias2)).
Now, if you click "Add Calculation," the new column should be added to the report, and it should be populated with the number of days between the two date columns selected as parameters.
