public void Execute(IActivityExecution execution) { var more = execution.Activity.FindOutgoingTransition("more"); var done = execution.Activity.FindOutgoingTransition("done"); var value = (int?)execution.GetVariable(_variableName); if (value == null) { execution.SetVariable(_variableName, _from); execution.LeaveActivityViaTransition(more); } else { value = value + 1; if (value < _to) { execution.SetVariable(_variableName, value); execution.LeaveActivityViaTransition(more); } else { execution.LeaveActivityViaTransition(done); } } }
public override void Execute(IActivityExecution execution) { Log.LogDebug("WaitStateUndoService执行Execute:", $"execution:{execution.GetType().Name} _counterName is null?:{(_counterName == null).ToString()}"); string variableName = (string)_counterName.GetValue(execution); object variable = execution.GetVariable(variableName); if (variable == null) { execution.SetVariable(variableName, (int?)1); } else { execution.SetVariable(variableName, ((int?)variable) + 1); } Log.LogDebug("WaitStateUndoService执行Execute完毕:", $"variable is null?:{(variable==null).ToString()}"); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: protected void handle(org.Camunda.bpm.engine.impl.pvm.delegate.ActivityExecution execution, String action) throws Exception protected internal virtual void handle(IActivityExecution execution, string action) { execution.SetVariable(action, true); string type = (string)execution.GetVariable("type"); if ("error".Equals(type, StringComparison.CurrentCultureIgnoreCase)) { throw new BpmnError("MyError"); } else if ("exception".Equals(type, StringComparison.CurrentCultureIgnoreCase)) { throw new MyBusinessException("MyException"); } else if ("leave".Equals(type, StringComparison.CurrentCultureIgnoreCase)) { execution.SetVariable("type", null); Leave(execution); } }
protected void PerformExecution(IActivityExecution execution, MethodInfo method, object obj) { ExecuteWithErrorPropagation(execution, () => { var args = new List <object>(); foreach (var fieldDeclaration in _fieldDeclarations) { var v = ((IExpression)fieldDeclaration.Value).GetValue(execution); args.Add(v); } var parameters = method.GetParameters(); if (parameters.Length > args.Count) { var j = args.Count; for (int i = 0; i < parameters.Length - j; i++) { if (parameters[j + i] .HasDefaultValue) { args.Add(parameters[j + i].DefaultValue); } } } object value = null; var tr = Context.CommandContext.CurrentTransaction; var oldTr = System.Transactions.Transaction.Current; try { if (tr != null) { Log.LogInfo("切换环境事务 Id:", tr.TransactionInformation.LocalIdentifier); System.Transactions.Transaction.Current = tr; } value = method.Invoke(obj, args.ToArray()); } catch (System.Exception ex) { Log.LogInfo("外部代码异常:", ex.Message); throw new ClassMethodDelegateException(string.Format("外部代码异常:{0}", ex.Message), ex); } finally { if (tr != null) { System.Transactions.Transaction.Current = oldTr; Log.LogInfo("还原环境事务 ", oldTr == null?"null":oldTr.TransactionInformation.LocalIdentifier); } } if (!ReferenceEquals(_resultVariable, null)) { execution.SetVariable(_resultVariable, value); } Leave(execution); }); }
protected override void PerformExecution(IActivityExecution execution) { ExecuteWithErrorPropagation(execution, () => { // getValue() can have side - effects, that's why we have to call it independently from the result variable var value = _expression.GetValue(execution); if (!ReferenceEquals(_resultVariable, null)) { execution.SetVariable(_resultVariable, value); } Leave(execution); }); }
protected override void PerformExecution(IActivityExecution execution) { ExecuteWithErrorPropagation(execution, () => { var invocation = new ScriptInvocation(script, execution); Context.ProcessEngineConfiguration.DelegateInterceptor.HandleInvocation(invocation); var result = invocation.InvocationResult; if (result != null && !ReferenceEquals(ResultVariable, null)) { execution.SetVariable(ResultVariable, result); } Leave(execution); }); }
protected internal virtual void executeEscalationHandler(EscalationEventDefinition escalationEventDefinition, ActivityExecutionMappingCollector activityExecutionMappingCollector) { var escalationHandler = escalationEventDefinition.EscalationHandler; var escalationScope = GetScopeForEscalation(escalationEventDefinition); IActivityExecution escalationExecution = activityExecutionMappingCollector.GetExecutionForScope(escalationScope); if (!ReferenceEquals(escalationEventDefinition.EscalationCodeVariable, null)) { escalationExecution.SetVariable(escalationEventDefinition.EscalationCodeVariable, Escalation.EscalationCode); } escalationExecution.ExecuteActivity(escalationHandler); }