<commit_before><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:batch="http://www.springframework.org/schema/batch"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd">
		
	<!-- common tasklets defined in config-common-context.xml -->
	
	<!-- Define main job approval flow -->
	<batch:flow id="default.waspJob.flow.approvals.v1" >
	    <batch:step id="default.waspJob.step.started" next="default.waspJob.postSubmitApprovalTasks">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.NotifyStatusTasklet" scope="step">
					<constructor-arg name="outputMessageChannel" ref="wasp.channel.batch" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="status" value="STARTED" />
						</bean>
					</constructor-arg>
				</bean>
			</batch:tasklet>
		</batch:step>
		<batch:split id="default.waspJob.postSubmitApprovalTasks" task-executor="taskExecutor" >
			<batch:flow>
				<batch:step id="default.waspJob.step.quote">
					<batch:tasklet ref="listenForJobQuotedTasklet"/>
				</batch:step>
			</batch:flow>
			<batch:flow>
				<batch:step id="default.waspJob.step.piApprove">
					<batch:tasklet ref="listenForJobPiApproveTasklet" />
				</batch:step>
			</batch:flow>
			<batch:flow>
				<batch:step id="default.waspJob.step.daApprove">
					<batch:tasklet ref="listenForJobDaApproveTasklet" />
				</batch:step>
			</batch:flow>
			<batch:flow>
				<batch:step id="default.waspJob.step.fmApprove">
					<batch:tasklet ref="listenForJobFmApproveTasklet" />
				</batch:step>
			</batch:flow>
			<batch:next on="COMPLETED" to="default.waspJob.step.approved" />
			<batch:next on="FAILED" to="default.waspJob.step.rejected" />
			<batch:fail on="*"/> <!-- catch all -->
		</batch:split>
		<batch:step id="default.waspJob.step.approved" next="default.waspJob.step.listenForAllLibraryPreprocessComplete">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.NotifyStatusTasklet" scope="step">
					<constructor-arg name="outputMessageChannel" ref="wasp.channel.batch" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="status" value="ACCEPTED" />
						</bean>
					</constructor-arg>
				</bean>
			</batch:tasklet>
		</batch:step>
		<batch:step id="default.waspJob.step.rejected">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.NotifyStatusTasklet" scope="step">
					<constructor-arg name="outputMessageChannel" ref="wasp.channel.batch" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg  name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="status" value="ABANDONED" />
						</bean>
					</constructor-arg>
				</bean>
			</batch:tasklet>
		</batch:step>
		<batch:step id="default.waspJob.step.listenForAllLibraryPreprocessComplete" next="default.waspJob.step.launchSummarization">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.ListenForStatusTasklet" scope="step">
					<constructor-arg name="inputSubscribableChannel" ref="wasp.channel.notification.job" />
					<constructor-arg name="abortMonitoringChannel" ref="wasp.channel.notification.abort" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg  name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="task" value="#{jobTasks.DATA_PREPROCESSING_APPROVE}" />
							<property name="status" value="COMPLETED" />
						</bean>
					</constructor-arg>
					<property name="name" value="default.waspJob.step.listenForAllLibraryPreprocessComplete" />
				</bean>
			</batch:tasklet>
		</batch:step>
		<batch:step id="default.waspJob.step.launchSummarization" next="default.waspJob.step.listenForSummarizationComplete">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.SkipTasklet" />
			</batch:tasklet>
		</batch:step>
		<batch:step id="default.waspJob.step.listenForSummarizationComplete">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.NotifyStatusTasklet" scope="step">
					<constructor-arg name="outputMessageChannel" ref="wasp.channel.batch" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="status" value="COMPLETED" /><commit_msg>updated so job terminates when aggregation analysis done<commit_after><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:batch="http://www.springframework.org/schema/batch"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd">
		
	<!-- common tasklets defined in config-common-context.xml -->
	
	<!-- Define main job approval flow -->
	<batch:flow id="default.waspJob.flow.approvals.v1" >
	    <batch:step id="default.waspJob.step.started" next="default.waspJob.postSubmitApprovalTasks">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.NotifyStatusTasklet" scope="step">
					<constructor-arg name="outputMessageChannel" ref="wasp.channel.batch" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="status" value="STARTED" />
						</bean>
					</constructor-arg>
				</bean>
			</batch:tasklet>
		</batch:step>
		<batch:split id="default.waspJob.postSubmitApprovalTasks" task-executor="taskExecutor" >
			<batch:flow>
				<batch:step id="default.waspJob.step.quote">
					<batch:tasklet ref="listenForJobQuotedTasklet"/>
				</batch:step>
			</batch:flow>
			<batch:flow>
				<batch:step id="default.waspJob.step.piApprove">
					<batch:tasklet ref="listenForJobPiApproveTasklet" />
				</batch:step>
			</batch:flow>
			<batch:flow>
				<batch:step id="default.waspJob.step.daApprove">
					<batch:tasklet ref="listenForJobDaApproveTasklet" />
				</batch:step>
			</batch:flow>
			<batch:flow>
				<batch:step id="default.waspJob.step.fmApprove">
					<batch:tasklet ref="listenForJobFmApproveTasklet" />
				</batch:step>
			</batch:flow>
			<batch:next on="COMPLETED" to="default.waspJob.step.approved" />
			<batch:next on="FAILED" to="default.waspJob.step.rejected" />
			<batch:fail on="*"/> <!-- catch all -->
		</batch:split>
		<batch:step id="default.waspJob.step.approved" next="default.waspJob.step.listenForAnalysisComplete">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.NotifyStatusTasklet" scope="step">
					<constructor-arg name="outputMessageChannel" ref="wasp.channel.batch" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="status" value="ACCEPTED" />
						</bean>
					</constructor-arg>
				</bean>
			</batch:tasklet>
		</batch:step>
		<batch:step id="default.waspJob.step.rejected">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.NotifyStatusTasklet" scope="step">
					<constructor-arg name="outputMessageChannel" ref="wasp.channel.batch" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg  name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="status" value="ABANDONED" />
						</bean>
					</constructor-arg>
				</bean>
			</batch:tasklet>
		</batch:step>
		<batch:step id="default.waspJob.step.listenForAnalysisComplete" next="default.waspJob.step.notifyJobComplete">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.ListenForStatusTasklet" scope="step">
					<constructor-arg name="inputSubscribableChannel" ref="wasp.channel.notification.analysis" />
					<constructor-arg name="abortMonitoringChannel" ref="wasp.channel.notification.abort" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.AnalysisStatusMessageTemplate">
							<property name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="task" value="#{batchJobTasks.ANALYSIS_AGGREGATE}"/>
							<property name="status" value="COMPLETED" />
						</bean>
					</constructor-arg>
					<property name="name" value="default.waspJob.step.listenForAnalysisComplete" />
				</bean>
			</batch:tasklet>
		</batch:step>
		<batch:step id="default.waspJob.step.notifyJobComplete">
			<batch:tasklet>
				<bean class="edu.yu.einstein.wasp.daemon.batch.tasklets.NotifyStatusTasklet" scope="step">
					<constructor-arg name="outputMessageChannel" ref="wasp.channel.batch" />
					<constructor-arg name="messageTemplate">
						<bean class="edu.yu.einstein.wasp.integration.messages.templates.JobStatusMessageTemplate">
							<constructor-arg name="jobId" value="#{jobParameters[waspJobParameters.JOB_ID]}"/>
							<property name="status" value="COMPLETED" />
{'fraction_non_alphanumeric': 0.16209935121526098, 'fraction_numerical': 0.0017430037765081825, 'mean_word_length': 4.619151251360174, 'pattern_counts': {'":': 0, '<': 196, '<?xml version=': 2, '>': 196, 'https://': 0, 'lorem ipsum': 0, 'www.': 14, 'xml': 10}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1793440', 'n_tokens_mistral': 3994, 'n_tokens_neox': 3325, 'n_words': 399}