Talend:如何 return 来自 tESBProviderResponse 中 tRunJob 的值?
Talend: How to return values from tRunJob in tESBProviderResponse?
运行在 Web 服务中创建子作业时是否需要一些特殊的东西?
我知道我可以通过 tRunJob 的上下文传递值并通过 tRunJob 模式(通过 tBufferOutput 组件呈现)检索值。
但是,当从 Web 服务 运行 时,这似乎不起作用;即,调用包含 tESBProviderRequest 和 tESBProviderResponse 的服务的 tESBConsumer。通过 tRunJob 上下文传递值有效,但通过 tRunJob 模式检索值无效。在下面的输出中,"service_received_from_child" 输出显示来自 tRunJob 的空值。
[statistics] connecting to socket on port 3744
[statistics] connected
.------------------.
| client_passed_to_service |
|=----------------=|
|Id |
|=----------------=|
|a7d0b000000XamBAAS|
'------------------'
.------+------.
|client_received_from_service |
|=-----+-----=|
|Status|CaseId|
|=-----+-----=|
'------+------'
[statistics] disconnected
.------------------.
| child_received_from_service |
|=----------------=|
|Id |
|=----------------=|
|a7d0b000000XamBAAS|
'------------------'
.------------------------------------+----------.
| child_returned_to_service |
|=-----------------------------------+---------=|
|result |case_id |
|=-----------------------------------+---------=|
|Test: Received Id a7d0b000000XamBAAS|0987654321|
'------------------------------------+----------'
.------------------.
| service_passed_to_child |
|=----------------=|
|Id |
|=----------------=|
|a7d0b000000XamBAAS|
'------------------'
.------+-------.
|service_received_from_child |
|=-----+------=|
|result|case_id|
|=-----+------=|
|null |null |
'------+-------'
我构建了一个测试父作业来执行同一个子作业,它工作正常,通过 tRunJob 上下文传递值并从 tRunJob 模式检索值。在下面的输出中,"parent_received_from_child" 输出显示了 tRunJob 的正确结果。
[statistics] connecting to socket on port 4045
[statistics] connected
.------------------.
| child_received_from_parent |
|=----------------=|
|Id |
|=----------------=|
|a7d0b000000XamBAAS|
'------------------'
.------------------------------------+----------.
| child_returned_to_parent |
|=-----------------------------------+---------=|
|result |case_id |
|=-----------------------------------+---------=|
|Test: Received Id a7d0b000000XamBAAS|0987654321|
'------------------------------------+----------'
.------------------------------------+----------.
| parent_received_from_child |
|=-----------------------------------+---------=|
|result |case_id |
|=-----------------------------------+---------=|
|Test: Received Id a7d0b000000XamBAAS|0987654321|
'------------------------------------+----------'
[statistics] disconnected
找到答案了:输入流好像不能直接连接到tRunJob,必须先经过一个tFlowToIterate,再到tRunJob。进行此更改后,客户端会收到正确的值。
我猜是因为 Web 服务连续运行并且每个请求都是一个新的 "row" 通过流程所以需要迭代才能单独处理每个请求(?)
运行在 Web 服务中创建子作业时是否需要一些特殊的东西?
我知道我可以通过 tRunJob 的上下文传递值并通过 tRunJob 模式(通过 tBufferOutput 组件呈现)检索值。 但是,当从 Web 服务 运行 时,这似乎不起作用;即,调用包含 tESBProviderRequest 和 tESBProviderResponse 的服务的 tESBConsumer。通过 tRunJob 上下文传递值有效,但通过 tRunJob 模式检索值无效。在下面的输出中,"service_received_from_child" 输出显示来自 tRunJob 的空值。
[statistics] connecting to socket on port 3744
[statistics] connected
.------------------.
| client_passed_to_service |
|=----------------=|
|Id |
|=----------------=|
|a7d0b000000XamBAAS|
'------------------'
.------+------.
|client_received_from_service |
|=-----+-----=|
|Status|CaseId|
|=-----+-----=|
'------+------'
[statistics] disconnected
.------------------.
| child_received_from_service |
|=----------------=|
|Id |
|=----------------=|
|a7d0b000000XamBAAS|
'------------------'
.------------------------------------+----------.
| child_returned_to_service |
|=-----------------------------------+---------=|
|result |case_id |
|=-----------------------------------+---------=|
|Test: Received Id a7d0b000000XamBAAS|0987654321|
'------------------------------------+----------'
.------------------.
| service_passed_to_child |
|=----------------=|
|Id |
|=----------------=|
|a7d0b000000XamBAAS|
'------------------'
.------+-------.
|service_received_from_child |
|=-----+------=|
|result|case_id|
|=-----+------=|
|null |null |
'------+-------'
我构建了一个测试父作业来执行同一个子作业,它工作正常,通过 tRunJob 上下文传递值并从 tRunJob 模式检索值。在下面的输出中,"parent_received_from_child" 输出显示了 tRunJob 的正确结果。
[statistics] connecting to socket on port 4045
[statistics] connected
.------------------.
| child_received_from_parent |
|=----------------=|
|Id |
|=----------------=|
|a7d0b000000XamBAAS|
'------------------'
.------------------------------------+----------.
| child_returned_to_parent |
|=-----------------------------------+---------=|
|result |case_id |
|=-----------------------------------+---------=|
|Test: Received Id a7d0b000000XamBAAS|0987654321|
'------------------------------------+----------'
.------------------------------------+----------.
| parent_received_from_child |
|=-----------------------------------+---------=|
|result |case_id |
|=-----------------------------------+---------=|
|Test: Received Id a7d0b000000XamBAAS|0987654321|
'------------------------------------+----------'
[statistics] disconnected
找到答案了:输入流好像不能直接连接到tRunJob,必须先经过一个tFlowToIterate,再到tRunJob。进行此更改后,客户端会收到正确的值。
我猜是因为 Web 服务连续运行并且每个请求都是一个新的 "row" 通过流程所以需要迭代才能单独处理每个请求(?)