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

org.camunda.bpm.extension.graphql.resolvers.TaskResolver 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.*;
import org.camunda.bpm.engine.identity.User;
import org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.camunda.bpm.engine.repository.ProcessDefinition;
import org.camunda.bpm.engine.rest.util.ApplicationContextPathUtil;
import org.camunda.bpm.engine.runtime.Execution;
import org.camunda.bpm.engine.runtime.ProcessInstance;
import org.camunda.bpm.engine.task.Task;
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;
import java.util.logging.Logger;


@Component
public class TaskResolver implements GraphQLResolver {

    private final static Logger LOGGER = Logger.getLogger(TaskResolver.class.getName());

    @Autowired
    ProcessEngine processEngine;

    @Autowired
    TaskService taskService;

    @Autowired
    RuntimeService runtimeService;

    @Autowired
    RepositoryService repositoryService;

    @Autowired
    ProcessEngineConfigurationImpl processEngineConfiguration;

    @Autowired
    IdentityService identityService;

    public TaskResolver() {
    }

    public ProcessDefinition processDefinition(Task task) {
        String pdid = task.getProcessDefinitionId();
        if (pdid == null)
            return null;

        return repositoryService.getProcessDefinition(pdid);

    }

    public ProcessInstance processInstance(Task task) {
        String piId = task.getProcessInstanceId();
        if (piId == null)
            return null;

        return runtimeService.createProcessInstanceQuery().processInstanceId(piId).singleResult();
    }

    public Execution executionEntity(Task task) {
        String executionId = task.getExecutionId();
        if (executionId == null)
            return null;

        return runtimeService.createExecutionQuery()
                .executionId(executionId)
                .singleResult();
    }

    public User assignee(Task task) {
        String userId = task.getAssignee();

        if (userId == null)
            return null;

        return identityService.createUserQuery().userId(userId).singleResult();

    }

    public String contextPath(Task task) {
        String pdid = task.getProcessDefinitionId();
        if (pdid == null)
            return null;

        return ApplicationContextPathUtil.getApplicationPathByProcessDefinitionId(processEngine, task.getProcessDefinitionId());

    }

    public List variables(Task task) {
        List keyValuePairs;

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

        try {
            Util.switchContext(repositoryService, pdid, processEngineConfiguration);
            VariableMap variableMap = taskService.getVariablesTyped(task.getId(), true);
            keyValuePairs = Util.getKeyValuePairs(variableMap);

        } finally {
            ProcessApplicationContext.clear();
        }


        return keyValuePairs;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy