SDKCSP_name=SDK Uninstall
VERXML_C8SDK_version=VERXML_C8SDK-AW-ML-RTM-8.1.60.28-0
VERXML_C8SDK_name=Verxml C8SDK
runOptionBoolean saveOutput = new runOptionBoolean();
saveOutput.name = runOptionEnum.saveOutput;
saveOutput.value = false;
runOptions[0] = saveOutput;
// Specify the output format.
runOptionStringArray outputFormat = new runOptionStringArray();
outputFormat.name = runOptionEnum.outputFormat;
outputFormat.value = new String[] { "HTML" };
runOptions[1] = outputFormat;
//Set the report not to prompt as we pass the parameters if any
runOptionBoolean rop = new runOptionBoolean();
rop.name = runOptionEnum.prompt;
rop.value = false;
runOptions[2] = rop;
runOptionInt maxRows = new runOptionInt();
maxRows.name = runOptionEnum.verticalElements;
maxRows.value = 20;
runOptions[3] = maxRows;
option[] drillOptions = new option[1];
drillOptionParameterValues d1 = new drillOptionParameterValues();
d1.name = drillOptionEnum.down;
d1.value = parameters;
drillOptions[0] = d1;
//Set the option to always have the primaryRequest in the response
asynchOptionBoolean includePrimaryRequest = new asynchOptionBoolean();
includePrimaryRequest.name = asynchOptionEnum.alwaysIncludePrimaryRequest;
includePrimaryRequest.value = true;
runOptions[4] = includePrimaryRequest;
runOptionLanguageArray roOutputFormat = new runOptionLanguageArray();
roOutputFormat.name = runOptionEnum.outputLocale;
String[] fmt = { "en-us" };
roOutputFormat.value = fmt;
runOptions[5] = roOutputFormat;
//Run the report
response = this.rptService.run(reportPathObj, new parameterValue[] { }, runOptions);
//If response is not immediately complete, call wait until complete
if (!(response.status == (asynchReplyStatusEnum.complete)))
{
while (!(response.status == asynchReplyStatusEnum.complete))
{
//before calling wait, double check that it is okay
if (hasSecondaryRequest(response, "wait"))
{
response =
this.rptService.wait(
response.primaryRequest,
new parameterValue[] { },
new option[] { });
}
else
{
Console.Write("Error: Wait method not available as expected.");
return;
}
}
//check if output is ready
if (outputIsReady(response))
{
response =
this.rptService.getOutput(response.primaryRequest, new parameterValue[] { },
new option[] { });
}
else
{
Console.Write("output is not ready!");
}
}
String data = getOutputPage(response);
// Write the report output to file system
Console.Write("Writing the output of the original report..");
StreamWriter sw = File.CreateText(savePath + "\\original.html");
sw.Write(data);
sw.Flush();
sw.Close();
//Drill down in the report
//set up drill down parameter.
simpleParmValueItem item = new simpleParmValueItem();
item.use = "[great_outdoors_company].[Years].[Years].[Year]->:[PC].[@MEMBER].[20050101-20051231]";
item.inclusive = true;
parmValueItem[] pvi = new parmValueItem[1];
pvi[0] = item;
parameters[0] = new parameterValue();
parameters[0].name = "Year";
parameters[0].value = pvi;
response = this.rptService.drill(response.primaryRequest, parameters, drillOptions);
if (!(response.status == (asynchReplyStatusEnum.complete)))
{
while (!(response.status == asynchReplyStatusEnum.complete))
{
//before calling wait, double check that it is okay
if (hasSecondaryRequest(response, "wait"))
{
response =
this.rptService.wait(
response.primaryRequest,
new parameterValue[] { },
new option[] { });
}
else
{
Console.Write("Error: Wait method not available as expected.");
return;
}
}
//check if output is ready
if (outputIsReady(response))
{
response =
this.rptService.getOutput(response.primaryRequest, new parameterValue[] { },
new option[] { });
}
else
{
Console.Write("output is not ready!");
}
}
data = getOutputPage(response);
// Write the report output to file system
Console.Write("Writing the output of the drill down report..");
StreamWriter sw2 = File.CreateText(savePath + "\\drilldown.html");
sw2.Write(data);
sw2.Flush();
sw2.Close();
// release the conversation to free resources.
this.rptService.release(response.primaryRequest);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message.ToString());
Console.WriteLine(ex.StackTrace);
}
}
runOptionBoolean saveOutput = new runOptionBoolean();
saveOutput.name = runOptionEnum.saveOutput;
saveOutput.value = false;
runOptions[0] = saveOutput;
// Specify the output format.
runOptionStringArray outputFormat = new runOptionStringArray();
outputFormat.name = runOptionEnum.outputFormat;
outputFormat.value = new String[] { "HTML" };
runOptions[1] = outputFormat;
//Set the report not to prompt as we pass the parameters if any
runOptionBoolean rop = new runOptionBoolean();
rop.name = runOptionEnum.prompt;
rop.value = false;
runOptions[2] = rop;
runOptionInt maxRows = new runOptionInt();
maxRows.name = runOptionEnum.verticalElements;
maxRows.value = 20;
runOptions[3] = maxRows;
option[] drillOptions = new option[1];
drillOptionParameterValues d1 = new drillOptionParameterValues();
d1.name = drillOptionEnum.down;
d1.value = parameters;
drillOptions[0] = d1;
//Set the option to always have the primaryRequest in the response
asynchOptionBoolean includePrimaryRequest = new asynchOptionBoolean();
includePrimaryRequest.name = asynchOptionEnum.alwaysIncludePrimaryRequest;
includePrimaryRequest.value = true;
runOptions[4] = includePrimaryRequest;
runOptionLanguageArray roOutputFormat = new runOptionLanguageArray();
roOutputFormat.name = runOptionEnum.outputLocale;
String[] fmt = { "en-us" };
roOutputFormat.value = fmt;
runOptions[5] = roOutputFormat;
//Run the report
response = this.rptService.run(reportPathObj, new parameterValue[] { }, runOptions);
//If response is not immediately complete, call wait until complete
if (!(response.status == (asynchReplyStatusEnum.complete)))
{
while (!(response.status == asynchReplyStatusEnum.complete))
{
//before calling wait, double check that it is okay
if (hasSecondaryRequest(response, "wait"))
{
response =
this.rptService.wait(
response.primaryRequest,
new parameterValue[] { },
new option[] { });
}
else
{
Console.Write("Error: Wait method not available as expected.");
return;
}
}
//check if output is ready
if (outputIsReady(response))
{
response =
this.rptService.getOutput(response.primaryRequest, new parameterValue[] { },
new option[] { });
}
else
{
Console.Write("output is not ready!");
}
}
String data = getOutputPage(response);
// Write the report output to file system
Console.Write("Writing the output of the original report..");
StreamWriter sw = File.CreateText(savePath + "\\original.html");
sw.Write(data);
sw.Flush();
sw.Close();
//Drill down in the report
//set up drill down parameter.
simpleParmValueItem item = new simpleParmValueItem();
item.use = "[great_outdoors_company].[Years].[Years].[Year]->:[PC].[@MEMBER].[20050101-20051231]";
item.inclusive = true;
parmValueItem[] pvi = new parmValueItem[1];
pvi[0] = item;
parameters[0] = new parameterValue();
parameters[0].name = "Year";
parameters[0].value = pvi;
response = this.rptService.drill(response.primaryRequest, parameters, drillOptions);
if (!(response.status == (asynchReplyStatusEnum.complete)))
{
while (!(response.status == asynchReplyStatusEnum.complete))
{
//before calling wait, double check that it is okay
if (hasSecondaryRequest(response, "wait"))
{
response =
this.rptService.wait(
response.primaryRequest,
new parameterValue[] { },
new option[] { });
}
else
{
Console.Write("Error: Wait method not available as expected.");
return;
}
}
//check if output is ready
if (outputIsReady(response))
{
response =
this.rptService.getOutput(response.primaryRequest, new parameterValue[] { },
new option[] { });
}
else
{
Console.Write("output is not ready!");
}
}
data = getOutputPage(response);
// Write the report output to file system
Console.Write("Writing the output of the drill down report..");
StreamWriter sw2 = File.CreateText(savePath + "\\drilldown.html");
sw2.Write(data);
sw2.Flush();
sw2.Close();
// release the conversation to free resources.
this.rptService.release(response.primaryRequest);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message.ToString());
Console.WriteLine(ex.StackTrace);
}
}
{
//string export = "CAMID(\"" + strNamespaceId + "\")//Export"; string export = "/adminFolder/importDeployment[@name=''MY DEPLOYMENT PACKAGE"]"; propEnum[] props = new propEnum[] { propEnum.deployedObjectDefaultName, propEnum.defaultName, propEnum.searchPath }; baseClass[] exportObjects = new baseClass[] { }; searchPathMultipleObject spMulti = new searchPathMultipleObject();spMulti.Value = export;
try{
exportObjects = cmService.query(spMulti, props,
new sort[] { }, new queryOptions());}
catch (SoapException exSoap){
SoapExceptionHandler objEx = new SoapExceptionHandler(exSoap); MessageBox.Show(objEx.Details + objEx.Message + objEx.ErrorCode + objEx.Severity);}
return exportObjects;}
{
//string export = "CAMID(\"" + strNamespaceId + "\")//Export"; string export = "/adminFolder/importDeployment[@name=''MY DEPLOYMENT PACKAGE"]"; propEnum[] props = new propEnum[] { propEnum.deployedObjectDefaultName, propEnum.defaultName, propEnum.searchPath }; baseClass[] exportObjects = new baseClass[] { }; searchPathMultipleObject spMulti = new searchPathMultipleObject();spMulti.Value = export;
try{
exportObjects = cmService.query(spMulti, props,
new sort[] { }, new queryOptions());}
catch (SoapException exSoap){
SoapExceptionHandler objEx = new SoapExceptionHandler(exSoap); MessageBox.Show(objEx.Details + objEx.Message + objEx.ErrorCode + objEx.Severity);}
return exportObjects;}
If you have added an image to your Cognos Report Studio report page and when you attempt to browse your directory for an image file to apply you may encounter an error message stating that you don't have the proper permissions. If you are using IIS for your web server then you should attempt the following fix:
If you have added an image to your Cognos Report Studio report page and when you attempt to browse your directory for an image file to apply you may encounter an error message stating that you don't have the proper permissions. If you are using IIS for your web server then you should attempt the following fix:
When you validate a model in Framework Manager you may encounter a series of new Warning messages.
• Needs reevaluation
This message is most likely related to data type changes. The majority of items with this warning can be selected for repair. The repair option steps you
through your options for evaluating and upgrading specific elements of metadata.
Tip:
You can also evaluate a query subject by using the Evaluate Object command from the Tools menu.• Join expression conflicts with the determinant information defined in the query subject
Sometimes the index and key information specified for a query subject implies a level of granularity that does not match the relationships specified on a query subject.
• None of the query items in this level have a role Caption specifiedWhen defining levels, you must ensure that a business key and caption roles are specified. These roles are relevant for member functions in the report authoring tools and to assist in the member-oriented tree in Analysis Studio. All captions must have the string data type. If there is no attribute of this type available, create a calculation that is a string data type and assign the member caption role to the new item. This is primarily an issue for Analysis Studio.
• One or more determinants that describe the keys and attributes of the query subject should be specified
When importing from a relational data source, determinants are specified for any indexes and keys that exist in the data source. It is possible that no determinants exist on a query subject upgraded from ReportNet 1.x, especially for model query subjects. We recommend that you use determinants to explicitly specify the granularity of the data in the query subject and the functional dependencies between query items. However, it is not mandatory to specify determinants for query subjects representing a single level or fact data. Determinants are required only if the item is a BLOB data type.
When you validate a model in Framework Manager you may encounter a series of new Warning messages.
• Needs reevaluation
This message is most likely related to data type changes. The majority of items with this warning can be selected for repair. The repair option steps you
through your options for evaluating and upgrading specific elements of metadata.
Tip:
You can also evaluate a query subject by using the Evaluate Object command from the Tools menu.• Join expression conflicts with the determinant information defined in the query subject
Sometimes the index and key information specified for a query subject implies a level of granularity that does not match the relationships specified on a query subject.
• None of the query items in this level have a role Caption specifiedWhen defining levels, you must ensure that a business key and caption roles are specified. These roles are relevant for member functions in the report authoring tools and to assist in the member-oriented tree in Analysis Studio. All captions must have the string data type. If there is no attribute of this type available, create a calculation that is a string data type and assign the member caption role to the new item. This is primarily an issue for Analysis Studio.
• One or more determinants that describe the keys and attributes of the query subject should be specified
When importing from a relational data source, determinants are specified for any indexes and keys that exist in the data source. It is possible that no determinants exist on a query subject upgraded from ReportNet 1.x, especially for model query subjects. We recommend that you use determinants to explicitly specify the granularity of the data in the query subject and the functional dependencies between query items. However, it is not mandatory to specify determinants for query subjects representing a single level or fact data. Determinants are required only if the item is a BLOB data type.
Returns the pieces of the user's identity (account name, group names, role names) as a list of
values separated by commas.
Syntax
CAMIDList ( [ separator_string ] )
Example
#CAMIDList ( )#
Result: CAMID("::Everyone"), CAMID(":Authors"), CAMID(":Query Users"),
CSVIdentityName
Use the identity information of the current authenticated user to lookup values in the specified
parameter map. Each individual piece of the user's identity (account name, group names, role
names) is used as a key into the map. The unique list of values that is retrieved from the map is
then returned as a string, where each value is surrounded by single quotes and where multiple
values are separated by commas.
Syntax
CSVIdentityName ( %parameter_map_name [ , separator_string ] )
Example
#CSVIdentityName ( %security_clearance_level_map )#
Result: 'level_500' , 'level_501' , 'level_700'
CSVIdentityNameList
Returns the pieces of the user's identity (account name, group names, role names) as a list of
strings. The unique list of values is returned as a string, where each value is surrounded by single
quotes and where multiple values are separated by commas.
Syntax
CSVIdentityNameList ( [ separator_string ] )
Example
#CSVIdentityNameList ( )#
Result: 'Everyone' , 'Report Administrators' , 'Query User'
Returns the pieces of the user's identity (account name, group names, role names) as a list of
values separated by commas.
Syntax
CAMIDList ( [ separator_string ] )
Example
#CAMIDList ( )#
Result: CAMID("::Everyone"), CAMID(":Authors"), CAMID(":Query Users"),
CSVIdentityName
Use the identity information of the current authenticated user to lookup values in the specified
parameter map. Each individual piece of the user's identity (account name, group names, role
names) is used as a key into the map. The unique list of values that is retrieved from the map is
then returned as a string, where each value is surrounded by single quotes and where multiple
values are separated by commas.
Syntax
CSVIdentityName ( %parameter_map_name [ , separator_string ] )
Example
#CSVIdentityName ( %security_clearance_level_map )#
Result: 'level_500' , 'level_501' , 'level_700'
CSVIdentityNameList
Returns the pieces of the user's identity (account name, group names, role names) as a list of
strings. The unique list of values is returned as a string, where each value is surrounded by single
quotes and where multiple values are separated by commas.
Syntax
CSVIdentityNameList ( [ separator_string ] )
Example
#CSVIdentityNameList ( )#
Result: 'Everyone' , 'Report Administrators' , 'Query User'
Cognos 8 Three Tiered Architecture
The Cognos 8 BI can be considered to be separated into a 3 tier architecture layout.
1st tier – Web Server
2nd tier – Applications
3rd tier – Data
The tiers are based on component function, and are normally separated by firewalls. The C8 user interface rests above the tiers. Primarily, the communication between the tier components is based on the both the SOAP and HTTP protocols. Third party applications can use either a URL API or the SOAP API. The SOAP API uses the BI Bus to move information from one service to another by moving the packets of data.
The 1st tier (Web Server) hosts the Cognos gateway, which: encrypts and decrypts passwords; extracts information needed to submit the request to a Cognos BI server; attaches environment variables for the Web server; adds a default namespace to the request to help ensure that the server authenticates the user in the correct namespace; and passes requests to a Cognos 8 BI dispatcher for processing.
The 2nd tier (Applications) hosts the Cognos 8 BI server and its associated services. It is comprised of: Application Tier Components, Content Manager, and Bootstrap service.
The 3rd tier (Data) contains the Content Store, Data Sources, Metric Store
Cognos 8 Three Tiered Architecture
The Cognos 8 BI can be considered to be separated into a 3 tier architecture layout.
1st tier – Web Server
2nd tier – Applications
3rd tier – Data
The tiers are based on component function, and are normally separated by firewalls. The C8 user interface rests above the tiers. Primarily, the communication between the tier components is based on the both the SOAP and HTTP protocols. Third party applications can use either a URL API or the SOAP API. The SOAP API uses the BI Bus to move information from one service to another by moving the packets of data.
The 1st tier (Web Server) hosts the Cognos gateway, which: encrypts and decrypts passwords; extracts information needed to submit the request to a Cognos BI server; attaches environment variables for the Web server; adds a default namespace to the request to help ensure that the server authenticates the user in the correct namespace; and passes requests to a Cognos 8 BI dispatcher for processing.
The 2nd tier (Applications) hosts the Cognos 8 BI server and its associated services. It is comprised of: Application Tier Components, Content Manager, and Bootstrap service.
The 3rd tier (Data) contains the Content Store, Data Sources, Metric Store