Search in sources :

Example 1 with AbstractContextInstance

use of org.jbpm.process.instance.context.AbstractContextInstance in project jbpm by kiegroup.

the class WorkflowReuseContextInstanceFactory method getContextInstance.

public ContextInstance getContextInstance(Context context, ContextInstanceContainer contextInstanceContainer, ProcessInstance processInstance) {
    ContextInstance result = contextInstanceContainer.getContextInstance(context.getType(), context.getId());
    if (result != null) {
        return result;
    }
    try {
        AbstractContextInstance contextInstance = (AbstractContextInstance) cls.newInstance();
        contextInstance.setContextId(context.getId());
        contextInstance.setContextInstanceContainer(contextInstanceContainer);
        contextInstance.setProcessInstance(processInstance);
        contextInstanceContainer.addContextInstance(context.getType(), contextInstance);
        NodeInstanceContainer nodeInstanceContainer = null;
        if (contextInstanceContainer instanceof NodeInstanceContainer) {
            nodeInstanceContainer = (NodeInstanceContainer) contextInstanceContainer;
        } else if (contextInstanceContainer instanceof ContextInstance) {
            ContextInstanceContainer parent = ((ContextInstance) contextInstanceContainer).getContextInstanceContainer();
            while (parent != null) {
                if (parent instanceof NodeInstanceContainer) {
                    nodeInstanceContainer = (NodeInstanceContainer) parent;
                } else if (contextInstanceContainer instanceof ContextInstance) {
                    parent = ((ContextInstance) contextInstanceContainer).getContextInstanceContainer();
                } else {
                    parent = null;
                }
            }
        }
        ((WorkflowContextInstance) contextInstance).setNodeInstanceContainer(nodeInstanceContainer);
        return contextInstance;
    } catch (Exception e) {
        throw new RuntimeException("Unable to instantiate context '" + this.cls.getName() + "': " + e.getMessage());
    }
}
Also used : AbstractContextInstance(org.jbpm.process.instance.context.AbstractContextInstance) NodeInstanceContainer(org.jbpm.workflow.instance.NodeInstanceContainer) AbstractContextInstance(org.jbpm.process.instance.context.AbstractContextInstance) ContextInstance(org.jbpm.process.instance.ContextInstance) ContextInstanceContainer(org.jbpm.process.instance.ContextInstanceContainer)

Example 2 with AbstractContextInstance

use of org.jbpm.process.instance.context.AbstractContextInstance in project jbpm by kiegroup.

the class ReuseContextInstanceFactory method getContextInstance.

public ContextInstance getContextInstance(Context context, ContextInstanceContainer contextInstanceContainer, ProcessInstance processInstance) {
    ContextInstance result = contextInstanceContainer.getContextInstance(context.getType(), context.getId());
    if (result != null) {
        return result;
    }
    try {
        AbstractContextInstance contextInstance = (AbstractContextInstance) cls.newInstance();
        contextInstance.setProcessInstance(processInstance);
        contextInstance.setContextId(context.getId());
        contextInstance.setContextInstanceContainer(contextInstanceContainer);
        contextInstanceContainer.addContextInstance(context.getType(), contextInstance);
        return contextInstance;
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException("Unable to instantiate context '" + this.cls.getName() + "': " + e.getMessage(), e);
    }
}
Also used : AbstractContextInstance(org.jbpm.process.instance.context.AbstractContextInstance) AbstractContextInstance(org.jbpm.process.instance.context.AbstractContextInstance) ContextInstance(org.jbpm.process.instance.ContextInstance)

Aggregations

ContextInstance (org.jbpm.process.instance.ContextInstance)2 AbstractContextInstance (org.jbpm.process.instance.context.AbstractContextInstance)2 ContextInstanceContainer (org.jbpm.process.instance.ContextInstanceContainer)1 NodeInstanceContainer (org.jbpm.workflow.instance.NodeInstanceContainer)1