Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pentaho “点菜状态/水壶从属服务器状态”页面显示随机运行的状态,而不是最新运行的状态_Pentaho_Kettle - Fatal编程技术网

Pentaho “点菜状态/水壶从属服务器状态”页面显示随机运行的状态,而不是最新运行的状态

Pentaho “点菜状态/水壶从属服务器状态”页面显示随机运行的状态,而不是最新运行的状态,pentaho,kettle,Pentaho,Kettle,我试图以编程方式获取转换的特定执行的详细信息 到目前为止我所尝试的 我在上获得了水壶从属服务器/点菜机的状态 http://localhost:8282/kettle/status/ 在这个页面中,我可以单击所需的转换,然后转到另一个页面,该页面显示了详细信息,并且还有一个指向XML输出的链接,指向特定转换执行的当前状态。链接是这样的: http://localhost:8282/kettle/transStatus/?name=trans_name&id=Carte_Ob_ID&am

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

到目前为止我所尝试的

我在上获得了水壶从属服务器/点菜机的状态

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

http://localhost:8282/kettle/transStatus/?name=trans_name&id=Carte_Ob_ID&xml=y
<webresult>
<result>OK</result>
<message>Job started</message>
<id>549387d0-e621-4b6f-aa63-2783a2116e7c</id>
</webresult>
<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_Obj_ID。所以,我不能在URI中提供它。如果我改为尝试以下URI:

http://localhost:8282/kettle/transStatus/?name=trans_name&xml=y
然后我得到一个随机执行的状态。不是最新的或任何特定的

目标

我正在编写一个.NETGUI,其中包含以下代码

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管理员用户单击按钮即可运行转换

提前谢谢你的帮助。我从中得到了灵感

更新:

我看到了这个bug被修复的地方。我有PDI5.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可能有什么问题

请注意,以下内容对我来说很好。但是,它没有在结果中为我提供carte obj 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

对象ID决定了您希望看到的转换或作业的执行,因此您不能忽略它。
当您在Carte上执行转换时,ID将作为结果的一部分提供给您。

我使用Kettle with Carte调用作业执行。 例如,我可以使用如下url启动作业: 主机ip:host\u port/kettle/runJob/?job=job\u name&job\u param\u 1=123 然后我得到如下XML响应:

http://localhost:8282/kettle/transStatus/?name=trans_name&id=Carte_Ob_ID&xml=y
<webresult>
<result>OK</result>
<message>Job started</message>
<id>549387d0-e621-4b6f-aa63-2783a2116e7c</id>
</webresult>
<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>

好啊
工作开始了
549387d0-e621-4b6f-aa63-2783a2116e7c
标签id为我们提供了carte execution id,我们可以使用该id检查执行状态,如下所示: 主机ip:主机端口/水壶/作业状态/?名称=作业名称和id=549387d0-e621-4b6f-aa63-2783a2116e7c

或者,如果需要xml响应,只需在url中添加“&xml=y”主机ip:host\u port/kettle/jobStatus/?name=job\u name&id=549387d0-e621-4b6f-aa63-2783a2116e7c&xml=y

希望这有帮助

重要提示。 重要的是要注意启动作业的步骤,我们可以使用startJob或runJob。 区别在于startJob需要carte server中的现有作业。
当runJob启动一个新作业时,它是一个将在carte服务器中使用的作业,因为如果您的服务器重新启动,carte服务器将丢失所有作业/转换ID的历史记录

我看到您的URL命令非常庞大。 我认为最好使用文件存储库。通过这种方式,只需使用作业名称/转换名称,就可以使用更短的url运行作业。 要将存储库与carte一起使用,必须配置carte xml配置文件。 地雷被称为:carte-config.xml 其内容如下:

http://localhost:8282/kettle/transStatus/?name=trans_name&id=Carte_Ob_ID&xml=y
<webresult>
<result>OK</result>
<message>Job started</message>
<id>549387d0-e621-4b6f-aa63-2783a2116e7c</id>
</webresult>
<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>

我的点菜服务器
192.168.0.1
8081
N
簇
簇
项目存储管理员
然后我可以使用如下命令启动carte: sh carte.sh carte config.xml

当使用我的存储库设置启动carte时,我可以运行如下作业:
请注意,我不需要告诉carte作业的完整路径。

我正在通过Ketter公开的Web服务远程运行转换:是否有方法获取此特定转换执行的carte obj ID?结果中是否存在这种情况?executeTrans设计用于通过web服务将数据传递给浏览器等。因此,如果要公开转换的ID,必须自己编写。如果您想要ID,您可以让JavaScript步骤写入ID或使用runTrans方法(在任何情况下都会更容易)。非常感谢。我现在用更多信息更新了这个问题。你能帮忙吗。提前谢谢。@mattcasters-嗨,Matt,我在这里面临同样的问题;您能否更具体地说明如何在JavaScript中掌握转换步骤?特别是,您的链接显示了如何获得Servlet Print Writer,但step变量似乎是凭空出现的。你是如何和在哪里建造它的?谢谢