Beispiel #1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: protected void performNotification(final org.camunda.bpm.engine.delegate.DelegateExecution execution, java.util.concurrent.Callable<Void> notification) throws Exception
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
        protected internal virtual void performNotification(DelegateExecution execution, Callable <Void> notification)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.application.ProcessApplicationReference processApp = org.camunda.bpm.engine.impl.context.ProcessApplicationContextUtil.getTargetProcessApplication((org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity) execution);
            ProcessApplicationReference processApp = ProcessApplicationContextUtil.getTargetProcessApplication((ExecutionEntity)execution);

            if (processApp == null)
            {
                // ignore silently
                LOG.noTargetProcessApplicationForExecution(execution);
            }
            else
            {
                if (ProcessApplicationContextUtil.requiresContextSwitch(processApp))
                {
                    // this should not be necessary since context switch is already performed by OperationContext and / or DelegateInterceptor
                    Context.executeWithinProcessApplication(notification, processApp, new InvocationContext(execution));
                }
                else
                {
                    // context switch already performed
                    notification.call();
                }
            }
        }
 protected internal virtual bool IsSymptomOfContextSwitchFailure(System.Exception t, ExecutionEntity contextExecution)
 {
     //throw new NotImplementedException();
     // a context switch failure can occur, if the current engine has no PA registration for the deployment
     // subclasses may assert the actual throwable to narrow down the diagnose
     return(ProcessApplicationContextUtil.GetTargetProcessApplication(contextExecution) == null);
 }
Beispiel #3
0
                public ProcessApplicationReference execute(CommandContext commandContext)
                {
                    ProcessEngineConfigurationImpl configuration = commandContext.ProcessEngineConfiguration;
                    DeploymentCache deploymentCache = configuration.DeploymentCache;
                    DecisionRequirementsDefinitionEntity definition = deploymentCache.findDeployedDecisionRequirementsDefinitionById(definitionId);

                    return(ProcessApplicationContextUtil.getTargetProcessApplication(definition));
                }
Beispiel #4
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: @Override public Void execute(final org.camunda.bpm.engine.impl.interceptor.CommandContext commandContext)
        public override Void execute(CommandContext commandContext)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.util.Collection<String> processInstanceIds = collectProcessInstanceIds();
            ICollection <string> processInstanceIds = collectProcessInstanceIds();
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final java.util.List<AbstractProcessInstanceModificationCommand> instructions = builder.getInstructions();
            IList <AbstractProcessInstanceModificationCommand> instructions = builder.Instructions;

            ensureNotEmpty(typeof(BadUserRequestException), "Restart instructions cannot be empty", "instructions", instructions);
            ensureNotEmpty(typeof(BadUserRequestException), "Process instance ids cannot be empty", "Process instance ids", processInstanceIds);
            ensureNotContainsNull(typeof(BadUserRequestException), "Process instance ids cannot be null", "Process instance ids", processInstanceIds);

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.persistence.entity.ProcessDefinitionEntity processDefinition = getProcessDefinition(commandContext, builder.getProcessDefinitionId());
            ProcessDefinitionEntity processDefinition = getProcessDefinition(commandContext, builder.ProcessDefinitionId);

            ensureNotNull("Process definition cannot be found", "processDefinition", processDefinition);

            checkAuthorization(commandContext, processDefinition);

            if (writeUserOperationLog)
            {
                writeUserOperationLog(commandContext, processDefinition, processInstanceIds.Count, false);
            }

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final String processDefinitionId = builder.getProcessDefinitionId();
            string processDefinitionId = builder.ProcessDefinitionId;

            ThreadStart runnable = () =>
            {
                foreach (string processInstanceId in processInstanceIds)
                {
                    HistoricProcessInstance historicProcessInstance = getHistoricProcessInstance(commandContext, processInstanceId);

                    ensureNotNull(typeof(BadUserRequestException), "Historic process instance cannot be found", "historicProcessInstanceId", historicProcessInstance);
                    ensureHistoricProcessInstanceNotActive(historicProcessInstance);
                    ensureSameProcessDefinition(historicProcessInstance, processDefinitionId);

                    ProcessInstantiationBuilderImpl instantiationBuilder = getProcessInstantiationBuilder(commandExecutor, processDefinitionId);
                    applyProperties(instantiationBuilder, processDefinition, historicProcessInstance);

                    ProcessInstanceModificationBuilderImpl modificationBuilder = instantiationBuilder.ModificationBuilder;
                    modificationBuilder.ModificationOperations = instructions;

                    VariableMap variables = collectVariables(commandContext, historicProcessInstance);
                    instantiationBuilder.Variables = variables;

                    instantiationBuilder.execute(builder.SkipCustomListeners, builder.SkipIoMappings);
                }
            };

            ProcessApplicationContextUtil.doContextSwitch(runnable, processDefinition);

            return(null);
        }
Beispiel #5
0
 protected internal virtual bool shouldPerformPaContextSwitch(DelegateExecution execution)
 {
     if (execution == null)
     {
         return(false);
     }
     else
     {
         ProcessApplicationReference targetPa = ProcessApplicationContextUtil.getTargetProcessApplication((ExecutionEntity)execution);
         return(targetPa != null && !targetPa.Equals(Context.CurrentProcessApplication));
     }
 }
Beispiel #6
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: protected <T> T performContextSwitch(final java.util.concurrent.Callable<T> callable)
        protected internal virtual T performContextSwitch <T>(Callable <T> callable)
        {
            ProcessApplicationReference targetProcessApplication = ProcessApplicationContextUtil.getTargetProcessApplication(deploymentId);

            if (targetProcessApplication != null)
            {
                return(Context.executeWithinProcessApplication(new CallableAnonymousInnerClass(this, callable)
                                                               , targetProcessApplication));
            }
            else
            {
                return(doCall(callable));
            }
        }
Beispiel #7
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET:
//ORIGINAL LINE: @Override public void signal(final org.camunda.bpm.engine.impl.pvm.delegate.ActivityExecution execution, final String signalName, final Object signalData) throws Exception
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
        public virtual void signal(ActivityExecution execution, string signalName, object signalData)
        {
            ProcessApplicationReference targetProcessApplication = ProcessApplicationContextUtil.getTargetProcessApplication((ExecutionEntity)execution);

            if (ProcessApplicationContextUtil.requiresContextSwitch(targetProcessApplication))
            {
                Context.executeWithinProcessApplication(new CallableAnonymousInnerClass(this, execution, signalName, signalData)
                                                        , targetProcessApplication, new InvocationContext(execution));
            }
            else
            {
                doSignal(execution, signalName, signalData);
            }
        }
        //protected internal virtual T doCall<T>(Callable<T> callable)
        //{
        //    try
        //    {

        //        return callable.call();
        //    }
        //    catch (Exception e)
        //    {
        //        throw new ProcessEngineException(e);
        //    }
        //}

        //JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
        //ORIGINAL LINE: public void submitFormVariables(final org.camunda.bpm.engine.Variable.VariableMap properties, final org.camunda.bpm.engine.delegate.VariableScope variableScope)
        //public virtual void submitFormVariables(IVariableMap properties, IVariableScope variableScope)
        //{
        //    performContextSwitch(new CallableAnonymousInnerClass2(this, properties, variableScope));
        //}

        //JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
        //ORIGINAL LINE: protected <T> T performContextSwitch(final java.Util.concurrent.Callable<T> callable)
        protected internal virtual T PerformContextSwitch <T>(Func <T> callable)
        {
            IProcessApplicationReference targetProcessApplication = ProcessApplicationContextUtil.GetTargetProcessApplication(deploymentId);

            if (targetProcessApplication != null)
            {
                return(Context.ExecuteWithinProcessApplication(/*new CallableAnonymousInnerClass(this, callable),*/
                           callable, targetProcessApplication));
            }
            else
            {
                return(callable.Invoke());
            }
        }
Beispiel #9
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: public Object resolveDelegateClass(final org.camunda.bpm.engine.impl.pvm.delegate.ActivityExecution execution)
        public virtual object resolveDelegateClass(ActivityExecution execution)
        {
            ProcessApplicationReference targetProcessApplication = ProcessApplicationContextUtil.getTargetProcessApplication((ExecutionEntity)execution);

            if (ProcessApplicationContextUtil.requiresContextSwitch(targetProcessApplication))
            {
                return(Context.executeWithinProcessApplication(new CallableAnonymousInnerClass(this, execution)
                                                               , targetProcessApplication, new InvocationContext(execution)));
            }
            else
            {
                return(instantiateDelegateClass(execution));
            }
        }
        public virtual object ResolveDelegateClass(IActivityExecution execution)
        {
            IProcessApplicationReference targetProcessApplication = ProcessApplicationContextUtil.GetTargetProcessApplication((ExecutionEntity)execution);

            if (ProcessApplicationContextUtil.RequiresContextSwitch(targetProcessApplication))
            {
                return(Context.ExecuteWithinProcessApplication(
                           () => ResolveDelegateClass(execution), targetProcessApplication,
                           new InvocationContext(execution)));
            }
            else
            {
                return(InstantiateDelegateClass(execution));
            }
        }
Beispiel #11
0
 protected internal virtual IProcessApplicationReference GetContextProcessApplication()
 {
     if (TaskId != null)
     {
         return(ProcessApplicationContextUtil.GetTargetProcessApplication(GetTask()));
     }
     if (ExecutionId != null)
     {
         return(null);
     }
     if (CaseExecutionId != null)
     {
         return(null);
     }
     return(null);
 }
        protected internal virtual IProcessApplicationReference GetProcessApplicationForInvocation(
            DelegateInvocation invocation)
        {
            var contextExecution = invocation.ContextExecution;
            var contextResource  = invocation.ContextResource;

            if (contextExecution != null)
            {
                return(ProcessApplicationContextUtil.GetTargetProcessApplication(contextExecution as CoreExecution));
            }
            if (contextResource != null)
            {
                return(ProcessApplicationContextUtil.GetTargetProcessApplication(contextResource));
            }
            return(null);
        }
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: @Override public boolean validate(final Object submittedValue, final FormFieldValidatorContext validatorContext)
        public virtual bool Validate(object submittedValue, IFormFieldValidatorContext validatorContext)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.delegate.DelegateExecution execution = validatorContext.getExecution();
            var execution = validatorContext.Execution;

            if (ShouldPerformPaContextSwitch(validatorContext.Execution))
            {
                var processApplicationReference =
                    ProcessApplicationContextUtil.GetTargetProcessApplication((ExecutionEntity)execution);

                return
                    (Context.ExecuteWithinProcessApplication(() => DoValidate(submittedValue, validatorContext),
                                                             processApplicationReference, new InvocationContext(execution)));
            }
            return(DoValidate(submittedValue, validatorContext));
        }
Beispiel #14
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: @Override public boolean validate(final Object submittedValue, final FormFieldValidatorContext validatorContext)
        public virtual bool validate(object submittedValue, FormFieldValidatorContext validatorContext)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.delegate.DelegateExecution execution = validatorContext.getExecution();
            DelegateExecution execution = validatorContext.Execution;

            if (shouldPerformPaContextSwitch(validatorContext.Execution))
            {
                ProcessApplicationReference processApplicationReference = ProcessApplicationContextUtil.getTargetProcessApplication((ExecutionEntity)execution);

                return(Context.executeWithinProcessApplication(new CallableAnonymousInnerClass(this, submittedValue, validatorContext)
                                                               , processApplicationReference, new InvocationContext(execution)));
            }
            else
            {
                return(doValidate(submittedValue, validatorContext));
            }
        }
        public virtual void HandleInvocation(DelegateInvocation invocation)
        {
            var processApplication = GetProcessApplicationForInvocation(invocation);

            if ((processApplication != null) && ProcessApplicationContextUtil.RequiresContextSwitch(processApplication))
            {
                Context.ExecuteWithinProcessApplication <object>(() =>
                {
                    HandleInvocation(invocation);
                    return(null);
                },
                                                                 processApplication, new InvocationContext(invocation.ContextExecution));
            }
            else
            {
                HandleInvocationInContext(invocation);
            }
        }
Beispiel #16
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: public Void execute(final org.camunda.bpm.engine.impl.interceptor.CommandContext commandContext)
        public virtual Void execute(CommandContext commandContext)
        {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.persistence.entity.JobEntity job = commandContext.getJobManager().findJobById(jobId);
            JobEntity job = commandContext.JobManager.findJobById(jobId);

            ensureNotNull(typeof(NotFoundException), "No job found with id '" + jobId + "'", "job", job);

            // allow timer jobs only
            checkJobType(job);

            foreach (CommandChecker checker in commandContext.ProcessEngineConfiguration.CommandCheckers)
            {
                checker.checkUpdateJob(job);
            }

            // prepare recalculation
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.jobexecutor.TimerDeclarationImpl timerDeclaration = findTimerDeclaration(commandContext, job);
            TimerDeclarationImpl timerDeclaration = findTimerDeclaration(commandContext, job);
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.camunda.bpm.engine.impl.persistence.entity.TimerEntity timer = (org.camunda.bpm.engine.impl.persistence.entity.TimerEntity) job;
            TimerEntity timer      = (TimerEntity)job;
            DateTime    oldDuedate = job.Duedate;
            ThreadStart runnable   = () =>
            {
                timerDeclaration.resolveAndSetDuedate(timer.Execution, timer, creationDateBased);
            };

            // run recalculation in correct context
            ProcessDefinitionEntity contextDefinition = commandContext.ProcessEngineConfiguration.DeploymentCache.findDeployedProcessDefinitionById(job.ProcessDefinitionId);

            ProcessApplicationContextUtil.doContextSwitch(runnable, contextDefinition);

            // log operation
            IList <PropertyChange> propertyChanges = new List <PropertyChange>();

            propertyChanges.Add(new PropertyChange("duedate", oldDuedate, job.Duedate));
            propertyChanges.Add(new PropertyChange("creationDateBased", null, creationDateBased));
            commandContext.OperationLogManager.logJobOperation(org.camunda.bpm.engine.history.UserOperationLogEntry_Fields.OPERATION_TYPE_RECALC_DUEDATE, jobId, job.JobDefinitionId, job.ProcessInstanceId, job.ProcessDefinitionId, job.ProcessDefinitionKey, propertyChanges);

            return(null);
        }
        // Signallable activity behavior
        public override void Signal(IActivityExecution execution, string signalName, object signalData)
        {
            var targetProcessApplication =
                ProcessApplicationContextUtil.GetTargetProcessApplication((ExecutionEntity)execution);

            if (ProcessApplicationContextUtil.RequiresContextSwitch(targetProcessApplication))
            {
                Context.ExecuteWithinProcessApplication <object>(() =>
                {
                    Signal(execution, signalName, signalData);
                    return(null);
                }, targetProcessApplication,
                                                                 new InvocationContext(execution));
            }
            else
            {
                DoSignal(execution, signalName, signalData);
            }
        }
 protected internal virtual IProcessApplicationReference GetTargetProcessApplication(ExecutionEntity execution)
 {
     return(ProcessApplicationContextUtil.GetTargetProcessApplication(execution));
 }
Beispiel #19
0
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET:
//ORIGINAL LINE: protected <T> void executeInContext(final Runnable runnable, org.camunda.bpm.engine.impl.persistence.entity.ProcessDefinitionEntity contextDefinition)
        protected internal virtual void executeInContext <T>(ThreadStart runnable, ProcessDefinitionEntity contextDefinition)
        {
            ProcessApplicationContextUtil.doContextSwitch(runnable, contextDefinition);
        }
Beispiel #20
0
        //protected internal virtual IProcessApplicationReference GetTargetProcessApplication(CaseExecutionEntity execution)
        //{
        //    return ProcessApplicationContextUtil.getTargetProcessApplication(execution);
        //}

        protected internal virtual bool RequiresContextSwitch(IProcessApplicationReference processApplicationReference)
        {
            return(ProcessApplicationContextUtil.RequiresContextSwitch(processApplicationReference));
        }