Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
Spring batch SpringBatch:如何根据我的读者结果使用decider?_Spring Batch - Fatal编程技术网

Spring batch SpringBatch:如何根据我的读者结果使用decider?

Spring batch SpringBatch:如何根据我的读者结果使用decider?,spring-batch,Spring Batch,我是新来的。我发现通过使用ExecutionContextPromotionListener,我可以设置键值对,并在以后的步骤中获取它们 <step id="step1">....</step> <decision id="decision1">.... /> 。。。。 .... /> 当我使用Tasklet而不是reader时,我做了以下几点: 在批处理配置文件中创建了ExecutionContextPromotionListener的bean,其

我是新来的。我发现通过使用
ExecutionContextPromotionListener
,我可以设置键值对,并在以后的步骤中获取它们

<step id="step1">....</step>
<decision id="decision1">.... />
。。。。
.... />
当我使用
Tasklet
而不是reader时,我做了以下几点:

  • 在批处理配置文件中创建了
    ExecutionContextPromotionListener
    的bean,其中包含预期的键

  • 已将
    侦听器注册到我的步骤

  • 将键值对放入my
    Tasklet
    中从
    chunkContext
    检索的
    executionContext
    中,如下所示:

  • 现在,
    决策器
    可以从步骤执行上下文中读取如下内容并作出决定


  • 但是,我想根据上一步的读者做出决定。那么,在我的决定中,如何从读者那里获得价值呢?还是我的方法错了。请建议。

    简单的方法是,您可以利用步骤中的执行上下文,并将值传递到下一步

    所以,在你的第一步,做一些像这样的事情

    // ...
    ExecutionContext stepContext = this.stepExecution.getExecutionContext();
    stepContext.put("DATA_KEY", dataToShare );
    
    然后,在下一步中,您可以使用执行上下文阅读此内容

    ExecutionContext jobContext = jobExecution.getExecutionContext();
    dataToShare = jobContext.get("DATA_KEY");
    

    您只需要管理这些键—您用于在第一步中输入并在下一步中读取的键

    简单的方法是,您可以利用步骤中的执行上下文,并将值传递到下一步

    所以,在你的第一步,做一些像这样的事情

    // ...
    ExecutionContext stepContext = this.stepExecution.getExecutionContext();
    stepContext.put("DATA_KEY", dataToShare );
    
    然后,在下一步中,您可以使用执行上下文阅读此内容

    ExecutionContext jobContext = jobExecution.getExecutionContext();
    dataToShare = jobContext.get("DATA_KEY");
    

    您只需要管理密钥—您用于在第一步中输入并在下一步中读取的密钥

    您希望读取器提供什么供下一个州的决策者使用?例如,从数据库中读取一些内容。如果找到->将其传递到下一步,并根据该步骤阅读其他内容->退出。类似这样的。你希望读者提供什么供下一个州的决策者使用?比如,从数据库中读取一些内容。如果找到->将其传递到下一步,并根据该步骤阅读其他内容->退出。像这样的。