2016-03-02 95 views
3

后Pentaho的变换使用水壶勺子5.1,我有一个变换:继续回滚

  1. 拉从一个数据库(Oracle)的一排
  2. 将该行发送到一个REST API(通过REST 客户端)
  3. 使用Switch/Case步骤查看结果。如果结果是好的,我从数据库中删除记录(Execute SQL),否则,我回滚事务

请注意,回滚取决于结果而不一定是错误/异常。 如果一个特定的事务回滚,我仍然想继续处理其他行(不希望变换停止)。

两个问题:

  1. 有没有干净的方式来强制回滚? (目前我有一个“扔”
  2. 如何强制事务回滚后继续一个javascript一步?

回答

2

在一个转型,Pentaho的流内同时处理行,都在。同样的事务回滚单行,你需要一个单独的事务的每一行,这Pentaho的不支持

我建议用另一种方法来达到同样的效果有两种可能:。

  1. 不要制作数据库直到接收到REST结果之后。那样,没有东西可以回滚。当然,您可以在内存中(在流式字段中)或临时数据库表中进行更改,以便您确切知道它们会是什么。
  2. 以某种方式跟踪您所做的数据库更改,以便在REST结果表明您应该这样做时撤消它们。根据您的工作方式,您可以跟踪流字段或临时数据库表中的更改。