Exemplo n.º 1
0
        /// <summary>
        ///     Construct representation of locked ExternalTask from corresponding entity.
        ///     During mapping variables will be collected,during collection variables will not be deserialized
        ///     and scope will not be set to local.
        /// </summary>
        /// <seealso cref=
        /// <seealso
        ///     cref="AbstractVariableScope#collectVariables(VariableMapImpl, Collection, boolean, boolean)" />
        /// </seealso>
        /// <param name="externalTaskEntity"> - source persistent entity to use for fields </param>
        /// <param name="variablesToFetch">
        ///     - list of variable names to fetch, if null then all variables will be fetched
        /// </param>
        /// <returns>
        ///     object with all fields copied from the ExternalTaskEntity, error details fetched from the
        ///     database and variables attached
        /// </returns>
        public static LockedExternalTaskImpl FromEntity(ExternalTaskEntity externalTaskEntity,
                                                        IList <string> variablesToFetch, bool deserializeVariables)
        {
            var result = new LockedExternalTaskImpl();

            result.id                 = externalTaskEntity.Id;
            result.topicName          = externalTaskEntity.TopicName;
            result.workerId           = externalTaskEntity.WorkerId;
            result.lockExpirationTime = externalTaskEntity.LockExpirationTime;
            result.retries            = externalTaskEntity.Retries;
            result.errorMessage       = externalTaskEntity.ErrorMessage;
            result.errorDetails       = externalTaskEntity.ErrorDetails;

            result.processInstanceId    = externalTaskEntity.ProcessInstanceId;
            result.executionId          = externalTaskEntity.ExecutionId;
            result.activityId           = externalTaskEntity.ActivityId;
            result.activityInstanceId   = externalTaskEntity.ActivityInstanceId;
            result.processDefinitionId  = externalTaskEntity.ProcessDefinitionId;
            result.processDefinitionKey = externalTaskEntity.ProcessDefinitionKey;
            result.tenantId             = externalTaskEntity.TenantId;
            result.priority             = externalTaskEntity.Priority;

            ExecutionEntity execution = externalTaskEntity.Execution;

            result.variables = new VariableMapImpl();
            execution.CollectVariables(result.variables, variablesToFetch, false, deserializeVariables);

            return(result);
        }
Exemplo n.º 2
0
        public override void Execute(IActivityExecution execution)
        {
            var executionEntity = (ExecutionEntity)execution;
            var provider        = context.Impl.Context.ProcessEngineConfiguration.ExternalTaskPriorityProvider;
            var priority        = provider.DeterminePriority(executionEntity, this, null);

            ExternalTaskEntity.CreateAndInsert(executionEntity, TopicName, priority);
        }
Exemplo n.º 3
0
 public virtual UserOperationLogContextEntryBuilder inContextOf(ExternalTaskEntity task, ExecutionEntity execution, ProcessDefinitionEntity definition)
 {
     if (execution != null)
     {
         inContextOf(execution);
     }
     else if (definition != null)
     {
         inContextOf(definition);
     }
     entry_Renamed.ExternalTaskId = task.Id;
     return(this);
 }
Exemplo n.º 4
0
        public virtual string Execute(CommandContext commandContext)
        {
            EnsureUtil.EnsureNotNull("externalTaskId", _externalTaskId);

            ExternalTaskEntity externalTask = commandContext.ExternalTaskManager.FindExternalTaskById(_externalTaskId);

            EnsureUtil.EnsureNotNull("No external ITask found with id " + _externalTaskId, "externalTask", externalTask);

            foreach (var checker in commandContext.ProcessEngineConfiguration.CommandCheckers)
            {
                checker.CheckReadProcessInstance(externalTask.ProcessInstanceId);
            }

            return(externalTask.ErrorDetails);
        }
Exemplo n.º 5
0
        public virtual object Execute(CommandContext commandContext)
        {
            EnsureUtil.EnsureNotNull("externalTaskId", ExternalTaskId);
            ValidateInput();

            ExternalTaskEntity externalTask = commandContext.ExternalTaskManager.FindExternalTaskById(ExternalTaskId);

            EnsureUtil.EnsureNotNull(typeof(NotFoundException), "Cannot find external ITask with id " + ExternalTaskId, "externalTask", externalTask);

            foreach (ICommandChecker checker in commandContext.ProcessEngineConfiguration.CommandCheckers)
            {
                checker.CheckUpdateProcessInstanceById(externalTask.ProcessInstanceId);
            }

            Execute(externalTask);

            return(null);
        }
Exemplo n.º 6
0
        public virtual Void execute(CommandContext commandContext)
        {
            EnsureUtil.ensureNotNull("externalTaskId", externalTaskId);
            validateInput();

            ExternalTaskEntity externalTask = commandContext.ExternalTaskManager.findExternalTaskById(externalTaskId);

            ensureNotNull(typeof(NotFoundException), "Cannot find external task with id " + externalTaskId, "externalTask", externalTask);

            foreach (CommandChecker checker in commandContext.ProcessEngineConfiguration.CommandCheckers)
            {
                checker.checkUpdateProcessInstanceById(externalTask.ProcessInstanceId);
            }

            writeUserOperationLog(commandContext, externalTask, UserOperationLogOperationType, getUserOperationLogPropertyChanges(externalTask));

            execute(externalTask);

            return(null);
        }
Exemplo n.º 7
0
        public override object Execute(CommandContext commandContext)
        {
            ValidateInput();

            ExternalTaskEntity externalTask = commandContext.ExternalTaskManager.FindExternalTaskById(ExternalTaskId);

            EnsureUtil.EnsureNotNull(typeof(NotFoundException), "Cannot find external ITask with id " + ExternalTaskId, "externalTask", externalTask);

            if (!WorkerId.Equals(externalTask.WorkerId))
            {
                throw new BadUserRequestException(ErrorMessageOnWrongWorkerAccess + "'. It is locked by worker '" + externalTask.WorkerId + "'.");
            }

            foreach (ICommandChecker checker in commandContext.ProcessEngineConfiguration.CommandCheckers)
            {
                checker.CheckUpdateProcessInstanceById(externalTask.ProcessInstanceId);
            }

            Execute(externalTask);

            return(null);
        }
Exemplo n.º 8
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testExternalTaskStacktraceBinary()
        public virtual void testExternalTaskStacktraceBinary()
        {
            // 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);

            ExternalTaskEntity externalTask = (ExternalTaskEntity)externalTaskService.createExternalTaskQuery().singleResult();

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

            // then
            checkBinary(byteArrayEntity);
        }
Exemplo n.º 9
0
 protected internal override object Execute(ExternalTaskEntity externalTask)
 {
     externalTask.Unlock();
     return(null);
 }
Exemplo n.º 10
0
 protected internal override object Execute(ExternalTaskEntity externalTask)
 {
     externalTask.Failed(ErrorMessage, ErrorDetails, Retries, RetryDuration);
     return(null);
 }
Exemplo n.º 11
0
 public virtual void consume(ExternalTaskEntity externalTask)
 {
     externalTasks_Renamed.remove(externalTask);
 }
Exemplo n.º 12
0
 protected internal override object Execute(ExternalTaskEntity externalTask)
 {
     externalTask.BpmnError(ErrorCode);
     return(null);
 }
Exemplo n.º 13
0
 public virtual void Consume(ExternalTaskEntity externalTask)
 {
     ExternalTasksRenamed.Remove(externalTask);
 }
Exemplo n.º 14
0
 public virtual void execute(ExternalTaskEntity externalTask)
 {
     externalTask.bpmnError(errorCode, errorMessage, variables);
 }
Exemplo n.º 15
0
 protected internal override object Execute(ExternalTaskEntity externalTask)
 {
     externalTask.Priority = int.Parse(Priority.ToString());
     return(null);
 }
Exemplo n.º 16
0
 public virtual void execute(ExternalTaskEntity externalTask)
 {
     externalTask.complete(variables, localVariables);
 }
Exemplo n.º 17
0
 protected internal override object Execute(ExternalTaskEntity externalTask)
 {
     externalTask.RetriesAndManageIncidents = Retries;
     return(null);
 }
Exemplo n.º 18
0
 /// <summary>
 /// Executes the specific external task commands, which belongs to the current sub class.
 /// </summary>
 /// <param name="externalTask"> the external task which is used for the command execution </param>
 protected internal abstract void execute(ExternalTaskEntity externalTask);
Exemplo n.º 19
0
 protected internal virtual void writeUserOperationLog(CommandContext commandContext, ExternalTaskEntity externalTask, string operationType, IList <PropertyChange> propertyChanges)
 {
     if (!string.ReferenceEquals(operationType, null))
     {
         commandContext.OperationLogManager.logExternalTaskOperation(operationType, externalTask, propertyChanges == null || propertyChanges.Count == 0 ? Collections.singletonList(PropertyChange.EMPTY_CHANGE) : propertyChanges);
     }
 }
Exemplo n.º 20
0
 protected internal override IList <PropertyChange> getUserOperationLogPropertyChanges(ExternalTaskEntity externalTask)
 {
     return(Collections.singletonList(new PropertyChange("priority", externalTask.Priority, priority)));
 }
Exemplo n.º 21
0
 protected internal override void execute(ExternalTaskEntity externalTask)
 {
     externalTask.Priority = priority;
 }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 23
0
 protected internal virtual IList <PropertyChange> getUserOperationLogPropertyChanges(ExternalTaskEntity externalTask)
 {
     return(Collections.emptyList());
 }
Exemplo n.º 24
0
 /// <summary>
 ///     Executes the specific external ITask commands, which belongs to the current sub class.
 /// </summary>
 /// <param name="externalTask"> the external ITask which is used for the command execution </param>
 protected internal abstract object Execute(ExternalTaskEntity externalTask);
Exemplo n.º 25
0
 public MigratingExternalTaskInstance(ExternalTaskEntity externalTask,
                                      MigratingActivityInstance migratingActivityInstance)
 {
     this.ExternalTask = externalTask;
     this.MigratingActivityInstance = migratingActivityInstance;
 }
Exemplo n.º 26
0
 protected internal override void execute(ExternalTaskEntity externalTask)
 {
     externalTask.RetriesAndManageIncidents = retries;
 }
Exemplo n.º 27
0
 protected internal override IList <PropertyChange> getUserOperationLogPropertyChanges(ExternalTaskEntity externalTask)
 {
     if (writeUserOperationLog)
     {
         return(Collections.singletonList(new PropertyChange("retries", externalTask.Retries, retries)));
     }
     return(base.getUserOperationLogPropertyChanges(externalTask));
 }
Exemplo n.º 28
0
 protected internal override object Execute(ExternalTaskEntity externalTask)
 {
     externalTask.Complete(Variables);
     return(null);
 }