protected override BaseCaseEltInstance InternalBuild() { var result = new HumanTaskElementInstance { PerformerRef = PerformerRef, ManualActivationRule = ManualActivationRule, RepetitionRule = RepetitionRule }; SeedCasePlanItem(result); return(result); }
protected override BaseCaseEltInstance InternalBuild() { var result = new HumanTaskElementInstance { PerformerRef = PerformerRef, ManualActivationRule = ManualActivationRule, RepetitionRule = RepetitionRule, Implemention = Implementation, InputParameters = InputParameters, NbOccurrence = Version }; SeedCasePlanItem(result); return(result); }
public async Task When_Execute_Human_Task() { var humanTaskInstanceId = Guid.NewGuid().ToString(); var instance = CasePlanInstanceBuilder.New("1", "firstCase") .AddHumanTask("2", "humanTask", null, (_) => { }) .Build(); var jobServer = FakeCaseJobServer.New(); try { jobServer.HttpMessageHandler.Protected() .As <IHttpMessageHandler>() .Setup(x => x.SendAsync(It.IsAny <HttpRequestMessage>(), It.IsAny <CancellationToken>())) .ReturnsAsync(new HttpResponseMessage { Content = new StringContent("{ 'id' : '{" + humanTaskInstanceId + "}' }") }); await jobServer.RegisterCasePlanInstance(instance, CancellationToken.None); jobServer.Start(); await jobServer.EnqueueCasePlanInstance("1", CancellationToken.None); await jobServer.PublishExternalEvt("complete", "1", HumanTaskElementInstance.BuildId("1", "2", 0), new Dictionary <string, string> { { "firstname", "firstname" } }, CancellationToken.None); var casePlanInstance = await jobServer.MonitorCasePlanInstance("1", (c) => { if (c == null) { return(false); } return(c.State == CaseStates.Completed); }, CancellationToken.None); var firstHumanTask = casePlanInstance.StageContent.Children.ElementAt(0) as HumanTaskElementInstance; Assert.Equal(CaseStates.Completed, casePlanInstance.State); Assert.Equal(TaskStageStates.Completed, firstHumanTask.State); } finally { jobServer.Stop(); } }
public async Task When_Execute_Human_Task() { var instance = CasePlanInstanceBuilder.New("1", "firstCase") .AddHumanTask("2", "humanTask", null, (_) => { }) .Build(); var jobServer = FakeCaseJobServer.New(); try { await jobServer.RegisterCasePlanInstance(instance, CancellationToken.None); jobServer.Start(); await jobServer.EnqueueCasePlanInstance("1", CancellationToken.None); await jobServer.PublishExternalEvt("complete", "1", HumanTaskElementInstance.BuildId("1", "2", 0), CancellationToken.None); var casePlanInstance = await jobServer.MonitorCasePlanInstance("1", (c) => { if (c == null) { return(false); } return(c.State == CaseStates.Completed); }, CancellationToken.None); var firstHumanTask = casePlanInstance.StageContent.Children.ElementAt(0) as HumanTaskElementInstance; Assert.Equal(CaseStates.Completed, casePlanInstance.State); Assert.Equal(TaskStageStates.Completed, firstHumanTask.State); } finally { jobServer.Stop(); } }
protected override string BuildId() { return(HumanTaskElementInstance.BuildId(CasePlanInstanceId, EltId, 0)); }
public async Task <string> Create(CMMNExecutionContext executionContext, HumanTaskElementInstance humanTaskElt, CancellationToken token) { using (var httpClient = _httpClientFactory.Build()) { var operationParameters = new JObject { { "nameIdentifier", executionContext.Instance.NameIdentifier } }; if (humanTaskElt.InputParameters != null && humanTaskElt.InputParameters.Any()) { foreach (var inputParameter in humanTaskElt.InputParameters) { if (string.IsNullOrWhiteSpace(inputParameter.Value)) { continue; } var value = ExpressionParser.GetString(inputParameter.Value, executionContext.Instance.ExecutionContext); operationParameters.Add(inputParameter.Key, value); } } var tokenResponse = await httpClient.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest { Address = _options.OAuthTokenEndpoint, ClientId = _options.ClientId, ClientSecret = _options.ClientSecret, Scope = "create_humantaskinstance" }, token); if (tokenResponse.IsError) { throw new CMMNProcessorException(tokenResponse.Error); } var jArr = new JArray(); var link = _options.CallbackUrl.Replace("{id}", executionContext.Instance.AggregateId); link = link.Replace("{eltId}", humanTaskElt.Id); jArr.Add(link); var obj = new JObject { { "humanTaskName", humanTaskElt.FormId }, { "operationParameters", operationParameters }, { "callbackUrls", jArr } }; var content = new StringContent(obj.ToString(), Encoding.UTF8, "application/json"); var request = new HttpRequestMessage { Method = HttpMethod.Post, Content = content, RequestUri = new Uri($"{_options.WSHumanTaskAPI}/humantaskinstances") }; request.Headers.Add("Authorization", $"Bearer {tokenResponse.AccessToken}"); var httpResult = await httpClient.SendAsync(request, token); var str = await httpResult.Content.ReadAsStringAsync(); var o = JObject.Parse(str); var humanTaskInstancId = o["id"].ToString(); return(humanTaskInstancId); } }