示例#1
0
        public virtual IList <ProcessInstanceDto> queryProcessInstances(ProcessInstanceQueryDto queryDto, int?firstResult, int?maxResults)
        {
            ProcessEngine engine = ProcessEngine;

            queryDto.ObjectMapper = ObjectMapper;
            ProcessInstanceQuery query = queryDto.toQuery(engine);

            IList <ProcessInstance> matchingInstances;

            if (firstResult != null || maxResults != null)
            {
                matchingInstances = executePaginatedQuery(query, firstResult, maxResults);
            }
            else
            {
                matchingInstances = query.list();
            }

            IList <ProcessInstanceDto> instanceResults = new List <ProcessInstanceDto>();

            foreach (ProcessInstance instance in matchingInstances)
            {
                ProcessInstanceDto resultInstance = ProcessInstanceDto.fromProcessInstance(instance);
                instanceResults.Add(resultInstance);
            }
            return(instanceResults);
        }
示例#2
0
        public virtual ProcessInstanceDto submitForm(UriInfo context, StartProcessInstanceDto parameters)
        {
            FormService formService = engine.FormService;

            ProcessInstance instance = null;

            try
            {
                IDictionary <string, object> variables = VariableValueDto.toMap(parameters.Variables, engine, objectMapper);
                string businessKey = parameters.BusinessKey;
                if (!string.ReferenceEquals(businessKey, null))
                {
                    instance = formService.submitStartForm(processDefinitionId, businessKey, variables);
                }
                else
                {
                    instance = formService.submitStartForm(processDefinitionId, variables);
                }
            }
            catch (AuthorizationException e)
            {
                throw e;
            }
            catch (FormFieldValidationException e)
            {
                string errorMessage = string.Format("Cannot instantiate process definition {0}: {1}", processDefinitionId, e.Message);
                throw new RestException(Response.Status.BAD_REQUEST, e, errorMessage);
            }
            catch (ProcessEngineException e)
            {
                string errorMessage = string.Format("Cannot instantiate process definition {0}: {1}", processDefinitionId, e.Message);
                throw new RestException(Response.Status.INTERNAL_SERVER_ERROR, e, errorMessage);
            }
            catch (RestException e)
            {
                string errorMessage = string.Format("Cannot instantiate process definition {0}: {1}", processDefinitionId, e.Message);
                throw new InvalidRequestException(e.Status, e, errorMessage);
            }

            ProcessInstanceDto result = ProcessInstanceDto.fromProcessInstance(instance);

            URI uri = context.BaseUriBuilder.path(rootResourcePath).path(org.camunda.bpm.engine.rest.ProcessInstanceRestService_Fields.PATH).path(instance.Id).build();

            result.addReflexiveLink(uri, HttpMethod.GET, "self");

            return(result);
        }
示例#3
0
        public virtual IList <ProcessInstanceDto> evaluateCondition(EvaluationConditionDto conditionDto)
        {
            if (!string.ReferenceEquals(conditionDto.TenantId, null) && conditionDto.WithoutTenantId)
            {
                throw new InvalidRequestException(Status.BAD_REQUEST, "Parameter 'tenantId' cannot be used together with parameter 'withoutTenantId'.");
            }
            ConditionEvaluationBuilder builder          = createConditionEvaluationBuilder(conditionDto);
            IList <ProcessInstance>    processInstances = builder.evaluateStartConditions();

            IList <ProcessInstanceDto> result = new List <ProcessInstanceDto>();

            foreach (ProcessInstance processInstance in processInstances)
            {
                result.Add(ProcessInstanceDto.fromProcessInstance(processInstance));
            }
            return(result);
        }
示例#4
0
        public static MessageCorrelationResultWithVariableDto fromMessageCorrelationResultWithVariables(MessageCorrelationResultWithVariables result)
        {
            MessageCorrelationResultWithVariableDto dto = new MessageCorrelationResultWithVariableDto();

            if (result != null)
            {
                dto.ResultType = result.ResultType;
                if (result.ProcessInstance != null)
                {
                    dto.ProcessInstance = ProcessInstanceDto.fromProcessInstance(result.ProcessInstance);
                }
                else if (result.Execution != null)
                {
                    dto.Execution = ExecutionDto.fromExecution(result.Execution);
                }

                dto.variables = VariableValueDto.fromMap(result.Variables, true);
            }
            return(dto);
        }
示例#5
0
        public virtual ProcessInstanceDto startProcessInstance(UriInfo context, StartProcessInstanceDto parameters)
        {
            ProcessInstanceWithVariables instance = null;

            try
            {
                instance = startProcessInstanceAtActivities(parameters);
            }
            catch (AuthorizationException e)
            {
                throw e;
            }
            catch (ProcessEngineException e)
            {
                string errorMessage = string.Format("Cannot instantiate process definition {0}: {1}", processDefinitionId, e.Message);
                throw new RestException(Response.Status.INTERNAL_SERVER_ERROR, e, errorMessage);
            }
            catch (RestException e)
            {
                string errorMessage = string.Format("Cannot instantiate process definition {0}: {1}", processDefinitionId, e.Message);
                throw new InvalidRequestException(e.Status, e, errorMessage);
            }

            ProcessInstanceDto result;

            if (parameters.WithVariablesInReturn)
            {
                result = ProcessInstanceWithVariablesDto.fromProcessInstance(instance);
            }
            else
            {
                result = ProcessInstanceDto.fromProcessInstance(instance);
            }

            URI uri = context.BaseUriBuilder.path(rootResourcePath).path(org.camunda.bpm.engine.rest.ProcessInstanceRestService_Fields.PATH).path(instance.Id).build();

            result.addReflexiveLink(uri, HttpMethod.GET, "self");

            return(result);
        }