Пакет получает неверный идентификатор исполнения - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь реализовать пакет Java с помощью JBOSS EAP 7.1.Когда я пытаюсь получить идентификатор выполнения внутри пакета, он дает неправильный идентификатор / один и тот же идентификатор выполнения для нескольких заданий /.Мой XML-файл выглядит следующим образом.Я звоню своему оператору с циклом.Затем мой пакет добавляет некоторые данные в таблицу.Когда я проверяю свою таблицу, она показывает неверный идентификатор выполнения.Таблица Job_execution и пошагового выполнения содержит правильные идентификаторы данных для каждого задания.Пожалуйста, помогите мне встать на правильный путь.Заранее спасибо.Мой XML-файл выглядит следующим образом.

<?xml version="1.0" encoding="UTF-8"?>
<job id="simpleBatchLet" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/jobXML_1_0.xsd"
    version="1.0">
    <step id="firstStep" >
        <batchlet ref="batchletOne"/>
    </step>
</job>  

вот мой оператор работы

public void startSeqBatch() {
        try {
            Long bId = com.getSeq("BAT_SEQ_TEST");
            Properties jobParameters = new Properties();
            jobParameters.setProperty("bId", bId.toString());
            JobOperator jobOperator = BatchRuntime.getJobOperator();
            Long executionId = jobOperator.start("simpleBatchLet", jobParameters);
            JobExecution jobExecution = jobOperator.getJobExecution(executionId);
        } catch (JobStartException ex) {
            FileLogger.error(getClass(), Func.prepareException4Log(ex));
        } catch (NoSuchJobException ex) {
            FileLogger.error(getClass(), Func.prepareException4Log(ex));
        } catch (JobSecurityException ex) {
            FileLogger.error(getClass(), Func.prepareException4Log(ex));
        } catch (Exception ex) {
            FileLogger.error(getClass(), Func.prepareException4Log(ex));
        }
    }

вот мой пакет

  @Named("batchletOne")
    @Stateless
    public class batchletOne extends AbstractBatchlet {
        @PersistenceContext
        EntityManager em;

        CommonRemote com;

        @Inject
        private JobContext jobContext;

        @Override
        public String process() throws Exception {
            try {
                executeTask(1L);
            } catch (Exception ex) {
                FileLogger.err("1_error_new_batch_process", ex.getMessage());
                return BatchStatus.FAILED.toString();
            } 
            return BatchStatus.COMPLETED.toString();
        }

        public void executeTask(Long stepId) {
            try {

                JobOperator operator = BatchRuntime.getJobOperator();
                Long execId = jobContext.getExecutionId();
                Long bId = Func.toLong(operator.getParameters(execId).get("bId"));  

                BatSeqTest c = new BatSeqTest();
                c.setId(com.getSeq("BAT_SEQ_TEST_2"));
                c.setbid(bId);
                c.setStepid(stepId);
                c.setExecid(execId);

                c.setExecuteddate(new Date());
                c.setStatus(Func.toString(Thread.currentThread().getId()));
                em.persist(c);
            } catch (Exception ex) {
                FileLogger.err("1_error_new_batch_process", ex.getMessage());
            }
        }
    }
...