public virtual HistoryEvent CreateHistoricExternalTaskLogFailedEvt(IExternalTask task)
        {
            HistoricExternalTaskLogEntity @event = InitHistoricExternalTaskLog((ExternalTaskEntity)task, ExternalTaskStateFields.Failed);

            @event.ErrorMessage = task.ErrorMessage;
            string errorDetails = ((ExternalTaskEntity)task).ErrorDetails;

            if (!string.ReferenceEquals(errorDetails, null))
            {
                @event.ErrorDetails = errorDetails;
            }
            return(@event);
        }
Beispiel #2
0
        public virtual string Execute(CommandContext commandContext)
        {
            EnsureUtil.EnsureNotNull("historicExternalTaskLogId", HistoricExternalTaskLogId);

            HistoricExternalTaskLogEntity @event =
                commandContext.HistoricExternalTaskLogManager.FindHistoricExternalTaskLogById(HistoricExternalTaskLogId);

            EnsureUtil.EnsureNotNull("No historic external ITask log found with id " + HistoricExternalTaskLogId,
                                     "historicExternalTaskLog", @event);

            foreach (var checker in commandContext.ProcessEngineConfiguration.CommandCheckers)
            {
                checker.CheckReadHistoricExternalTaskLog(@event);
            }

            return(@event.ErrorDetails);
        }
Beispiel #3
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testHistoricExternalTaskJobLogStacktraceBinary()
        public virtual void testHistoricExternalTaskJobLogStacktraceBinary()
        {
            // given
            testRule.deploy("org/camunda/bpm/engine/test/api/externaltask/oneExternalTaskProcess.bpmn20.xml");
            runtimeService.startProcessInstanceByKey("oneExternalTaskProcess");

            IList <LockedExternalTask> tasks = externalTaskService.fetchAndLock(5, WORKER_ID).topic(TOPIC_NAME, LOCK_TIME).execute();

            LockedExternalTask task = tasks[0];

            // submitting a failure (after a simulated processing time of three seconds)
            ClockUtil.CurrentTime = nowPlus(3000L);

            string errorMessage;
            string exceptionStackTrace;

            try
            {
                throw new RuntimeSqlException("test cause");
            }
            catch (Exception e)
            {
                exceptionStackTrace = ExceptionUtils.getStackTrace(e);
                errorMessage        = e.Message;
            }
            assertNotNull(exceptionStackTrace);

            externalTaskService.handleFailure(task.Id, WORKER_ID, errorMessage, exceptionStackTrace, 5, 3000L);

            HistoricExternalTaskLogEntity entity = (HistoricExternalTaskLogEntity)historyService.createHistoricExternalTaskLogQuery().errorMessage(errorMessage).singleResult();

            assertNotNull(entity);

            ByteArrayEntity byteArrayEntity = configuration.CommandExecutorTxRequired.execute(new GetByteArrayCommand(entity.ErrorDetailsByteArrayId));

            // then
            checkBinary(byteArrayEntity);
        }
        protected internal virtual HistoricExternalTaskLogEntity InitHistoricExternalTaskLog(ExternalTaskEntity entity, IExternalTaskState state)
        {
            HistoricExternalTaskLogEntity @event = new HistoricExternalTaskLogEntity();

            @event.TimeStamp      = ClockUtil.CurrentTime;
            @event.ExternalTaskId = entity.Id;
            @event.TopicName      = entity.TopicName;
            @event.WorkerId       = entity.WorkerId;

            @event.Priority = entity.Priority;
            @event.Retries  = entity.Retries;

            @event.ActivityId         = entity.ActivityId;
            @event.ActivityInstanceId = entity.ActivityInstanceId;
            @event.ExecutionId        = entity.ExecutionId;

            @event.ProcessInstanceId    = entity.ProcessInstanceId;
            @event.ProcessDefinitionId  = entity.ProcessDefinitionId;
            @event.ProcessDefinitionKey = entity.ProcessDefinitionKey;
            @event.TenantId             = entity.TenantId;
            @event.State = state.StateCode;

            return(@event);
        }