Cognos TM1-Prozess über Java API ausführen

In diesem Artikel geht es darum, über die Cognos TM1 Java-API eines Prozess mit und ohne Parameter zu starten.

Um einen TM1-Prozess auszuführen wird ein TM1Server-Objekt benötigt. Die Verbindung von Java mit dem TM1-Server wurde bereits in diesem Artikel behandelt.

Die nachfolgende Methode startet beispielsweise einen Prozess, dessen Name als Parameter an die Methode über geben wird. Dieser muss selbstverständlich auf dem TM1-Server vorhanden sein. Desweiteren wird der Methode dein Pfad übergeben. Dieser wird diesem Prozess als Parameter übergeben. So ist es beispielsweise möglich, bei einem Datenimport über einen TurboIntegrator-Prozess den beim Erstellen des Prozesses gesetzten Dateinamen zu überschreiben, um so nur einen Prozess zu haben, der beliebig viele Dateien mit Daten in einen Cube zu laden.

private void executeProcess(String proName, String file) {
	TM1Process tm1p = server.getProcess(proName);
	TM1Val pArray = TM1Val.makeArrayVal(1);
	pArray.addToArray(new TM1Val(file));
	TM1Val errorCode = tm1p.executeEx(pArray, true);
	if (!errorCode.getString().equals("")) {
		System.out.println("Err: "+errorCode.getString());
	}
}

Jeder Prozess den man über die Java-API ausführt erwartet ein Array von Parametern. Will man einen Prozess ausführen, der keine Parameter besitzt, so ersetzt man diese Zeile:

pArray.addToArray(new TM1Val(file));

durch diese Zeile:

pArray.addToArray(new TM1Val(null));

Wichtig ist nur, dass dem TM1Process-Objekt auf jeden Fall ein Array mit TM1Val-Objekten übergeben wird.

Veröffentlicht unter Cognos TM1 | Verschlagwortet mit , , , , , , , , , , | Hinterlasse einen Kommentar

Grundlegendes zur Cognos TM1 Java API

Um die Cognos TM1 Java API verwenden zu können, muss man zunächst das JAR-File der API dem gewünschten Java-Projekt hinzufügen. Dieses befindet sich z.B. hier: C:\Program Files\Cognos\TM1\bin\classes\TM1JavaApi.jar.

Ist dies geschehen kann man eine Verbindung per Java zum TM1-Server herstellen. Der nachfolgende Code demonstriert das:

import com.applix.tm1.*;
...
TM1Bean bean = new TM1Bean();
bean.setAdminHost("tm1AdminHost");
TM1Server server = bean.openConnection("tm1ServerName", "tm1UserName", "tm1UserPW");

Wenn sich der TM1-Server auf dem gleichen Rechner befindet ist es nicht nötig, den Admin Host zu setzten.

Über das Bean erhält man mit der Methode openConnection unter Angabe des Servernamen, eines Usernamen und des passenden Passworts ein Serverobjekt. Mit diesem kann man nun die gewünschten Operationen auf dem TM1-Server ausführen, wie beispielsweise das Erstellen von Dimensionen oder Cubes oder das Ausführen von Prozessen.

Wichtig beim Verwenden der Java-API ist es, das TM1-SSl-Zertifikat ins JRE zu integrieren, da es ansonsten zu einer SSL Certificate Exception kommt. Näheres zum Vorgehen dazu in diesem Artikel.

Veröffentlicht unter Cognos TM1 | Verschlagwortet mit , , , , , , , | Hinterlasse einen Kommentar

TM1-Forum

Unter nachfolgendem Link gibt es ein großartiges Cognos TM1 Forum für alle die sich näher mit der Materie befassen wollen oder müssen.

In den nächsten Tagen werde ich ein paar Programmbeispiele veröffentlichen, die sich näher mit der Java-API von Cognos TM1 befassen. Dabei geht es um das automatisierte erstellen, neuerstellen und laden von Datenwürfeln mitsamt ihrer Dimensionen.

Hier der Link zum Forum: www.tm1forum.com

Veröffentlicht unter Cognos TM1 | Verschlagwortet mit , , , , , , , | Hinterlasse einen Kommentar

TM1 Java API SSL Zertifikat

Um die TM1 Java API verwenden zu können muss man dem Java Runtime Environment (JRE) das TM1 SSL Zertifikat hinzufügen. Dabei geht man wie folgt vor:

  1. Kommandozeilen-Fenster öffnen (Start -> Ausführen -> “cmd”)
  2. Das Verzeichnis auf den bin Ordner seines JRE’s leiten (z.B. cd “C:\Program Files\java\jdk1.5.0_06\jre\bin”)
  3. Den folgenden Befehl ausführen:keytool -import -file “C:\Program Files\Cognos\TM1\bin\ssl\applixca.der” -keystore ..\lib\security\cacerts

Die Pfade sind an die eigene Umgebung anzupassen. Das Standardpasswort für den SSL-Manager ist: changeit

Quelle: Running in Secure Mode Using SSLTM1

Veröffentlicht unter Cognos TM1 | Verschlagwortet mit , , , , , , , , | Hinterlasse einen Kommentar

Parameter bei JMeter

Beim Erstellen von Lasttests mit JMeter kommt man gelegentlich in Situationen, bei denen man Seitenaufrufe mit unzähligen Parametern simulieren muss. Diese manuell einzutragen ist Zeitaufwändig und ermüdend. Hier lohnt es sich, sich mit dem gespeicherten Testplan von JMeter auseinander zu setzen. Dieser liegt als .jmx-Datei vor und ist nach XML-Strukturen aufgebaut.

In vielen Fällen geschieht die Simulation der Seitenaufrufe anhand von Protokollierungen des Traffics durch Tools wie beispielsweise Fiddler. Diese liefern sämtliche übertragenen Parameter und die übertragungsart (standartmäßig Post oder Get). Der Fiddler-Output eines Seitenaufrufes sieht beispielsweise so aus:

GET http://www.google.de/search?hl=de&source=hp&q=Wie+f%C3%BCgt+man+Parameter+in+JMeter+geschickt+ein&aq=f&aqi=&aql=&oq=&fp=4d9f1e7e21e257ea HTTP/1.1
Host: www.google.de
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Referer: http://www.google.de/
Cookie: PREF=ID=ba066cfb5e57109c:U=6b212b101f47784d:FF=0:
TM=1295956157:LM=1295956337:S=AoUcCTa0d1GBlEYT; NID=43=AHfuZhjXNVnP8Anb3hitIHrT9r9ysl_FwvhgPL31BBhzx2cIzufWd6nJY2Hb3eh3tg62w-tH-GO96i3Xx4SUuWYbpbWSEWcTGHlUdwhM4RaIEnoKR9jj2vprkNs42sNt

Dieser Beispielrequest zeigt eine Suchanfrage an www.google.de. Die Parameter werden per GET übertragen und befinden sich in der URL nach dem Fragezeichen. Möchte man nun diesen Aufruf simulieren, so kopiert man sich die Zeichenkette der Parameter in ein Script und lässt dieses die Erstellung der JMeter-Parameter übernehmen.

Das Script muss dazu folgende Aufgaben übernehmen:

  • Aufteilen der Parameter, die duch ein & getrennt sind
  • Aufteiler der einzelnen Parameter in Variablen und Wert
  • Jedes dieser Variable-Wert-Paare in einen JMeter-Parameter umwandeln

Das nachfolgende Beispiel zeigt den Aufbau eines JMeter-Parameters. Diese Struktur muss entstehen, um den Output des Scriptes direkt in die jmx-Datei übernehmen zu können.

	false
	Wert
	=
	true
	Variable

Im folgenden Programm wird den Anforderungen entsprechend für jedes Variable-Wert-Paar eine Zeile des Templates generiert und die Platzhalter werden ersetzt.

package main;

public class Generator {
	String template = "" +
			"false" +
			"<@< wert >@>" +
			"=" +
			"true" +
			"<@< name>@>" +
			"";

	public static void main(String[] args) {
		Generator g = new Generator();
		g.process();
	}

	private void process() {
		String parameterLine = "hl=de&source=hp&q=Wie+f%C3%BCgt+man+Parameter+in"
			+"+JMeter+geschickt+ein&aq=f&aqi=&aql=&oq=&fp=4d9f1e7e21e257ea";
		String[] parameterArray = parameterLine.split("&");
		String[] parameter;
		for(int i=1;i <= parameterArray.length;i++){
			//parameter[0] = Var parameter[1] = Value

			parameter = parameterArray[i].split("=");
			String buffer = "";
			buffer = template.replaceAll("<@< name >@>", parameter[0]);
			if (parameter.length > 1) {
				buffer = buffer.replaceAll("<@< wert >@>", parameter[1]);
			} else {
				buffer = buffer.replaceAll("<@< wert >@>", "");
			}
			System.out.println(buffer);
		}
	}
}
Veröffentlicht unter JMeter | Verschlagwortet mit , , , , , , , , , , , , | Hinterlasse einen Kommentar