コード例 #1
0
        public async Task BPMN_FinishUserTask_ShouldFinishUserTask()
        {
            var processModelId = "test_consumer_api_usertask";
            var payload        = new ProcessStartRequestPayload <object>();
            var callbackType   = StartCallbackType.CallbackOnProcessInstanceCreated;

            ProcessStartResponsePayload processInstance = await this
                                                          .fixture
                                                          .ConsumerAPIClient
                                                          .StartProcessInstance(this.fixture.DefaultIdentity, processModelId, "StartEvent_1", payload, callbackType);

            // Give the ProcessEngine time to reach the UserTask
            await Task.Delay(5000);

            UserTaskList userTasks = await this
                                     .fixture
                                     .ConsumerAPIClient
                                     .GetUserTasksForCorrelation(this.fixture.DefaultIdentity, processInstance.CorrelationId);

            Assert.NotEmpty(userTasks.UserTasks);

            var userTaskToBeFinished = userTasks.UserTasks.ElementAt(0);
            var userTaskResult       = new UserTaskResult()
            {
                FormFields = new Dictionary <string, object>()
            };

            userTaskResult.FormFields.Add("my_test_key", "my_test_value");

            await this
            .fixture
            .ConsumerAPIClient
            .FinishUserTask(
                this.fixture.DefaultIdentity,
                processInstance.ProcessInstanceId,
                processInstance.CorrelationId,
                userTaskToBeFinished.FlowNodeInstanceId,
                userTaskResult
                );
        }
コード例 #2
0
        public async Task FinishUserTask(string processInstanceId, string correlationId, string userTaskInstanceId, UserTaskResult userTaskResult)
        {
            var endpoint = ConsumerApiRestSettings.Paths.FinishUserTask
                           .Replace(ConsumerApiRestSettings.Params.ProcessInstanceId, processInstanceId)
                           .Replace(ConsumerApiRestSettings.Params.CorrelationId, correlationId)
                           .Replace(ConsumerApiRestSettings.Params.UserTaskInstanceId, userTaskInstanceId);


            await this.HttpFacade.SendRequestAndExpectNoResult(HttpMethod.Post, endpoint);
        }
コード例 #3
0
        public async Task FinishUserTask(IIdentity identity, string processInstanceId, string correlationId, string userTaskInstanceId, UserTaskResult userTaskResult)
        {
            var endpoint = RestSettings.Paths.FinishUserTask
                           .Replace(RestSettings.Params.ProcessInstanceId, processInstanceId)
                           .Replace(RestSettings.Params.CorrelationId, correlationId)
                           .Replace(RestSettings.Params.UserTaskInstanceId, userTaskInstanceId);

            var urlWithEndpoint = this.ApplyBaseUrl(endpoint);

            var jsonPayload    = SerializeForProcessEngine(userTaskResult);
            var requestContent = new StringContent(jsonPayload, Encoding.UTF8, "application/json");
            var request        = this.CreateRequestMessage(identity, HttpMethod.Post, urlWithEndpoint, requestContent);
            var result         = await this.httpClient.SendAsync(request);

            if (!result.IsSuccessStatusCode)
            {
                throw new Exception($"Failed to finish UserTask: {result.ReasonPhrase}");
            }
        }