こんにちは、私は現在Spring Batchを初めて使用しています。そして、私は多くのことを検索しましたが、解決策を見つけることができないという問題に直面しています.私の要件は、N個のポリシーテンプレートを介してN個のフォルダーを処理することです.たとえば、最初のステップでは、フォルダー名が私のポリシーに従っているかどうか、2番目のステップでは、ポリシーテンプレートなどに従って、フォルダー内のファイルのMIMEタイプを分析します...ステップを適切に構成しました。この時点まで、その日は晴れていましたが、コントローラーメソッドから春のバッチに値を渡す必要がある時点で立ち往生しています。ユーザーが選択したフォルダーやデータベースからのポリシーテンプレートのように、私の質問はコントローラーからバッチ処理の最初のステップまでのオブジェクト。
以下は、バッチジョブに関する私の構成です。
applicationContext.xml
<!--Batch job configuration starts here-->
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"
p:jobRepository-ref="jobRepository"
p:taskExecutor-ref="taskExecutor"/>
<batch:job-repository id="jobRepository"
data-source="safeJNDI"
transaction-manager="transactionManager"
isolation-level-for-create="SERIALIZABLE"
max-varchar-length="1000"
/>
<bean id="jobOperator" class="org.springframework.batch.core.launch.support.SimpleJobOperator">
<property name="jobExplorer">
<bean class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean">
<property name="dataSource" ref="safeJNDI" />
</bean>
</property>
<property name="jobRepository" ref="jobRepository" />
<property name="jobLauncher" ref="jobLauncher" />
<property name="jobRegistry" ref="jobRegistry"/>
</bean>
<bean id="jobRegistry" class="org.springframework.batch.core.configuration.support.MapJobRegistry"/>
<batch:job id="templateMatchingJob" restartable="true">
<batch:listeners>
<batch:listener ref="templateMatchingJobListener"></batch:listener>
</batch:listeners>
<batch:step id="basicRuleCheckerStep">
<batch:tasklet ref="basicRuleCheckerTasklet" />
<batch:next on="COMPLETED" to="checkMainObjectStep" />
<batch:next on="FAILED" to="logAndShowErrorMessage" />
<batch:listeners>
<batch:listener ref="basicRuleCheckerListener"></batch:listener>
</batch:listeners>
</batch:step>
<batch:step id="checkMainObjectStep">
<batch:tasklet ref="mainObjectCheckerTasklet" />
<batch:next on="COMPLETED" to="checkDBXML" />
<batch:next on="FAILED" to="logAndShowErrorMessage" />
<batch:listeners>
<batch:listener ref="mainObjectCheckerListener"></batch:listener>
</batch:listeners>
</batch:step>
<batch:step id="checkDBXML">
<batch:tasklet ref="dbXMLCheckerTasklet" />
<batch:next on="COMPLETED" to="checkPDIXML" />
<batch:next on="FAILED" to="logAndShowErrorMessage" />
<batch:listeners>
<batch:listener ref="dbXMLCheckerListener"></batch:listener>
</batch:listeners>
</batch:step>
<batch:step id="checkPDIXML">
<batch:tasklet ref="pdiXMLCheckerTasklet" />
<!-- the next is enclosure checking -->
<batch:next on="COMPLETED" to="logAndShowErrorMessage" />
<batch:next on="FAILED" to="logAndShowErrorMessage" />
<batch:listeners>
<batch:listener ref="pdiXMLCheckerListener"></batch:listener>
</batch:listeners>
</batch:step>
<batch:step id="logAndShowErrorMessage">
<batch:tasklet ref="logAndShowErrorTasklet" />
<batch:listeners>
<batch:listener ref="logAndShowErrorListener"></batch:listener>
</batch:listeners>
</batch:step>
</batch:job>
<!--Tasklets for template Matching starts here-->
<bean id="basicRuleCheckerTasklet" class="com.hcdc.coedp.safe.domain.batch.templateMatching.BasicRuleCheckerTasklet"/>
<bean id="mainObjectCheckerTasklet" class="com.hcdc.coedp.safe.domain.batch.templateMatching.MainObjectCheckerTasklet">
</bean>
<bean id="pdiXMLCheckerTasklet" class="com.hcdc.coedp.safe.domain.batch.templateMatching.PDIXMLCheckerTasklet"/>
<bean id="dbXMLCheckerTasklet" class="com.hcdc.coedp.safe.domain.batch.templateMatching.DBXMLCheckerTasklet"/>
<bean id="logAndShowErrorTasklet" class="com.hcdc.coedp.safe.domain.batch.templateMatching.LogAndShowErrorTasklet"/>
<!--Tasklets for template Matching ends here-->
<!--Listeners for each step in Batch Template Matching starts here-->
<bean id="basicRuleCheckerListener" class="com.hcdc.coedp.safe.domain.batch.templateMatching.listener.BasicRuleCheckerListener"/>
<bean id="mainObjectCheckerListener" class="com.hcdc.coedp.safe.domain.batch.templateMatching.listener.MainObjectCheckerListener"/>
<bean id="pdiXMLCheckerListener" class="com.hcdc.coedp.safe.domain.batch.templateMatching.listener.PDIXMLCheckerListener"/>
<bean id="dbXMLCheckerListener" class="com.hcdc.coedp.safe.domain.batch.templateMatching.listener.DBXMLCheckerListener"/>
<bean id="logAndShowErrorListener" class="com.hcdc.coedp.safe.domain.batch.templateMatching.listener.LogAndShowErrorListener"/>
<bean id="templateMatchingJobListener" class="com.hcdc.coedp.safe.domain.batch.templateMatching.listener.TemplateMatchingJobListener" />
<!--Listeners for each step in Batch Template Matching ends here-->
以下は私のコントローラーメソッドです:
BatchJobController.java
@RequestMapping(value = "/decision/batch", method = RequestMethod.POST)
@ExceptionHandler(value = {GenericException.class})
public ModelAndView batchMoveFolder(@ModelAttribute(KEY_LOGGED_IN_USER) User whoLoggedIn, @RequestParam String action, ModelMap model, HttpServletRequest request)
{
//Getting the selected folder list
/** Details omitted for clarity**/
//Getting the templates available in database
/** Details omitted for clarity**/
//Starting the job
jobLauncher.run(job,new JobParametersBuilder().addDate(new Date()));
}
英語が下手で申し訳ありませんが、これ以上の言い方はできませんでした。