public void showProjectWorkFlow(Resource resource, Resource active) {

        ProjectResource project = (ProjectResource) resource;

        Canvas workflowCanvas = new Canvas();
        workflowCanvas.setDisplayProject(project);
        workflowCanvas.setDisplayView(view);

        Map<String, Node> canJumpNodes = new HashMap<String, Node>();
        Node workflowNode;
        for (NodeResource node : project.getDefineNodes()) {
            workflowNode = new Node(node);
            canJumpNodes.put(String.valueOf(node.getID()), workflowNode);
            workflowCanvas.addNode(workflowNode);
        }

        for (NodeResource node : project.getDefineNodes()) {
            for (NodeJumpResource jump : node.getJumpNodes()) {
                Logger.debug("节点跳转关系:" + node.getID() + " -" + jump.getText() + "-> " + jump.getToId());
                Arrow arrow = new Arrow(canJumpNodes.get(String.valueOf(node.getID())), canJumpNodes.get(String.valueOf(jump.getToId())), jump.getText());
                if (jump.getEditor() != null) {
                    arrow.setEditorType(jump.getEditor().getType());
                    arrow.setEditorValue(jump.getEditor().getValue());
                    arrow.setEditorOptionId(jump.getEditor().getOptionId());
                    arrow.setEditorOptionName(jump.getEditor().getOptionName());
                }
                canJumpNodes.get(String.valueOf(node.getID())).addArrow(arrow);
            }
        }

        view.addTab(project.getText(), workflowCanvas);

        getModel().setActiveCanvas(workflowCanvas);

        activeNodeCell(active);

    }