public async Task When_Execute_Task_With_ManualActivationRule() { var instance = CasePlanInstanceBuilder.New("1", "firstCase") .AddEmptyTask("2", "firstTask", (_) => { _.SetManualActivationRule("name", new CMMNExpression("csharp", "true")); }) .AddEmptyTask("3", "secondTask", (_) => { }) .AddEmptyTask("4", "thirdTask", (_) => { _.AddEntryCriteria("entry", (__) => { __.AddPlanItemOnPart("2", CMMNTransitions.Complete); __.AddPlanItemOnPart("3", CMMNTransitions.Complete); }); }) .Build(); var jobServer = FakeCaseJobServer.New(); try { await jobServer.RegisterCasePlanInstance(instance, CancellationToken.None); jobServer.Start(); await jobServer.EnqueueCasePlanInstance("1", CancellationToken.None); await jobServer.PublishExternalEvt("manualstart", "1", EmptyTaskElementInstance.BuildId("1", "2", 0), new Dictionary <string, string>(), CancellationToken.None); var casePlanInstance = await jobServer.MonitorCasePlanInstance("1", (c) => { if (c == null) { return(false); } return(c.State == CaseStates.Completed); }, CancellationToken.None); var firstEmptyTask = casePlanInstance.StageContent.Children.ElementAt(0) as EmptyTaskElementInstance; var secondEmptyTask = casePlanInstance.StageContent.Children.ElementAt(0) as EmptyTaskElementInstance; var thirdEmptyTask = casePlanInstance.StageContent.Children.ElementAt(0) as EmptyTaskElementInstance; Assert.Equal(CaseStates.Completed, casePlanInstance.State); Assert.Equal(TaskStageStates.Completed, firstEmptyTask.State); Assert.Equal(TaskStageStates.Completed, secondEmptyTask.State); Assert.Equal(TaskStageStates.Completed, thirdEmptyTask.State); } finally { jobServer.Stop(); } }
protected override string BuildId() { return(EmptyTaskElementInstance.BuildId(CasePlanInstanceId, EltId, 0)); }