Wednesday, October 22, 2014
BIRT Report Parameters - Using Hard Coded SQL Statements
Today I would like to talk about BIRT reports and, in particular, report parameters that are hard coded select statements in the report design file. The following will be especially important for those people running their application in SQL Server.
The latest release of TRIRIGA includes several security reports that contain hard coded SQL select statements. Unfortunately, the select statements apparently cause a problem for those clients using SQL Server. The report is supposed to display the list of security groups. It does this via a simple select statement that gets the group name from the t_group table and looks like this:
SELECT name1 FROM t_group WHERE name1 <> 'Admin Group';
If you take that SQL statement and run it in the Admin Console->Database Query Tool you will see the expected results. When run from the context of a BIRT report, however, SQL Server does not appear to handle the select statement properly and you end up with a parameter list with no values. To correct the problem, you need to uppercase the entire SQL statement with the exception of the value in quotes. So the altered SQL statement will appear as follows:
SELECT NAME1 FROM T_GROUP WHERE NAME1 <> 'Admin Group';
In general, SQL Server BIRT report writers, be aware that if you decide to hard code a select statement such as this to provide the values for a prompt and you do NOT see anything in the list box for parameter selection, check the select statement that you used and make sure you uppercase all of the select statement that references either a database object or are reserved SQL keywords. Obviously, in the case of text searches as the one noted here, the case must match the expected value in the database.
You may now be asking yourself, how do I go about changing that in our BIRT reports? It is relatively easy and the following are instructions on how to do this within the report designer tool. I am assuming the report writers are familiar with the report design lifecycle. These instructions were written with the report mentioned above, so you will need to generalize as appropriate.
1 - In the report designer, expand the Data Sets section to reveal the SecurityGroups and SecurityPermissions datasets.
2 - Expand the SecurityGroups dataset to reveal the NAME1 object.
3 - Click on the Advanced vertical tab in the Property Editor.
4 - Scroll down to find the Query property. It will look as if the Value is set to "SELECT name1".
5 - Click on the Value and you should see this SQL:
2 - Expand the SecurityGroups dataset to reveal the NAME1 object.
3 - Click on the Advanced vertical tab in the Property Editor.
4 - Scroll down to find the Query property. It will look as if the Value is set to "SELECT name1".
5 - Click on the Value and you should see this SQL:
SELECT name1
FROM t_group
WHERE name1 <> 'Admin Group'
6 - Everything except 'Admin Group' should be in uppercase in order for SQL to process the query correctly in SQL Server environments.
Taken from https://www.ibm.com/developerworks/community/blogs/8eeee156-f1f3-45ec-970c-53b17ccb452a/entry/birt_report_parameters_using_hard_coded_sql_statements?lang=en
Tuesday, October 21, 2014
Missing AutoCAD or MicroStation exception installing the CAD Integrator
Question
When installing the CAD integrator (IC) you sometimes receive an error message to say AutoCAD or MicroStation are not installed even though you know they are installed.
Why?
A check list before calling up support for assistance.
Exception on install:
""A supported version of AutoCAD or MicroStation must be installed on your computer before installing IBM TRIRIGA CAD Integrator/Publisher. Please close this installer, install the required software, then reinstall IBM TRIRIGA CAD Integrator/Publisher.""
Cause
The error is generic and can have other causes besides AutoCAD not being installed.
Answer
Check the following.
1. Ensure AutoCAD is installed.
2. Run install.bat (ie Run as administrator).
So right mouse click on the InstallCI.exe and run as administrator.
3. Make sure you have applied the SP2 to AutoCAD 2013.
4. Confirm what OS you are using, win2008 will not work.
5. Make sure using Java supported in TRIRIGA Matrix has been installed
TRIRIGA Support Matrix:
6. Make sure using (64 bit) Java with 64 bit AutoCAD and vice versa for (32 bit) releases.
This is most common cause where the Java installed is not correct in terms of 32 or 64 bit..
So if installing 32 bit AutoCAD install 32 bit Java and the same for 64 bit installations use 64 bit Java.
------------------------------------------------------------------------------------------------------------------------
If this still fails to resolve the install exception then send this information to support.
------------------------------------------------------------------------------------------------------------------------
If this still fails to resolve the install exception then send this information to support.
------------------------------------------------------------------------------------------------------------------------
1. What version of AutoCAD are you using?
2. What version of TRIRIGA are you using both platform/application releases?
3. What database, application server and OS is TRIRIGA deployed to?
4. What is the OS of the AutoCAD client?
5. Provide the ciinstall.properties file.
Located: <installdir>\CI-12\ciinstall.properties
Example:
C:\Program Files\IBM\TRIRIGA\CI-12\ciinstall.properties
Located: <installdir>\CI-12\ciinstall.properties
Example:
C:\Program Files\IBM\TRIRIGA\CI-12\ciinstall.properties
Taken from http://www-01.ibm.com/support/docview.wss?uid=swg21660344
How to turn on full logging for CI
https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM+TRIRIGA1/page/Turn+on+full+logging+in+CI
Tuesday, September 16, 2014
SQL to find all related items to a TRIRIGA Form
SELECT m.module_name Module, w.bo_type_name BO, w.wf_name Workflow,
w.wf_template_version, wtn.Name TaskType,
e.FORMULA Formula, ep.PARAM_STR Parameter
FROM TASK t, WF_TEMPLATE w, wf_lookup wl, IBS_MODULE m,
expression e, expression_param ep, wf_task_name wtn
WHERE (ep.param_str LIKE '%fieldName=''triFormNameSY''%')
and e.formula like '%RealEstateLease%'
AND ep.FORMULA_ID = t.MAP_ID
AND e.ID = t.MAP_ID
AND t.wf_template_id = w.wf_template_id
AND t.version = w.wf_template_version
and w.wf_template_id = wl.wf_template_id
and w.wf_template_version = wl.wf_template_version
AND w.status_id IN (10,20) -- (Published, Revision-In-Progress)
AND m.MODULE_ID = w.BO_CLASS_TYPE_ID
AND t.TASK_TYPE = wtn.TASK_TYPE
ORDER BY Module, BO, Workflow, TaskType;
w.wf_template_version, wtn.Name TaskType,
e.FORMULA Formula, ep.PARAM_STR Parameter
FROM TASK t, WF_TEMPLATE w, wf_lookup wl, IBS_MODULE m,
expression e, expression_param ep, wf_task_name wtn
WHERE (ep.param_str LIKE '%fieldName=''triFormNameSY''%')
and e.formula like '%RealEstateLease%'
AND ep.FORMULA_ID = t.MAP_ID
AND e.ID = t.MAP_ID
AND t.wf_template_id = w.wf_template_id
AND t.version = w.wf_template_version
and w.wf_template_id = wl.wf_template_id
and w.wf_template_version = wl.wf_template_version
AND w.status_id IN (10,20) -- (Published, Revision-In-Progress)
AND m.MODULE_ID = w.BO_CLASS_TYPE_ID
AND t.TASK_TYPE = wtn.TASK_TYPE
ORDER BY Module, BO, Workflow, TaskType;
Friday, August 8, 2014
Agent Startup in N-Tier Systems
This is a discussion on how to configure the different TRIRIGA Platform Agents to start-up on N-Tiered systems.
Most of the agents are single-instance, and do not allow multiple instances to be run on multiple servers. The exception to this are the two multi-instance agents: Workflow Agent, Reserve SMTP Agent and Data Import Agent. Problems can occur if single-instance agents are attempted to be run simultaneously. The Agent Manager across the servers will prevent single-instance agents from being started multiple types.
The following outlines some different common n-tier server configurations.
Case 1 Two Servers: Application Server and Process Server
The first case we'll examine is where there is a Application Server, and a Process Server. The Application server is where the end users sign in to, and the Process Server is where the majority of agents are running.
These are where the agents should be running:
Application Server: DataImportAgent, ReportQueueAgent
Process Server: CleanupAgent, DataConnectAgent, DataImportAgent, ExtendedFormulaAgent, FormulaRecalcAgent, IncomingMailAgent, ObjectMigrationAgent, ObjectPublishAgent, ReserveSMTPAgent, SchedulerAgent, WFAgent, WFFutureAgent, WFNotificationAgent
Note, for Agents like the IncomingMailAgent or WFFutureAgent can be disabled if you don't have the license are not using those features.
Case 2 Three Servers: Two Application Servers and a Process Server
This case the Application Server is split into two servers, with some sort of "stick session" load balancing. We only need to run the ReportQueueAgent on one of those servers, that is where the users will be redirected once the report has completed running in the background:
Application Server 1: DataImportAgent, ReportQueueAgent
Application Server 2: DataImportAgent
Process Server: CleanupAgent, DataConnectAgent, DataImportAgent, ExtendedFormulaAgent, FormulaRecalcAgent, IncomingMailAgent, ObjectMigrationAgent, ObjectPublishAgent, ReserveSMTPAgent, SchedulerAgent, WFAgent, WFFutureAgent, WFNotificationAgent
Case 3 Four Servers: Two Application and Two Process Servers
When splitting up the process server, you could consider one process server the main Workflow server, and the other the main Extended Formula Agent server. While the Workflow Agent can run on both process servers, less threads should be allocated two the server running the Extended Queue agent. This is to allow more resources to be available to the Extended Queue Agent. For example, Process Server 1 can start out with 10 WF Agent Threads, while Process Server 2 could start with 5. When deciding on the other agents, you can spread the load across the two process servers. A tuning exercise should be done to best determine the number of threads is optimal for each server.
Application Server 1: DataImportAgent, ReportQueueAgent
Application Server 2: DataImportAgent
Process Server 1: CleanupAgent, DataImportAgent, FormulaRecalcAgent, IncomingMailAgent, ReserveSMTPAgent, WFAgent, WFFutureAgent, WFNotificationAgent
Process Server 2: DataConnectAgent, DataImportAgent, ExtendedFormulaAgent, FormulaRecalcAgent, ObjectMigrationAgent, ObjectPublishAgent, SchedulerAgent, WFAgent
Taken from https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014916192
Most of the agents are single-instance, and do not allow multiple instances to be run on multiple servers. The exception to this are the two multi-instance agents: Workflow Agent, Reserve SMTP Agent and Data Import Agent. Problems can occur if single-instance agents are attempted to be run simultaneously. The Agent Manager across the servers will prevent single-instance agents from being started multiple types.
The following outlines some different common n-tier server configurations.
Case 1 Two Servers: Application Server and Process Server
The first case we'll examine is where there is a Application Server, and a Process Server. The Application server is where the end users sign in to, and the Process Server is where the majority of agents are running.
These are where the agents should be running:
Application Server: DataImportAgent, ReportQueueAgent
Process Server: CleanupAgent, DataConnectAgent, DataImportAgent, ExtendedFormulaAgent, FormulaRecalcAgent, IncomingMailAgent, ObjectMigrationAgent, ObjectPublishAgent, ReserveSMTPAgent, SchedulerAgent, WFAgent, WFFutureAgent, WFNotificationAgent
Note, for Agents like the IncomingMailAgent or WFFutureAgent can be disabled if you don't have the license are not using those features.
Case 2 Three Servers: Two Application Servers and a Process Server
This case the Application Server is split into two servers, with some sort of "stick session" load balancing. We only need to run the ReportQueueAgent on one of those servers, that is where the users will be redirected once the report has completed running in the background:
Application Server 1: DataImportAgent, ReportQueueAgent
Application Server 2: DataImportAgent
Process Server: CleanupAgent, DataConnectAgent, DataImportAgent, ExtendedFormulaAgent, FormulaRecalcAgent, IncomingMailAgent, ObjectMigrationAgent, ObjectPublishAgent, ReserveSMTPAgent, SchedulerAgent, WFAgent, WFFutureAgent, WFNotificationAgent
Case 3 Four Servers: Two Application and Two Process Servers
When splitting up the process server, you could consider one process server the main Workflow server, and the other the main Extended Formula Agent server. While the Workflow Agent can run on both process servers, less threads should be allocated two the server running the Extended Queue agent. This is to allow more resources to be available to the Extended Queue Agent. For example, Process Server 1 can start out with 10 WF Agent Threads, while Process Server 2 could start with 5. When deciding on the other agents, you can spread the load across the two process servers. A tuning exercise should be done to best determine the number of threads is optimal for each server.
Application Server 1: DataImportAgent, ReportQueueAgent
Application Server 2: DataImportAgent
Process Server 1: CleanupAgent, DataImportAgent, FormulaRecalcAgent, IncomingMailAgent, ReserveSMTPAgent, WFAgent, WFFutureAgent, WFNotificationAgent
Process Server 2: DataConnectAgent, DataImportAgent, ExtendedFormulaAgent, FormulaRecalcAgent, ObjectMigrationAgent, ObjectPublishAgent, SchedulerAgent, WFAgent
Taken from https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014916192
IBM TRIRIGA Application Platform Installation Information
Before
you install IBM TRIRIGA Application Platform
Installing
IBM TRIRIGA Application Platform
Verification
Checklist
Configuring
the Platform
IBM
TRIRIGA Application Platform Performance Wiki
System
Sizing
Capacity Planning and
Performance Overview
As with any web based platform, the application server and
database capacity needed to deploy a system built using IBM TRIRIGA Application
Platform largely depends on the number of anticipated users and user requests.
The limits of what is needed are determined by how users are
expected to use the system. At a minimum, enough server capacity to satisfy the
average load during a work day will be required, with response times that are
acceptable to the user base. If possible, strive to satisfy the volume of
requests anticipated during peak intervals of high user activity. Hardware
resources such as CPU, memory, I/O capacity, and network bandwidth are key to
reducing response times. Unless you install IBM TRIRIGA on a server or group of
servers that can handle a large number of transactions, users are probably
going to experience slow response times.
Adding more servers and
database capacity can sometimes improve IBM TRIRIGA's performance, but that is
not always the case. The application usage and system configuration can play a
significant role in the balance of system performance. Please see the IBM
TRIRIGA Application Platform Best Practices for System Performance
white paper for more information on tuning the environment.
Sizing &
Estimation Methodology
Estimating anything can be a complex and error-prone process.
That’s why it's called estimation, rather than a calculation.
There are two primary approaches to sizing a TRIRIGA
implementation:
- Size By Example Based
- Proof of Concept Based
Size-By-Example Based
A size-by-example (SBE) approach requires a set of known samples
to use as data points along the range of system size. The more examples
available for SBE, the more accurate the intended implementation will be.
Targeted SBE sizing solutions for prospective TRIRIGA customers
are provided in this wiki. These targeted solutions were compiled from our
internal deployments, performance benchmarks, and customer's external
deployments.
Proof of Concept Based
A proof of concept (POC), or pilot based approach, offers the
most accurate sizing data of all approaches.
POC Steps:
- Test your implementation design
- Test your chosen hardware
platform
- Simulate projected load
- Validate design assumptions
- Validate IBM TRIRIGA
- Provide iterative feedback for
your implementation team
- Adjust or validate the
implementation decisions made prior to the POC
There is, however, two downsides to a POC based approach, namely
time and money. Running a POC requires the customer to have manpower, hardware,
and the time available to implement the solution, validate the solution,
iterate changes, re-test, and finally analyze the POC findings. A POC is always
the best and recommended approach for any sizing exercise. It delivers results
that are accurate for the unique implementation of the specific customer that
are as close to deploying the real live solution as possible, without the
capital outlay on hardware and project resources.
Topic Categories
·
Hardware
Requirements
·
Software
Requirements
·
Hardware
Configuration
·
Development Environment
·
Basic (Small) Environment
·
Typical (Medium) Environment
·
Advanced (Large)
Environment – Coming Soon
Other Resources
·
IBM
TRIRIGA Release Notes
·
IBM
TRIRIGA Application Platform Compatibility Matrix
·
IBM TRIRIGA Application Platform Version 3 Installation and Implementation Guide
·
IBM
TRIRIGA Application Platform Version 3.3 Best Practices for System Performance
Servers
The
IBM® TRIRIGA® Application Platform uses many different types of servers. The
word "server" is often used to mean a physical piece of equipment,
but it can also represent a logical separation that is based on function. Each
of these logical servers can be collocated on physical servers, or separated so
that each logical tier is installed on their own physical server.
Alternatively,
each of these logical tiers can be installed on one or more virtual servers. In
turn, these virtual servers can be on a physical server, or a cluster of
physical servers in a virtual server cluster.
The
following logical function-based servers are used in the IBM TRIRIGA
Application Platform:
Web
server
Receives HTTP requests for web content. Also referred to as a front-end server.
Application
server Carries
out the user business logic with JBoss Application Server, Red Hat JBoss
Enterprise Application Platform, WebLogic Server, or WebSphere® Application
Server.
Process
server
Carries out the background processing and analytics with Red Hat JBoss Enterprise
Application Platform, WebLogic Server, or WebSphere Application Server.
Tools
server Carries
out the reporting. Holds other third-party tools such as Brava! Enterprise
Viewer for IBM TRIRIGA.
Database
server
Holds the relational database and supported database management system such as
Oracle Database or Microsoft SQL Server.
Web
server
The
web server is the tier with which each user web browser communicates. Examples
of web servers include IBM HTTP Server, Microsoft Internet Information Services
(IIS), and Apache HTTP Server. The web server handles HTTP requests only and
does not run business logic. The IBM TRIRIGA Application Platform also supports
Secure Sockets Layer (SSL) by using HTTPS. Typically, HTTP uses port 80
(non-secure connection) and 443 (secure connection), but it can be configured
to use other ports. Each time a user requests a JavaServer Page (JSP), the web
server passes the request to the application server for processing. The web
server is a physical manifestation of the web tier.
Application
server
The
application server is a Java virtual machine (JVM) with an instance of the
runtime application. This server runs most of the business logic. Application
server processes are CPU-intensive and require a great deal of memory. The
application tier consists of JavaServer Pages (JSP) and Java classes. The Java™
2 Platform, Enterprise Edition (J2EE) application server provides a JSP
container, a database connection pool, and transaction management services. The
application server is a physical manifestation of the application (middleware)
tier.
Process
server
The
process server is a JVM with an instance of the runtime application that is set
up as a dedicated processing or analytics engine. This server is configured
almost exactly like an application server, but no users sign on to this server.
It handles all workflow requests that are queued from users or by the IBM
TRIRIGA software. The process server is a physical manifestation of the
application (middleware) tier.
Tools
server
The
tools server houses the two major third-party extensions from IBM TRIRIGA. This
server can run the optional Brava! Enterprise Viewer for IBM TRIRIGA or
optional Business Intelligence and Reporting Tools (BIRT) process server or
both. You can designate a IBM TRIRIGA application server as a BIRT process
server. If you choose to run both BIRT and IBM TRIRIGA on the same server,
expect BIRT report handling operations to increase the load on the server. BIRT
is run in the same JVM as IBM TRIRIGA in all cases.
Brava
is a web-based client-server package that provides view, markup, and
collaboration functions. Viewers use a thin client to display documents that
are rendered by the server. This process eliminates many compatibility issues
and lowers the number of software applications that are needed by users.
Database
server
The
database server runs the database process. The database is where data is
stored. The major database servers use Structured Query Language (SQL) to store
and retrieve data. The Oracle Database server and Microsoft SQL Server use SQL.
But each server is a different database engine and each has its own extended
SQL for competitive differentiation. The application tier communicates with the
database tier by using JDBC connection pools. The database server is a physical
manifestation of the database tier.
Subscribe to:
Posts (Atom)