public void when_handling_fails_it_gets_sent_to_err_queue() { var msg = new ThrowEvent(); _sut.Handle(msg, ""); _err.Received(1).MessageHandlingFailed(msg, Arg.Any <HandledMessageException>()); }
public override void Execute(IExecutionEntity execution) { ThrowEvent throwEvent = (ThrowEvent)execution.CurrentFlowElement; /* * From the BPMN 2.0 spec: * * The Activity to be compensated MAY be supplied. * * If an Activity is not supplied, then the compensation is broadcast to all completed Activities in * the current Sub- Process (if present), or the entire Process instance (if at the global level). This "throws" the compensation. */ string activityRef = compensateEventDefinition.ActivityRef; ICommandContext commandContext = Context.CommandContext; IEventSubscriptionEntityManager eventSubscriptionEntityManager = commandContext.EventSubscriptionEntityManager; IList <ICompensateEventSubscriptionEntity> eventSubscriptions = new List <ICompensateEventSubscriptionEntity>(); if (!string.IsNullOrWhiteSpace(activityRef)) { // If an activity ref is provided, only that activity is compensated ((List <ICompensateEventSubscriptionEntity>)eventSubscriptions).AddRange(eventSubscriptionEntityManager.FindCompensateEventSubscriptionsByProcessInstanceIdAndActivityId(execution.ProcessInstanceId, activityRef)); } else { // If no activity ref is provided, it is broadcast to the current sub process / process instance Process process = ProcessDefinitionUtil.GetProcess(execution.ProcessDefinitionId); IFlowElementsContainer flowElementsContainer; if (throwEvent.SubProcess == null) { flowElementsContainer = process; } else { flowElementsContainer = throwEvent.SubProcess; } foreach (FlowElement flowElement in flowElementsContainer.FlowElements) { if (flowElement is Activity) { ((List <ICompensateEventSubscriptionEntity>)eventSubscriptions).AddRange(eventSubscriptionEntityManager.FindCompensateEventSubscriptionsByProcessInstanceIdAndActivityId(execution.ProcessInstanceId, flowElement.Id)); } } } if (eventSubscriptions.Count == 0) { Leave(execution); } else { // TODO: implement async (waitForCompletion=false in bpmn) ScopeUtil.ThrowCompensationEvent(eventSubscriptions, execution, false); Leave(execution); } }
protected internal override BaseElement ConvertXMLToElement(XMLStreamReader xtr, BpmnModel model) { ThrowEvent throwEvent = new ThrowEvent(); BpmnXMLUtil.AddXMLLocation(throwEvent, xtr); ParseChildElements(XMLElementName, throwEvent, model, xtr); return(throwEvent); }
public override BaseElement Clone() { ThrowEvent clone = new ThrowEvent { Values = this }; return(clone); }
public void Update_YieldsThrow() { var player = new Player(); var frame1 = new Frame { Match = { GameClock = 300f } }; var possessionChangeEvent1 = new PossessionChangeEvent(frame1, null, null); var frame2 = new Frame { Match = { GameClock = 300f } }; var possessionChangeEvent2 = new PossessionChangeEvent(frame1, player, HandSide.Right); var frame3 = new Frame { Match = { GameClock = 300f } }; var frame4 = new Frame { Match = { GameClock = 300f - ThrowPlaySensor.SLAP_THRESHOLD_TIME - 1 } }; var throwEvent = new ThrowEvent(frame4, player); var sensor = new ThrowPlaySensor(); sensor.Initialize(new IStateSensor[0]); // var result1 = sensor.Update(frame1, new[] { possessionChangeEvent1 }); var result2 = sensor.Update(frame2, new[] { possessionChangeEvent2 }); var result3 = sensor.Update(frame3, new GameEvent[0]); var result4 = sensor.Update(frame4, new[] { throwEvent }); // Assert.IsNull(result1); Assert.IsNull(result2); Assert.IsNull(result3); var slap = result4 as ThrowPlay; Assert.IsNotNull(slap); Assert.AreEqual(player, slap.Player); }
public void Update_YieldsThrowIfPossessionMissed() { var player = new Player(); var frame = new Frame { Match = { GameClock = 300f - ThrowPlaySensor.SLAP_THRESHOLD_TIME - 1 } }; var throwEvent = new ThrowEvent(frame, player); var sensor = new ThrowPlaySensor(); sensor.Initialize(new IStateSensor[0]); // var result = sensor.Update(frame, new[] { throwEvent }); // var slap = result as ThrowPlay; Assert.IsNotNull(slap); Assert.AreEqual(player, slap.Player); }
public void Update_YieldsThrowIfPlayerMismatch() { var player1 = new Player { Id = 1 }; var player2 = new Player { Id = 2 }; var frame1 = new Frame { Match = { GameClock = 300f } }; var possessionChangeEvent1 = new PossessionChangeEvent(frame1, player1, HandSide.Right); var frame2 = new Frame { Match = { GameClock = 300f - ThrowPlaySensor.SLAP_THRESHOLD_TIME } }; var throwEvent = new ThrowEvent(frame2, player2); var sensor = new ThrowPlaySensor(); sensor.Initialize(new IStateSensor[0]); // var result1 = sensor.Update(frame1, new[] { possessionChangeEvent1 }); var result2 = sensor.Update(frame2, new[] { throwEvent }); // Assert.IsNull(result1); var slap = result2 as ThrowPlay; Assert.IsNotNull(slap); Assert.AreEqual(player2, slap.Player); }
public virtual void Visit(ThrowEvent ev) { }
/// <summary> /// Called from <c>ThrownWeapon.DoThrow(BaseEntity.RPCMessage)</c> . /// </summary> public static void On_PlayerThrowExplosive(ThrownWeapon thrownWeapon, BaseEntity.RPCMessage msg) { ThrowEvent evt = new ThrowEvent(thrownWeapon, msg); switch (evt.ProjectileName) { case "F1 Grenade": case "Beancan Grenade": OnNext("On_PlayerThrowGrenade", evt); break; case "Timed Explosive Charge": case "Survey Charge": case "Satchel Charge": OnNext("On_PlayerThrowCharge", evt); break; case "Supply Signal": OnNext("On_PlayerThrowSignal", evt); break; } }
protected internal override void WriteAdditionalChildElements(BaseElement element, BpmnModel model, XMLStreamWriter xtw) { ThrowEvent throwEvent = (ThrowEvent)element; WriteEventDefinitions(throwEvent, throwEvent.EventDefinitions, model, xtw); }
public void Handle(ThrowEvent ev) { throw new Exception(); }
public virtual IntermediateThrowCompensationEventActivityBehavior CreateIntermediateThrowCompensationEventActivityBehavior(ThrowEvent throwEvent, CompensateEventDefinition compensateEventDefinition) { return(new IntermediateThrowCompensationEventActivityBehavior(compensateEventDefinition)); }
public virtual IntermediateThrowSignalEventActivityBehavior CreateIntermediateThrowSignalEventActivityBehavior(ThrowEvent throwEvent, SignalEventDefinition signalEventDefinition, Signal signal) { return(new IntermediateThrowSignalEventActivityBehavior(signalEventDefinition, signal)); }
public virtual IntermediateThrowMessageEventActivityBehavior CreateIntermediateThrowMessgeEventActivityBehavior(ThrowEvent throwEvent, MessageEventDefinition messageEventDefinition, Message message) { return(new IntermediateThrowMessageEventActivityBehavior(messageEventDefinition, message)); }
public virtual IntermediateThrowNoneEventActivityBehavior CreateIntermediateThrowNoneEventActivityBehavior(ThrowEvent throwEvent) { return(new IntermediateThrowNoneEventActivityBehavior()); }
public void when_handling_fails_it_gets_sent_to_err_queue() { var msg = new ThrowEvent(); _sut.Handle(msg,""); _err.Received(1).MessageHandlingFailed(msg,Arg.Any<HandledMessageException>()); }
public void Handle(ThrowEvent ev) { throw new Exception(); }