Carte Status / Kettle Slave Server Status页面显示随机运行的状态,而不是最新运行的状态

时间:2014-04-05 07:08:40

标签: pentaho kettle

我正在尝试以编程方式获取特定执行转换的详细信息

到目前为止我尝试了什么

我在

获取了Kettle Slave Server / Carte的状态
http://localhost:8282/kettle/status/

在此页面中,我可以单击所需的转换,然后转到另一个显示详细信息的页面,并且还有一个指向XML输出的链接,指向特定执行转换的当前状态。链接是这样的:

http://localhost:8282/kettle/transStatus/?name=trans_name&id=Carte_Ob_ID&xml=y

问题

我有一个最近已经多次运行的转换。对于特定的转换运行,我没有Carte_Obj_ID。所以,我无法在URI中提供它。如果我尝试使用以下URI:

http://localhost:8282/kettle/transStatus/?name=trans_name&xml=y

然后我得到随机执行的状态。不是最新的或任何特定的。

目标

我正在编写一个.net GUI,我有这个代码。

HttpWebRequest req = (HttpWebRequest)WebRequest.
                        Create(@"http://localhost:8282/kettle/transStatus/?
                                name=Trans_Name
                                &id=Carte_Obj_ID
                                &xml=y");
req.Method = "GET";
req.Credentials = new NetworkCredential("cluster", "cluster");                
resp = req.GetResponse();
xmlResultStream = resp.GetResponseStream();
StreamReader readStream = new StreamReader(xmlResultStream, Encoding.UTF8);
String a = readStream.ReadToEnd();

我打算获取转换的特定执行的状态XML,并允许非Pentaho管理员用户通过单击按钮来运行转换。

提前感谢您的帮助。我从this article获得灵感。

更新

我看到this old JIRA entry这个错误被认为是固定的。我有PDI 5.0试用版,不确定这个修复是否真的存在。

更新2:

根据下面的建议,我尝试运行转换并获取特定执行的carte对象ID(这样我就可以根据特定的对象ID运行其他操作(如transStatus等))。

我尝试了以下URI,但出现了意外错误:

http://localhost:8282/kettle/runTrans/?trans=
C:%2FProgram%20Files%2Fpentaho%2Fdesign-tools%2Fdata-integration%2Fsamples%2Ftransformations%2FCSV%20Input%20-%20Reading%20customer%20data%20v2.ktr
&FileName=C:%2FProgram%20Files%2Fpentaho%2Fdesign-tools%2Fdata-integration%2Fsamples%2Ftransformations%2Fcust.txt
&level=DebugLevel
&xml=y

此URI可能有什么问题?

请注意,以下对我来说很好。但是它没有给我结果中的菜单对象ID:

http://localhost:8282/kettle/executeTrans/?trans=
C:%2FProgram%20Files%2Fpentaho%2Fdesign-tools%2Fdata-integration%2Fsamples%2Ftransformations%2FCSV%20Input%20-%20Reading%20customer%20data%20v2.ktr
&FileName=C:%2FProgram%20Files%2Fpentaho%2Fdesign-tools%2Fdata-integration%2Fsamples%2Ftransformations%2Fcust.txt

3 个答案:

答案 0 :(得分:2)

我看到你的URL命令非常庞大。 我认为最好使用文件存储库。这样,只需使用作业名称/转换名称,就可以使用更短的URL运行作业。 要使用带有carte的存储库,您必须配置carte xml配置文件。 矿井被称为:carte-config.xml 它的内容是这样的:

<slave_config>
  <slaveserver>
    <name>My_carte_server</name>
    <hostname>192.168.0.1</hostname>
    <port>8081</port>
    <master>N</master>
    <username>cluster</username>
    <password>cluster</password>
  </slaveserver>
  <repository><name>ProjectsRepository</name><username>admin</username><password></password></repository>
</slave_config>

然后我可以用这样的命令启动carte:   sh carte.sh carte-config.xml

使用我的存储库设置启动carte时,我可以运行这样的作业: 的 http://192.168.0.1:8081/kettle/runJob?job=job_teste_1 请注意,我不需要告诉carte完整的工作路径。

答案 1 :(得分:1)

我正在使用Kettle with carte来调用作业执行。 例如,我可以使用这样的URL开始工作: 的 host_ip:host_port /水壶/ runJob /作业= JOB_NAME&安培; job_param_1 = 123 然后我得到这样的XML响应:

<webresult>
<result>OK</result>
<message>Job started</message>
<id>549387d0-e621-4b6f-aa63-2783a2116e7c</id>
</webresult>

标签 id 为我们提供了一个carte执行ID,我们可以使用它来检查执行状态,如下所示: 的 host_ip:host_port /水壶/ jobStatus /名称= JOB_NAME和ID = 549387d0-e621-4b6f-aa63-2783a2116e7c

或者如果您想要xml响应,只需将“&amp; xml = y”添加到网址: 的 host_ip:host_port /水壶/ jobStatus /名称= JOB_NAME和ID = 549387d0-e621-4b6f-aa63-2783a2116e7c&安培; XML = Y

希望这有帮助。

重要提示。 重要的是要注意开始一项工作,我们可以使用startJob或runJob。 不同之处在于startJob需要carte服务器中的现有作业。 runJob启动新作业并且是在carte服务器中使用的作业,因为如果您的服务器重新启动,则carte服务器会丢失作业/转换ID的所有历史记录

答案 2 :(得分:0)

对象ID确定您要查看的转换或作业的执行情况,因此您无法忽略它。 当您在Carte上执行转换时,ID将作为结果的一部分提供给您。