Exemple #1
0
        public async Task ProcessItemsAsync()
        {
            while (Items.Count > 0)
            {
                var item = Dequeue();
                if (item == null)
                {
                    continue;
                }

                try
                {
                    _logger.LogTrace($"Processing work item {item.ToString()}");

                    TriggerResult triggerResult = await ProcessItemAsync(item);

                    await this.HandleTriggerResult(triggerResult, item);
                }
                catch (Exception ex)
                {
                    _logger.LogError("Processing work item failed", ex, item);
                    item.Error = $"{ex.Message} - {ex.StackTrace}";
                    item.Retries++;

                    Enqueue(item);
                }
            }

            await Task.CompletedTask;
        }
        public void TriggerResult_NewInstanceWithVariables_CreatesANewInstance()
        {
            // Arrange
            var      trigger  = "SwitchOn";
            Switcher switcher = new Switcher
            {
                Type = OnOffWorkflow.TYPE
            };
            var transitionContext = new TransitionContext(switcher);
            var variable          = new SwitcherWorkflowVariable(true);

            transitionContext.SetVariable <SwitcherWorkflowVariable>(
                SwitcherWorkflowVariable.KEY,
                variable);
            var canTrigger = true;

            // Act
            var result = new TriggerResult(trigger, transitionContext, canTrigger);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.CanTrigger);
            Assert.IsFalse(result.IsAborted);
            Assert.AreSame(result.TriggerName, trigger);
            Assert.IsFalse(result.HasErrors);
            Assert.AreSame(result.CurrentState, switcher.State);

            var v = result.GetVariable <SwitcherWorkflowVariable>(SwitcherWorkflowVariable.KEY);

            Assert.IsNotNull(v);
            Assert.IsTrue(v.CanSwitch);
        }
Exemple #3
0
        public async Task <TriggerResult> CheckLinkedSecurityUser(EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
        {
            foreach (var entity in entities)
            {
                entity.Name = entity.FirstName + " " + entity.LastName;
                SecurityUser user = await SecurityUser.SelectByKey(entity.Id);

                if (user == null)
                {
                    user = new SecurityUser()
                    {
                        Id    = entity.Id,
                        Name  = entity.Name,
                        Email = entity.Email
                    };
                    await user.ApplyAsync();
                }
                else
                {
                    if (user.Name != entity.Name || user.Email != entity.Email)
                    {
                        user.StartTracking();
                        user.Name  = entity.Name;
                        user.Email = entity.Email;
                        await user.ApplyAsync();
                    }
                }

                await EmployeeBusiness.CheckDefaultRole(user.Id, "Users");
            }
            return(TriggerResult.Success());
        }
        public void it_should_not_be_possible_to_change_EventIds()
        {
            HttpResponseMessage response = Substitute.For<HttpResponseMessage>();
            response.StatusCode = HttpStatusCode.OK;
            response.Content = new StringContent(TriggerResultHelper.TRIGGER_RESPONSE_JSON);
            var triggerResult = new TriggerResult(response, TriggerResultHelper.TRIGGER_RESPONSE_JSON);

            triggerResult.EventIds.Add("fish", "pie");
        }
Exemple #5
0
        public void it_should_not_be_possible_to_change_EventIds()
        {
            HttpResponseMessage response = Substitute.For <HttpResponseMessage>();

            response.StatusCode = HttpStatusCode.OK;
            response.Content    = new StringContent(TriggerResultHelper.TRIGGER_RESPONSE_JSON);
            var triggerResult = new TriggerResult(response, TriggerResultHelper.TRIGGER_RESPONSE_JSON);

            triggerResult.EventIds.Add("fish", "pie");
        }
Exemple #6
0
        public TriggerResult Trigger(TriggerParam param)
        {
            if (param == null)
            {
                throw new InvalidOperationException(nameof(param));
            }

            var entity = param.Instance as IEntityWorkflow;

            if (entity == null)
            {
                throw new Exception("No entity given!");
            }

            TriggerResult result = null;

            using (var transaction = this._context.Database.BeginTransaction())
            {
                try
                {
                    Workflow workflow = null;

                    var execution = GetExecution(param.Instance.Type);

                    _context.SaveChanges(); // so entity id gets resolved!

                    workflow = FindOrCreate(
                        entity.Id,
                        param.Instance.Type,
                        param.Instance.State,
                        entity.Assignee
                        );

                    result = execution.Trigger(param);
                    if (!result.IsAborted)
                    {
                        PersistWorkflow(workflow, param);

                        _context.SaveChanges();
                        transaction.Commit();
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    _logger.LogError(
                        $"Error in triggering: {param.Instance.Type}, EntityId: {entity.Id}",
                        ex.StackTrace
                        );
                }
            }

            return(result);
        }
Exemple #7
0
        private async Task <TriggerResult> TriggerForPersistingInstance(TriggerParam param)
        {
            TriggerResult result;

            using (var transaction = this.repository.Database.BeginTransaction())
            {
                try
                {
                    Workflow workflow  = null;
                    var      execution = this.GetExecution(param.Instance.Type);
                    var      entity    = param.Instance as IWorkflowInstanceEntity;

                    await this.repository.ApplyChangesAsync(); // so entity id gets resolved!

                    workflow = await this.FindOrCreate(
                        entity.Id,
                        param.Instance.Type,
                        param.Instance.State
                        );

                    this.EnsureWorkflowVariables(workflow, param);

                    result = execution.Trigger(param);
                    if (!result.IsAborted)
                    {
                        await this.PersistWorkflow(workflow, param, result);

                        await this.repository.ApplyChangesAsync();

                        transaction.Commit();
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    this.logger.LogError(
                        "Trigger with TriggerParameter: {TriggerParameter} failed! {Exception}",
                        LogHelper.SerializeObject(param),
                        ex
                        );

                    var transitionContext = new TransitionContext(param.Instance);
                    transitionContext.AddError(ex.ToString());

                    result = new TriggerResult(
                        param.TriggerName,
                        transitionContext,
                        false
                        );
                }
            }

            return(result);
        }
Exemple #8
0
        private async Task PersistWorkflow(
            Workflow workflow,
            TriggerParam param,
            TriggerResult result
            )
        {
            if (workflow == null)
            {
                throw new ArgumentNullException(nameof(workflow));
            }

            // persisting workflow variables
            if (param.HasVariables)
            {
                foreach (var v in param.Variables)
                {
                    var variable = workflow.WorkflowVariables
                                   .FirstOrDefault(variables => variables.Type == v.Key);

                    if (variable != null)
                    {
                        variable.Content = JsonConvert.SerializeObject(v.Value);
                    }
                    else
                    {
                        workflow.AddVariable(v.Value);
                    }
                }
            }

            // keeping workflow entity nsync
            var entity           = param.Instance as IWorkflowInstanceEntity;
            var assignableEntity = param.Instance as IAssignableWorkflow;

            if (entity != null)
            {
                workflow.Type     = entity.Type;
                workflow.Assignee = assignableEntity.Assignee;

                workflow.AddHistoryItem(workflow.State, entity.State, this.userContext.UserName);
                workflow.State = entity.State;
            }

            // treating AutoTrigger
            if (result.HasAutoTrigger)
            {
                this.repository.AddAutoTrigger(result.AutoTrigger, entity);
            }

            if (await this.WorkflowIsCompleted(param))
            {
                workflow.Completed = SystemTime.Now();
            }
        }
        /// <summary>
        /// Execute
        /// </summary>
        /// <returns></returns>
        public TriggerResult Execute()
        {
            if (Operators.DefaultArg(botTriggerParameters.GetParameter <bool>("execute"), false))
            {
                FSharpList <MyBotParameter> myBotParameters = FSharpList <MyBotParameter> .Cons(new MyBotParameter("OpenBetPosition.Stake", 2.0), FSharpList <MyBotParameter> .Empty);

                return(TriggerResult.NewExecuteActionBotOnSelectionWithParameters(selection, myBotParameters));
            }

            return(TriggerResult.EndExecution);
        }
Exemple #10
0
        public async Task <ActionResult> DisplayTriggerResult()
        {
            var result = await _repository.CreateTrigger();

            var model = new TriggerResult
            {
                Result = result
            };

            return(View(model));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        protected MarkupString FormatterResult(TriggerResult result)
        {
            var content = result switch
            {
                TriggerResult.Success => ("success", "成功"),
                TriggerResult.Error => ("danger", "故障"),
                TriggerResult.Cancelled => ("info", "取消"),
                TriggerResult.Timeout => ("warning", "超時"),
                _ => ("info", "未設置")
            };

            return(new MarkupString($"<button class=\"btn btn-sm btn-{content.Item1}\"><span>{content.Item2}<span></button>"));
        }
Exemple #12
0
        public void CanTrigger_InitialStateIsOff_CanTriggerToStateOn()
        {
            // Arrange
            Switcher switcher = new Switcher
            {
                Type = OnOffWorkflow.TYPE
            };

            WorkflowExecution execution = new WorkflowExecution(new OnOffWorkflow());

            // Act
            TriggerResult result = execution.CanTrigger(new TriggerParam("SwitchOn", switcher));

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(true, result.CanTrigger);
        }
Exemple #13
0
        private WorkflowTriggerInfo ToWorkflowTriggerInfo(Holiday holiday, TriggerResult result = null)
        {
            WorkflowTriggerInfo info;

            if (result == null || !result.HasErrors)
            {
                IEnumerable <TriggerResult> triggerResults = this._workflowEngine.GetTriggers(holiday);
                var triggers = triggerResults.Select(x => x.TriggerName);
                info = WorkflowTriggerInfo.createForSuccess(triggers);
            }
            else
            {
                info = WorkflowTriggerInfo.createForError(result.Errors);
            }

            return(info);
        }
Exemple #14
0
        public async Task <TriggerResult> SetFields(EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
        {
            DynamicEntity fields = options as DynamicEntity;

            if (fields != null)
            {
                foreach (DynamicEntity entity in entities)
                {
                    foreach (var field in fields.Dictionary)
                    {
                        entity.TrySetMember(field.Key, await ReplaceVariable(field.Value, model));
                    }
                }
            }

            return(TriggerResult.Success());
        }
Exemple #15
0
        public void Trigger_InitialStateIsOff_StateIsOn()
        {
            // Arrange
            Switcher switcher = new Switcher
            {
                Type = OnOffWorkflow.TYPE
            };
            WorkflowExecution execution = new WorkflowExecution(new OnOffWorkflow());

            // Act
            TriggerResult result = execution.Trigger(new TriggerParam("SwitchOn", switcher));

            // Assert
            Assert.IsNotNull(switcher);
            Assert.AreEqual("On", result.CurrentState);

            Assert.IsNotNull(result);
            Assert.AreEqual("SwitchOn", result.TriggerName);
        }
Exemple #16
0
        private async Task HandleTriggerResult(TriggerResult triggerResult, WorkItem item)
        {
            if (triggerResult.HasErrors || triggerResult.IsAborted)
            {
                item.Error = string.Join(" - ", triggerResult.Errors);
                _logger.LogError("HandleTriggerResult", item.Error, triggerResult);

                item.Retries++;
                Enqueue(item);
            }
            else
            {
                if (item.Id > 0)
                {
                    // Delete it from db if it was once persisted!
                    await DeleteWorkItem(item);
                }
            }
        }
    public static TriggerResult CheckTrigger(IBehaviorExecutionContext context)
    {
        var result = new TriggerResult {Active = false};

        if (context != null && !ExecutionComplete)
        {
            var gestureInfoList = context.GetGestureInfoList("Greet_Left");
var gestureInfo = gestureInfoList.FirstOrDefault(s=>s.Confidence > 90);
if (gestureInfo.Active && gestureInfo.Confidence > 90)
{
Console.WriteLine("Gesture trigger received : {0} - {1}", gestureInfo.Name, gestureInfo.Confidence);
result.HumanId = gestureInfo.HumanId;
result.HumanInLoop = true;
result.Active = true;
}

        }
        return result;
    }
            public void trigger(List <CommandParser.Command> commands, int fromIndex = 0)
            {
                for (int i = fromIndex; i < commands.Count; ++i)
                {
                    _asyncCommands     = null;
                    _asyncCommandIndex = -1;

                    TriggerResult result = trigger(commands[i].name, commands[i].args);
                    if (result == TriggerResult.Error)
                    {
                        break;
                    }
                    else if (result == TriggerResult.Async)
                    {
                        _asyncCommands     = commands;
                        _asyncCommandIndex = i + 1;
                        break;
                    }
                }
            }
Exemple #19
0
        public void Trigger_InitialStateIsOn_StateIsOff()
        {
            // Arrange
            Switcher switcher = new Switcher
            {
                Type  = OnOffWorkflow.TYPE,
                State = "On"
            };
            WorkflowExecution execution = new WorkflowExecution(new OnOffWorkflow());

            // Act
            TriggerResult result = execution.Trigger(new TriggerParam("SwitchOff", switcher));

            // Assert
            Assert.NotNull(switcher);
            Assert.Equal("Off", result.CurrentState);

            Assert.NotNull(result);
            Assert.Equal("SwitchOff", result.TriggerName);
            Assert.False(result.HasAutoTrigger);
        }
Exemple #20
0
        public static async Task <WorkflowTriggerInfo> ToWorkflowTriggerInfo(
            this IWorkflowEngineService workflowEngine,
            IWorkflow instance,
            TriggerResult result = null)
        {
            WorkflowTriggerInfo info;

            if (result == null || !result.HasErrors)
            {
                IEnumerable <TriggerResult> triggerResults = await workflowEngine.GetTriggersAsync(instance);

                var triggers = triggerResults.Select(x => x.TriggerName);
                info = WorkflowTriggerInfo.createForSuccess(triggers);
            }
            else
            {
                info = WorkflowTriggerInfo.createForError(result.Errors);
            }

            return(info);
        }
        public void TriggerResult_NewInstance_CreatesANewInstance()
        {
            // Arrange
            var      trigger  = "SwitchOn";
            Switcher switcher = new Switcher
            {
                Type = OnOffWorkflow.TYPE
            };
            var transitionContext = new TransitionContext(switcher);
            var canTrigger        = true;

            // Act
            var result = new TriggerResult(trigger, transitionContext, canTrigger);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsTrue(result.CanTrigger);
            Assert.IsFalse(result.IsAborted);
            Assert.AreSame(result.TriggerName, trigger);
            Assert.IsFalse(result.HasErrors);
            Assert.AreSame(result.CurrentState, switcher.State);
        }
Exemple #22
0
        private async Task HandleTriggerResult(TriggerResult triggerResult, WorkItem item)
        {
            if (triggerResult.HasErrors || triggerResult.IsAborted)
            {
                item.Error = string.Join(" - ", triggerResult.Errors);
                _logger.LogError(
                    "Bad TriggerResult: {TriggerResult}",
                    LogHelper.SerializeObject(triggerResult)
                    );

                item.Retries++;
                await Enqueue(item);
            }
            else
            {
                if (item.Id > 0)
                {
                    // Delete it from db if it was once persisted!
                    await DeleteWorkItem(item);
                }
            }
        }
Exemple #23
0
        public void CanTrigger_InitialStateIsOff_CanNotTriggerToStateOn()
        {
            // Arrange
            Switcher switcher = new Switcher
            {
                Type = OnOffWorkflow.TYPE
            };

            WorkflowExecution execution = new WorkflowExecution(new OnOffWorkflow());

            var variables = new Dictionary <string, WorkflowVariableBase>();
            var variable  = new SwitcherWorkflowVariable(false);

            variables.Add(SwitcherWorkflowVariable.KEY, variable);
            var triggerParam = new TriggerParam("SwitchOn", switcher, variables);

            // Act
            TriggerResult result = execution.CanTrigger(triggerParam);

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(false, result.CanTrigger);
        }
        public async Task ProcessItemsAsync()
        {
            _logger.LogTrace("Triggering job queue for doing work");

            while (Items.Count > 0)
            {
                var item = Dequeue();
                if (item == null)
                {
                    continue;
                }

                TriggerResult triggerResult = await ProcessItemAsync(item);

                if (triggerResult.HasErrors || triggerResult.IsAborted)
                {
                    _logger.LogError(
                        "ProcessingWorkItemFailed",
                        string.Join("-", triggerResult.Errors),
                        triggerResult
                        );

                    item.Retries++;
                    Enqueue(item);
                }
                else
                {
                    if (item.Id > 0)
                    {
                        // Delete it from db if it was once persisted!
                        await DeleteWorkItem(item);
                    }
                }
            }

            await Task.CompletedTask;
        }
Exemple #25
0
        public async Task <TriggerResult> InitDocument(EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
        {
            var user    = DWKitRuntime.Security.CurrentUser;
            var schemes = DWKitRuntime.Metadata.GetWorkflowByForm(model.Name);

            foreach (var entity in entities)
            {
                if (entity.Id == null)
                {
                    var initialState = schemes.Count == 0 ?
                                       new WorkflowState()
                    {
                         Name = "", SchemeCode = "", VisibleName = ""
                    } :
                    await WorkflowInit.Runtime.GetInitialStateAsync(schemes[0]);

                    entity.AuthorId  = user.GetOperationUserId();
                    entity.author    = user.GetOperationUserName();
                    entity.State     = initialState.Name;
                    entity.stateName = initialState.VisibleName;
                }
            }
            return(TriggerResult.Success());
        }
Exemple #26
0
        public async Task <TriggerResult> TriggerAsync(TriggerParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }

            _logger.LogTrace("TriggerAsync {Instance}", JsonConvert.SerializeObject(
                                 param.Instance,
                                 new JsonSerializerSettings
            {
                Formatting            = Formatting.Indented,
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            })
                             );

            var entity = param.Instance as IEntityWorkflow;

            if (entity == null)
            {
                // going the non EF way!
                var execution = GetExecution(param.Instance.Type);

                return(execution.Trigger(param));
            }

            TriggerResult result = null;

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    Workflow workflow  = null;
                    var      execution = GetExecution(param.Instance.Type);

                    await _context.SaveChangesAsync(); // so entity id gets resolved!

                    workflow = FindOrCreate(
                        entity.Id,
                        param.Instance.Type,
                        param.Instance.State,
                        entity.Assignee
                        );

                    EnsureWorkflowVariables(workflow, param);

                    result = execution.Trigger(param);
                    if (!result.IsAborted)
                    {
                        await PersistWorkflow(workflow, param);

                        await _context.SaveChangesAsync();

                        transaction.Commit();
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    _logger.LogError(
                        "TriggerAsync",
                        ex,
                        "TriggerAsync failed: {Param}",
                        JsonConvert.SerializeObject(param, new JsonSerializerSettings
                    {
                        Formatting            = Formatting.Indented,
                        ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                    })
                        );

                    var transitionContext = new TransitionContext(param.Instance);
                    transitionContext.AddError(ex.ToString());

                    result = new TriggerResult(
                        param.TriggerName,
                        transitionContext,
                        false
                        );
                }
            }

            return(result);
        }
    public bool ExecuteCyclic(IBehaviorExecutionContext context, TriggerResult trigger)
    {
        if (!CyclicActionsComplete && InitActionsComplete)
        {
            // CYCLIC_BLOCK
              var var_af0d9ba5_7f8e_6560_8d24_b70a9ba0510b= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("Taro, we received a stop command.", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_af0d9ba5_7f8e_6560_8d24_b70a9ba0510b);
  var var_3e5335a3_9a1f_a44a_be41_4d9a6ea6e64b= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Taro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("Yes, Let us go to rest position", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_3e5335a3_9a1f_a44a_be41_4d9a6ea6e64b);
  var var_aa5dbbc8_6eea_8066_b55f_b7d1125178e2 = new List<Task>();
  var var_71a15906_a3c2_8bd7_9262_a96cf5b603aa = new Action( () =>
  {
    var var_eba9448d_1a8b_7cea_9257_b15d34f07cc1= new BehaviorInfo
    {
    BehaviorName = "Take Rest",
    RobotName = "Hiro",Parameters = new Dictionary<string, object>()
    };

    BehaviorModuleHelper.Execute(context, var_eba9448d_1a8b_7cea_9257_b15d34f07cc1);

  });
  var var_67c4371e_7f29_7ef8_83de_ba7819f3b264 = new Action( () =>
  {
    var var_189a9b7e_37dc_f4b2_9a38_b8bdbc780275= new BehaviorInfo
    {
    BehaviorName = "Take Rest",
    RobotName = "Taro",Parameters = new Dictionary<string, object>()
    };

    BehaviorModuleHelper.Execute(context, var_189a9b7e_37dc_f4b2_9a38_b8bdbc780275);

  });
  var_aa5dbbc8_6eea_8066_b55f_b7d1125178e2.Add(Task.Run(var_71a15906_a3c2_8bd7_9262_a96cf5b603aa));
  var_aa5dbbc8_6eea_8066_b55f_b7d1125178e2.Add(Task.Run(var_67c4371e_7f29_7ef8_83de_ba7819f3b264));
  Task.WaitAll(var_aa5dbbc8_6eea_8066_b55f_b7d1125178e2.ToArray());
  System.Console.WriteLine("Parallel action execution complete");

            if (ExecutionLifetime == BehaviorExecutionLifetime.once)
            {
                CyclicActionsComplete = true;
            }
            else if (ExecutionLifetime == BehaviorExecutionLifetime.until)
            {
                var complete = ExecutionUntil(context);
                CyclicActionsComplete = !complete;
            }
        }
        return CyclicActionsComplete;
    }
    public bool ExecuteCyclic(IBehaviorExecutionContext context, TriggerResult trigger)
    {
        if (!CyclicActionsComplete && InitActionsComplete)
        {
            // CYCLIC_BLOCK
              var var_ebbaffde_15bc_9860_a6bf_509b6d6a59a6 = new List<Task>();
  var var_c9a06f4b_8778_dcec_bbc4_38221887afe2 = new Action( () =>
  {
    var var_58933fdd_5ef9_050e_8b8c_4bbd0c74246c= new BehaviorInfo{BehaviorName = "Dance",RobotName = "Hiro"};

    BehaviorModuleHelper.Execute(context, var_58933fdd_5ef9_050e_8b8c_4bbd0c74246c);

  });
  var var_b0843968_09f4_bf69_b462_30f80c3d6d92 = new Action( () =>
  {
    var var_73dea3ca_51c6_79be_8608_d6d0d2e3743b= new BehaviorInfo{BehaviorName = "Dance",RobotName = "Taro"};

    BehaviorModuleHelper.Execute(context, var_73dea3ca_51c6_79be_8608_d6d0d2e3743b);

  });
  var_ebbaffde_15bc_9860_a6bf_509b6d6a59a6.Add(Task.Run(var_c9a06f4b_8778_dcec_bbc4_38221887afe2));
  var_ebbaffde_15bc_9860_a6bf_509b6d6a59a6.Add(Task.Run(var_b0843968_09f4_bf69_b462_30f80c3d6d92));
  Task.WaitAll(var_ebbaffde_15bc_9860_a6bf_509b6d6a59a6.ToArray());
  System.Console.WriteLine("Parallel action execution complete");

            if (ExecutionLifetime == BehaviorExecutionLifetime.once)
            {
                CyclicActionsComplete = true;
            }
            else if (ExecutionLifetime == BehaviorExecutionLifetime.until)
            {
                var complete = ExecutionUntil(context);
                CyclicActionsComplete = !complete;
            }
        }
        return CyclicActionsComplete;
    }
    public bool ExecuteCyclic(IBehaviorExecutionContext context, TriggerResult trigger)
    {
        if (!CyclicActionsComplete && InitActionsComplete)
        {
            // CYCLIC_BLOCK
              var var_e13f4a25_80e3_f7f2_a729_20d6aee5d4ba= new BehaviorInfo
  {
  BehaviorName = "Move To",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"translation", BehaviorModuleHelper.CreateBehaviorParameterOptions("0", false, "float")},
  {"rotation", BehaviorModuleHelper.CreateBehaviorParameterOptions("1", false, "float")},
  {"human", BehaviorModuleHelper.CreateBehaviorParameterOptions("1", false, "float")},
  {"dist", BehaviorModuleHelper.CreateBehaviorParameterOptions(1.50, false, "float")},
  {"x", BehaviorModuleHelper.CreateBehaviorParameterOptions(0.0, true, "float")},
  {"y", BehaviorModuleHelper.CreateBehaviorParameterOptions(0.0, true, "float")},
  {"theta", BehaviorModuleHelper.CreateBehaviorParameterOptions(0.0, true, "float")}
  }
  };

  if (context.RefreshApproachParameters(var_e13f4a25_80e3_f7f2_a729_20d6aee5d4ba, trigger)) {
  BehaviorModuleHelper.Execute(context, var_e13f4a25_80e3_f7f2_a729_20d6aee5d4ba);
  }
  var var_32c9179f_0614_11f8_bd1a_a0649c1d0667= new BehaviorInfo
  {
  BehaviorName = "Move To",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"translation", BehaviorModuleHelper.CreateBehaviorParameterOptions("1", false, "float")},
  {"rotation", BehaviorModuleHelper.CreateBehaviorParameterOptions("0", false, "float")},
  {"human", BehaviorModuleHelper.CreateBehaviorParameterOptions("1", false, "float")},
  {"dist", BehaviorModuleHelper.CreateBehaviorParameterOptions(1.50, false, "float")},
  {"x", BehaviorModuleHelper.CreateBehaviorParameterOptions(1.50, true, "float")},
  {"y", BehaviorModuleHelper.CreateBehaviorParameterOptions(0.0, true, "float")},
  {"theta", BehaviorModuleHelper.CreateBehaviorParameterOptions(0.0, true, "float")}
  }
  };

  if (context.RefreshApproachParameters(var_32c9179f_0614_11f8_bd1a_a0649c1d0667, trigger)) {
  BehaviorModuleHelper.Execute(context, var_32c9179f_0614_11f8_bd1a_a0649c1d0667);
  }
  var var_d2a5e02f_8c19_33cc_b240_3413036630d9= new BehaviorInfo{BehaviorName = "wish",RobotName = "Hiro"};

  BehaviorModuleHelper.Execute(context, var_d2a5e02f_8c19_33cc_b240_3413036630d9);
  var var_4330a2d9_5d64_7429_b18b_06083d44a70c= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("I am Nao! Welcome to Edo-Tokyo museum.", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_4330a2d9_5d64_7429_b18b_06083d44a70c);
  var var_dcbc2f6b_2259_fd93_8d04_797fa191107c= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("The Edo-Tokyo museum is a museum of the history of Tokyo during the Edo period", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_dcbc2f6b_2259_fd93_8d04_797fa191107c);
  var var_d6b52600_4ab0_f757_af15_6dd8587e5942= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("It was established in 1993", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_d6b52600_4ab0_f757_af15_6dd8587e5942);
  var var_22bdaaf8_a7e1_dca9_b981_f684fe9a8dc3= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("It has lifetime replica of the Nihonbashi, which was the bridge leading into Edo", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_22bdaaf8_a7e1_dca9_b981_f684fe9a8dc3);
  var var_6bb0f235_782b_5862_b6ac_80bd1345d345= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("It also has scaled down models of towns and building from the Edo, Meiji and Showa periods", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_6bb0f235_782b_5862_b6ac_80bd1345d345);
  var var_37cdbb14_89b3_3d26_a4a5_a1d9bc2ec861= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("The museum was designed by Kiyonori Kikutake", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_37cdbb14_89b3_3d26_a4a5_a1d9bc2ec861);
  var var_2c28ab2f_d8fa_9b1f_820e_bd3f802bf637= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("I hope you will enjoy your visit to Edo-Tokyo museum", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_2c28ab2f_d8fa_9b1f_820e_bd3f802bf637);
  var var_c76e0ccc_3577_ba62_9f4d_394436f0b6cc= new BehaviorInfo
  {
  BehaviorName = "Say Expressively",
  RobotName = "Hiro",Parameters = new Dictionary<string, object>
  {
  {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions("Have a nice day!", true, "string")}
  }
  };

  BehaviorModuleHelper.Execute(context, var_c76e0ccc_3577_ba62_9f4d_394436f0b6cc);


            if (ExecutionLifetime == BehaviorExecutionLifetime.once)
            {
                CyclicActionsComplete = true;
            }
            else if (ExecutionLifetime == BehaviorExecutionLifetime.until)
            {
                var complete = ExecutionUntil(context);
                CyclicActionsComplete = !complete;
            }
        }
        return CyclicActionsComplete;
    }
 public TriggerResultException(TriggerResult r)
 {
     status = r;
 }
Exemple #31
0
        private async Task ProcessItemInternal(WorkItem item)
        {
            TriggerResult triggerResult = await this.ProcessItemAsync(item);

            await this.HandleTriggerResult(triggerResult, item);
        }
Exemple #32
0
 public bool ExecuteExit(IBehaviorExecutionContext context, TriggerResult trigger)
 {
     if (!ExitActionsComplete && CyclicActionsComplete)
     {
         // EXIT_BLOCK
         // EXIT_BLOCK_HERE
         ExitActionsComplete = true;
     }
     return ExitActionsComplete;
 }
 public void it_should_have_no_event_id_value_when_a_v7_protocol_200_response_is_returned()
 {
     var triggerResult = new TriggerResult(V7_PROTOCOL_SUCCESSFUL_RESPONSE, "{}");
     Assert.AreEqual(0, triggerResult.EventIds.Count);
 }
 public TriggerResultException(TriggerResult r)
 {
     status = r;
 }
 public void it_should_treat_a_v7_protocol_200_response_as_a_successful_request()
 {
     var triggerResult = new TriggerResult(V7_PROTOCOL_SUCCESSFUL_RESPONSE, "{}");
     Assert.AreEqual(HttpStatusCode.OK, triggerResult.StatusCode);
 }
Exemple #36
0
        private async Task <TriggerResult> TriggerForPersistingInstance(TriggerParam param)
        {
            TriggerResult result;

            var entity = param.Instance as IEntityWorkflow;

            using (var transaction = _context.Database.BeginTransaction())
            {
                try
                {
                    Workflow workflow  = null;
                    var      execution = GetExecution(param.Instance.Type);

                    await _context.SaveChangesAsync(); // so entity id gets resolved!

                    workflow = FindOrCreate(
                        entity.Id,
                        param.Instance.Type,
                        param.Instance.State,
                        entity.Assignee
                        );

                    EnsureWorkflowVariables(workflow, param);

                    result = execution.Trigger(param);
                    if (!result.IsAborted)
                    {
                        await PersistWorkflow(workflow, param);

                        if (result.HasAutoTrigger)
                        {
                            CreateWorkItemEntry(result.AutoTrigger, entity);
                        }

                        await _context.SaveChangesAsync();

                        transaction.Commit();
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    _logger.LogError(
                        "Trigger with TriggerParameter: {TriggerParameter} failed! {Exception}",
                        LogHelper.SerializeObject(param),
                        ex
                        );

                    var transitionContext = new TransitionContext(param.Instance);
                    transitionContext.AddError(ex.ToString());

                    result = new TriggerResult(
                        param.TriggerName,
                        transitionContext,
                        false
                        );
                }
            }

            return(result);
        }
    public static TriggerResult CheckTrigger(IBehaviorExecutionContext context)
    {
        var result = new TriggerResult {Active = false};

        if (context != null && !ExecutionComplete)
        {
            var voiceCommand = context.GetVoiceCommand("STOP");
if (voiceCommand.Active && voiceCommand.Confidence > 80)
{
Console.WriteLine("Voice trigger received : {0} - {1}", voiceCommand.Name, voiceCommand.Confidence);
result.Active = true;
}

        }
        return result;
    }
Exemple #38
0
 public bool ExecuteInit(IBehaviorExecutionContext context, TriggerResult trigger)
 {
     if (!InitActionsComplete)
     {
         // INIT_BLOCK
         // INIT_BLOCK_HERE
         InitActionsComplete = true;
     }
     return InitActionsComplete;
 }
Exemple #39
0
        public void it_should_have_no_event_id_value_when_a_v7_protocol_200_response_is_returned()
        {
            var triggerResult = new TriggerResult(V7_PROTOCOL_SUCCESSFUL_RESPONSE, "{}");

            Assert.AreEqual(0, triggerResult.EventIds.Count);
        }
Exemple #40
0
    public bool ExecuteCyclic(IBehaviorExecutionContext context, TriggerResult trigger)
    {
        if (!CyclicActionsComplete && InitActionsComplete)
        {
            // CYCLIC_BLOCK
              if (count == 1) {
    var var_4cb4bb22_b20c_ffff_82d4_9a629b6d9712= string.Format("You have completed the exercise {0}  time!",count);
    var var_aab31148_d989_dbc4_99a9_607c437ff1f9= new BehaviorInfo
    {
    BehaviorName = "Say Expressively",
    RobotName = "Hiro",Parameters = new Dictionary<string, object>
    {
    {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions(var_4cb4bb22_b20c_ffff_82d4_9a629b6d9712, true, "string")},
    }
    };

    BehaviorModuleHelper.Execute(context, var_aab31148_d989_dbc4_99a9_607c437ff1f9);
  } else {
    var var_474e66e3_dfef_9670_b4a0_9dca1102d7ba= string.Format("You have completed the exercise {0}  times!",count);
    var var_64f27bb6_60e3_0d16_b68b_52c3ee3e11ed= new BehaviorInfo
    {
    BehaviorName = "Say Expressively",
    RobotName = "Hiro",Parameters = new Dictionary<string, object>
    {
    {"msg", BehaviorModuleHelper.CreateBehaviorParameterOptions(var_474e66e3_dfef_9670_b4a0_9dca1102d7ba, true, "string")},
    }
    };

    BehaviorModuleHelper.Execute(context, var_64f27bb6_60e3_0d16_b68b_52c3ee3e11ed);
  }



            if (ExecutionLifetime == BehaviorExecutionLifetime.once)
            {
                CyclicActionsComplete = true;
            }
            else if (ExecutionLifetime == BehaviorExecutionLifetime.until)
            {
                var complete = ExecutionUntil(context);
                CyclicActionsComplete = !complete;
            }
        }
        return CyclicActionsComplete;
    }
Exemple #41
0
        public void it_should_treat_a_v7_protocol_200_response_as_a_successful_request()
        {
            var triggerResult = new TriggerResult(V7_PROTOCOL_SUCCESSFUL_RESPONSE, "{}");

            Assert.AreEqual(HttpStatusCode.OK, triggerResult.StatusCode);
        }
Exemple #42
0
 public bool Execute(IBehaviorExecutionContext context, TriggerResult trigger)
 {
     try
     {
         ExecuteInit(context, trigger);
         ExecuteCyclic(context, trigger);
         ExecuteExit(context, trigger);
         System.Console.WriteLine(@"Lifetime: {3} Init : {0}, Cyclic: {1}, Exit: {2}", InitActionsComplete,
             CyclicActionsComplete,
             ExitActionsComplete, ExecutionLifetime);
     }
     catch (BehaviorCanceledException ex)
     {
         Console.WriteLine(@"Execution canceled : {0}, {1} ,{2}", GetUid(), ex.Message, ex.StackTrace);
     }
     return ExecutionComplete;
 }
Exemple #43
0
        private async Task <TriggerResult> TriggerForPersistingInstance(TriggerParam param)
        {
            TriggerResult result;

            var dbFacadeRepository = this.repository as IDatabaseFacadeRepository;

            if (dbFacadeRepository == null)
            {
                var msg = "Please register a custom IWorkflowEngineService - implementation!"
                          + Environment.NewLine + "The default implementation relies on a "
                          + "transactional database that exposes the DatabaseFacade property "
                          + "in the Microsoft.EntityFrameworkCore.Infrastructure namespace.";
                throw new InvalidOperationException(msg);
            }

            using (var transaction = dbFacadeRepository.Database.BeginTransaction())
            {
                try
                {
                    Workflow workflow  = null;
                    var      execution = this.GetExecution(param.Instance.Type);
                    var      entity    = param.Instance as IWorkflowInstanceEntity;

                    await this.repository.ApplyChangesAsync(); // so entity id gets resolved!

                    workflow = await this.FindOrCreate(
                        entity.Id,
                        param.Instance.Type,
                        param.Instance.State
                        );

                    this.EnsureWorkflowVariables(workflow, param);

                    result = execution.Trigger(param);
                    if (!result.IsAborted)
                    {
                        await this.PersistWorkflow(workflow, param, result);

                        await this.repository.ApplyChangesAsync();

                        transaction.Commit();
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    this.logger.LogError(
                        "Trigger with TriggerParameter: {TriggerParameter} failed! {Exception}",
                        LogHelper.SerializeObject(param),
                        ex
                        );

                    var transitionContext = new TransitionContext(param.Instance);
                    transitionContext.AddError(ex.ToString());

                    result = new TriggerResult(
                        param.TriggerName,
                        transitionContext,
                        false
                        );
                }
            }

            return(result);
        }