⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workflowdesigner.java

📁 一个很好实用的工作流OSWORKFLOW开发例子.有着非常优秀的灵活性.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    DetailPanel current = (DetailPanel)detailPanel.getVisibleCard();    if(current != null)      current.closeView();    DetailPanel panel = (DetailPanel)detailPanel.showCard(panelName);    if(panel == null)    {      if(node instanceof StepDescriptor)      {        panel = new StepEditor();      }      else if(node instanceof SplitDescriptor)      {        panel = new SplitEditor();      }      else if(node instanceof JoinDescriptor)      {        panel = new JoinEditor();      }      else if(node instanceof ResultDescriptor)      {        panel = new ResultEditor();      }      else if(node instanceof ActionDescriptor)      {        panel = new ActionEditor();      }      else if(node instanceof WorkflowDescriptor)      {        panel = new WorkflowEditor();      }      else if(node instanceof String)      {        panel = new GenericEditor();      }    }    if(panel != null)    {      if(node instanceof String)      {        ((GenericEditor)panel).setLabel((String)node);        panel.setName(panelName);        detailFramePanel.setTitle(ResourceManager.getString("details") + (title != null ? (" - " + title) : ""));        detailPanel.showCard(panel);        return;      }      descriptor = (AbstractDescriptor)node;    }    if(panel != null)    {      WorkflowGraph currentGraph = graphTabs.getCurrentGraph();      if(currentGraph == null) return;      panel.setModel(currentGraph.getWorkflowGraphModel());      panel.setGraph(currentGraph);      panel.setDescriptor(descriptor);      detailFramePanel.setTitle(ResourceManager.getString("details") + (title != null ? (" - " + title) : ""));      detailPanel.showCard(panel);    }    else    {      System.out.println("WARN: no detail panel for " + node.getClass());    }  }  public void openWorkspace(URL file)  {    if(file != null)    {      String oldWorkspace = Prefs.INSTANCE.get(Prefs.LAST_WORKSPACE, null);      try      {        graphTabs.removeAll();        Prefs.INSTANCE.put(Prefs.LAST_WORKSPACE, file.toString());        manager.loadWorkspace(file);        WorkflowFactory workspace = manager.getCurrentWorkspace();        navigator.setWorkspace(workspace);        String[] workflows = workspace.getWorkflowNames();        for(int i = 0; i < workflows.length; i++)        {          createGraph(workflows[i]);        }        Prefs.INSTANCE.put(Prefs.LAST_WORKSPACE, file.toString());      }      catch(Exception t)      {        if(!file.toString().equals(oldWorkspace))          Prefs.INSTANCE.put(Prefs.LAST_WORKSPACE, oldWorkspace);        else          Prefs.INSTANCE.remove(Prefs.LAST_WORKSPACE);        t.printStackTrace();      }    }  }  public void openRemoteWorkspace()  {    try    {      manager.loadServiceWorkspace(service);      RemoteWorkspace workspace = (RemoteWorkspace)manager.getCurrentWorkspace();      navigator.setWorkspace(workspace);      String[] workflows = workspace.getWorkflowNames();      for(int i = 0; i < workflows.length; i++)      {        createGraph(workflows[i]);      }    }    catch(Exception t)    {      t.printStackTrace();    }  }  public void checkWorkspaceExists()  {    if(manager.getCurrentWorkspace() == null)    {      NewWorkspaceDialog newSpace = new NewWorkspaceDialog(this, ResourceManager.getString("workspace.new"), true);      newSpace.pack();      newSpace.getBanner().setTitle("");      newSpace.getBanner().setSubtitle(ResourceManager.getString("workspace.new.long"));      Utils.centerComponent(this, newSpace);      Dimension size = newSpace.getSize();      newSpace.setSize(size.width + 10, size.height + 15);      newSpace.setVisible(true);    }  }  private boolean save(WorkflowGraph graph, boolean validate)  {    boolean saved = false;    Layout layout = graph.getGraphLayout();    WorkflowGraphModel model = (WorkflowGraphModel)graph.getModel();    layout.setAllEntries(model.getActivitiesList());    String workflowName = graph.getName();    manager.getCurrentWorkspace().setLayout(workflowName, layout);    WorkflowDescriptor descriptor = null;    try    {      descriptor = manager.getCurrentWorkspace().getWorkflow(workflowName);      if(validate)      {        descriptor.validate();      }      if(manager.getCurrentWorkspace() instanceof Workspace)        saved = ((Workspace)manager.getCurrentWorkspace()).saveWorkflow(workflowName, descriptor, graph, true);      else if(manager.getCurrentWorkspace() instanceof RemoteWorkspace)        saved = ((RemoteWorkspace)manager.getCurrentWorkspace()).saveWorkflow(workflowName, descriptor, graph, true);      if(!saved)      {        JOptionPane.showMessageDialog(this, "Error", ResourceManager.getString("error.save.workflow.long", new Object[]{workflowName}), JOptionPane.ERROR_MESSAGE);      }    }    catch(InvalidWorkflowDescriptorException e)    {      System.out.println("Error saving workflow: " + e);      PrintWriter out = new PrintWriter(System.out);      descriptor.writeXML(out, 0);      out.flush();      JOptionPane.showMessageDialog(this,                                    ResourceManager.getString("error.validate.workflow", new Object[]{e.getMessage()}),                                    ResourceManager.getString("title.validate.workflow", new Object[]{workflowName}),                                    JOptionPane.ERROR_MESSAGE);    }    catch(Exception e)    {      e.printStackTrace();      JOptionPane.showMessageDialog(this, e.getMessage(), ResourceManager.getString("error.save.workflow.long", new Object[]{workflowName}), JOptionPane.ERROR_MESSAGE);    }    return saved;  }  public void saveOpenGraphs()  {    WorkflowGraph[] graphs = graphTabs.getGraphs();    for(int i = 0; i < graphs.length; i++)    {      save(graphs[i], false);    }  }  public void saveWorkspace()  {    manager.saveWorkspace();  }  public Workspace newLocalWorkspace()  {    closeWorkspace();    Workspace workspace = new Workspace();    manager.setCurrentWorkspace(workspace);    navigator.setWorkspace(workspace);    return workspace;  }  public RemoteWorkspace newRemoteWorkspace()  {    closeWorkspace();    RemoteWorkspace workspace = new RemoteWorkspace(service);    manager.setCurrentWorkspace(workspace);    navigator.setWorkspace(workspace);    return workspace;  }  public void closeWorkspace()  {    //don't bother doing anything if we have no workspace visible    if(!graphTabs.isVisible()) return;    graphTabs.removeAll();    manager.setCurrentWorkspace(null);    navigator.setWorkspace(null);    Prefs.INSTANCE.remove(Prefs.LAST_WORKSPACE);    graphTabs.setVisible(false);  }  public void newWorkflowCreated(String name)  {    navigator.addWorkflow(name);    navigator.selectWorkflow(name);  }  public WorkspaceNavigator navigator()  {    return navigator;  }  public void selectWorkflow(String workflowName)  {    if(graphTabs.selectWorkflow(workflowName))    {      Prefs.INSTANCE.put(Prefs.WORKFLOW_CURRENT, workflowName);      return;    }    createGraph(workflowName);    Prefs.INSTANCE.put(Prefs.WORKFLOW_CURRENT, workflowName);    graphTabs.setVisible(true);  }  public void selectCell(AbstractDescriptor descriptor)  {    WorkflowGraph graph = getCurrentGraph();    graph.getSelectionModel().clearSelection();    WorkflowGraphModel model = (WorkflowGraphModel)graph.getModel();    if(descriptor instanceof StepDescriptor)    {      StepCell cell = model.getStepCell(descriptor.getId());      if(cell != null)      {        graph.getSelectionModel().setSelectionCell(cell);      }    }    else if(descriptor instanceof SplitDescriptor)    {      SplitCell cell = model.getSplitCell(descriptor.getId());      if(cell != null)      {        graph.getSelectionModel().setSelectionCell(cell);      }    }    else if(descriptor instanceof JoinDescriptor)    {      JoinCell cell = model.getJoinCell(descriptor.getId());      if(cell != null)      {        graph.getSelectionModel().setSelectionCell(cell);      }    }    else if(descriptor instanceof ResultDescriptor)    {      ResultEdge edge = model.getResultCell((ResultDescriptor)descriptor);      if(edge != null)      {        graph.getSelectionModel().setSelectionCell(edge);      }    }  }  private void loadPalette()  {    try    {      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();      dbf.setNamespaceAware(true);      DocumentBuilder db = null;      try      {        db = dbf.newDocumentBuilder();      }      catch(ParserConfigurationException e)      {        e.printStackTrace();        System.exit(1);      }      InputStream is = WorkflowDesigner.class.getResourceAsStream("/META-INF/palette.xml");      Document doc = db.parse(is);      ResourceBundle bundle = ResourceBundle.getBundle("META-INF/palette", Locale.getDefault(), getClass().getClassLoader());      Element root = (Element)doc.getElementsByTagName("plugin").item(0);      palette = new PaletteDescriptor(root, new EnhancedResourceBundle(bundle));    }    catch(Exception e)    {      e.printStackTrace();    }  }  private AbstractDescriptor getCellDescriptor(Object cell)  {    if(cell instanceof StepCell)    {      return ((StepCell)cell).getDescriptor();    }    else if(cell instanceof JoinCell)    {      return ((JoinCell)cell).getJoinDescriptor();    }    else if(cell instanceof SplitCell)    {      return ((SplitCell)cell).getSplitDescriptor();    }    else if(cell instanceof InitialActionCell)    {      return ((InitialActionCell)cell).getActionDescriptor();    }    else if(cell instanceof ResultEdge)    {      return ((ResultEdge)cell).getDescriptor();    }    return null;  }  private String getDescriptorTitle(Object desc)  {    String title = "";    if(desc instanceof StepDescriptor)    {      title = ((StepDescriptor)desc).getName();    }    else if(desc instanceof SplitDescriptor)    {      title = "Split #" + ((SplitDescriptor)desc).getId();    }    else if(desc instanceof JoinDescriptor)    {      title = "Join #" + ((JoinDescriptor)desc).getId();    }    else if(desc instanceof ResultDescriptor)    {      title = ((ResultDescriptor)desc).getDisplayName();    }    else if(desc instanceof ActionDescriptor)    {      title = ((ActionDescriptor)desc).getName();    }    else if(desc instanceof WorkflowDescriptor)    {      title = ((WorkflowDescriptor)desc).getName();    }    return title;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -