private void createMessageCorrelationBuilderMock() { mockMessageCorrelationBuilder = mock(typeof(MessageCorrelationBuilder)); mockMessageCorrelationResult = mock(typeof(MessageCorrelationResult)); when(mockRuntimeService.createMessageCorrelation(anyString())).thenReturn(mockMessageCorrelationBuilder); when(mockMessageCorrelationBuilder.correlateWithResult()).thenReturn(mockMessageCorrelationResult); when(mockMessageCorrelationBuilder.processInstanceId(anyString())).thenReturn(mockMessageCorrelationBuilder); when(mockMessageCorrelationBuilder.processInstanceBusinessKey(anyString())).thenReturn(mockMessageCorrelationBuilder); when(mockMessageCorrelationBuilder.processInstanceVariableEquals(anyString(), any())).thenReturn(mockMessageCorrelationBuilder); when(mockMessageCorrelationBuilder.setVariables(Matchers.any <IDictionary <string, object> >())).thenReturn(mockMessageCorrelationBuilder); when(mockMessageCorrelationBuilder.setVariable(anyString(), any())).thenReturn(mockMessageCorrelationBuilder); }
public virtual Response deliverMessage(CorrelationMessageDto messageDto) { if (string.ReferenceEquals(messageDto.MessageName, null)) { throw new InvalidRequestException(Status.BAD_REQUEST, "No message name supplied"); } if (!string.ReferenceEquals(messageDto.TenantId, null) && messageDto.WithoutTenantId) { throw new InvalidRequestException(Status.BAD_REQUEST, "Parameter 'tenantId' cannot be used together with parameter 'withoutTenantId'."); } bool variablesInResultEnabled = messageDto.VariablesInResultEnabled; if (!messageDto.ResultEnabled && variablesInResultEnabled) { throw new InvalidRequestException(Status.BAD_REQUEST, "Parameter 'variablesInResultEnabled' cannot be used without 'resultEnabled' set to true."); } IList <MessageCorrelationResultDto> resultDtos = new List <MessageCorrelationResultDto>(); try { MessageCorrelationBuilder correlation = createMessageCorrelationBuilder(messageDto); if (!variablesInResultEnabled) { ((IList <MessageCorrelationResultDto>)resultDtos).AddRange(correlate(messageDto, correlation)); } else { ((IList <MessageCorrelationResultDto>)resultDtos).AddRange(correlateWithVariablesEnabled(messageDto, correlation)); } } catch (RestException e) { string errorMessage = string.Format("Cannot deliver message: {0}", e.Message); throw new InvalidRequestException(e.Status, e, errorMessage); } catch (MismatchingMessageCorrelationException e) { throw new RestException(Status.BAD_REQUEST, e); } return(createResponse(resultDtos, messageDto)); }
protected internal virtual IList <MessageCorrelationResultDto> correlate(CorrelationMessageDto messageDto, MessageCorrelationBuilder correlation) { IList <MessageCorrelationResultDto> resultDtos = new List <MessageCorrelationResultDto>(); if (!messageDto.All) { MessageCorrelationResult result = correlation.correlateWithResult(); resultDtos.Add(MessageCorrelationResultDto.fromMessageCorrelationResult(result)); } else { IList <MessageCorrelationResult> results = correlation.correlateAllWithResult(); foreach (MessageCorrelationResult result in results) { resultDtos.Add(MessageCorrelationResultDto.fromMessageCorrelationResult(result)); } } return(resultDtos); }
protected internal virtual MessageCorrelationBuilder createMessageCorrelationBuilder(CorrelationMessageDto messageDto) { RuntimeService runtimeService = processEngine.RuntimeService; ObjectMapper objectMapper = ObjectMapper; IDictionary <string, object> correlationKeys = VariableValueDto.toMap(messageDto.CorrelationKeys, processEngine, objectMapper); IDictionary <string, object> localCorrelationKeys = VariableValueDto.toMap(messageDto.LocalCorrelationKeys, processEngine, objectMapper); IDictionary <string, object> processVariables = VariableValueDto.toMap(messageDto.ProcessVariables, processEngine, objectMapper); IDictionary <string, object> processVariablesLocal = VariableValueDto.toMap(messageDto.ProcessVariablesLocal, processEngine, objectMapper); MessageCorrelationBuilder builder = runtimeService.createMessageCorrelation(messageDto.MessageName); if (processVariables != null) { builder.Variables = processVariables; } if (processVariablesLocal != null) { builder.VariablesLocal = processVariablesLocal; } if (!string.ReferenceEquals(messageDto.BusinessKey, null)) { builder.processInstanceBusinessKey(messageDto.BusinessKey); } if (correlationKeys != null && correlationKeys.Count > 0) { foreach (KeyValuePair <string, object> correlationKey in correlationKeys.SetOfKeyValuePairs()) { string name = correlationKey.Key; object value = correlationKey.Value; builder.processInstanceVariableEquals(name, value); } } if (localCorrelationKeys != null && localCorrelationKeys.Count > 0) { foreach (KeyValuePair <string, object> correlationKey in localCorrelationKeys.SetOfKeyValuePairs()) { string name = correlationKey.Key; object value = correlationKey.Value; builder.localVariableEquals(name, value); } } if (!string.ReferenceEquals(messageDto.TenantId, null)) { builder.tenantId(messageDto.TenantId); } else if (messageDto.WithoutTenantId) { builder.withoutTenantId(); } string processInstanceId = messageDto.ProcessInstanceId; if (!string.ReferenceEquals(processInstanceId, null)) { builder.processInstanceId(processInstanceId); } return(builder); }