All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.camunda.bpm.extension.graphql.resolvers.ProcessInstanceResolver Maven / Gradle / Ivy

The newest version!
package org.camunda.bpm.extension.graphql.resolvers;


import graphql.kickstart.tools.GraphQLResolver;
import org.camunda.bpm.application.ProcessApplicationContext;
import org.camunda.bpm.engine.ProcessEngine;
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.RuntimeService;
import org.camunda.bpm.engine.TaskService;
import org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.variable.VariableMap;
import org.camunda.bpm.extension.graphql.types.KeyValuePair;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;


@Component
public class ProcessInstanceResolver implements GraphQLResolver {

    @Autowired
    ProcessEngine processEngine;

    @Autowired
    TaskService taskService;

    @Autowired
    RuntimeService runtimeService;

    @Autowired
    RepositoryService repositoryService;

    @Autowired
    ProcessEngineConfigurationImpl processEngineConfiguration;

    public ProcessInstanceResolver() {
    }

    public String getId(ProcessInstance processInstance) {
        return processInstance.getId();
    }

    public String getProcessInstanceId(ProcessInstance processInstance) {
        return processInstance.getProcessInstanceId();
    }

    public String getTenantId(ProcessInstance processInstance) {
        return processInstance.getTenantId();
    }

    public Boolean isEnded(ProcessInstance processInstance) {
        return processInstance.isEnded();
    }

    public List variables(ProcessInstance processInstance) {
        List keyValuePairs;

        String pdid = processInstance.getProcessDefinitionId();
        if (pdid == null)
            return null;

        try {
            Util.switchContext(repositoryService, pdid, processEngineConfiguration);
            VariableMap variableMap = runtimeService.getVariablesTyped(processInstance.getId());
            keyValuePairs = Util.getKeyValuePairs(variableMap);

        } finally {
            ProcessApplicationContext.clear();
        }
        return keyValuePairs;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy