Plotting a Trained Decision Tree Model

Is it possible to plot an Azure based decision tree similar to what is done in R?  That is, a mapping of the splits at each node level with summaries in each of the leaf nodes.  It is helpful info to understand how the tree is splitting but even
more helpful in providing the client with a decision path that they can follow.

Hello,
Unfortunately not - this is feedback we've received and are working to implement on many of our learning algorithms: improved visualization/transparency into their details.
We'll report back as we make progress on this!
Regards,
AK

Similar Messages

  • Training Decision Tree: Get RSDME362

    Hi,
    I want to train my decision tree modell and get an error: RSDME362, Vorhers. Modellf. hat nur einen Wert.Daten können nicht trainiert werden.
    If I look at the statistics of the attribute which will be predicted it has two distinct values: 1.000 and 0.000.
    Does anybody knows what could be wrong??
    Thanks,
    regards

    Hi,
    I found the problem: the algorithm couldn't process values with 0. So we changed it to 1 (=yes) and 2 (=no) instead of 0 (no).
    Regards

  • Problem in Exploring the Decision Tree Model on Lesson 4 Basic Data Mining SSAS

    Hello everyone,
    I've tried to follow all the steps mentioned in Basic Data Mining Tutorials, but I've an odd problem in the Lesson 4 - Exploring the Decision Tree Model (http://technet.microsoft.com/en-us/library/cc879269.aspx).
    It's stated that "As you view the TM_Decision_Tree model
    in the Decision Tree viewer, you can see the most important attributes at the left side of the chart. “Most important” means that these attributes have the greatest influence on the outcome. Attributes further down the tree (to the right of the chart) have
    less of an effect. In this example, age is the single most important factor in predicting bike buying. The model
    groups customers by age, and then shows the next more important attribute for each age group. For example, in the group of customers aged 34 to 40, the number of cars owned is the strongest predictor after age."
    But, I got a different result from what mentioned in the tutorial. I got the number of cars owned as the most important attribute, then followed by the attribute age.
    Do you guys know why?
    Thanks in advance

    HI,
    BEGIN
       INSERT INTO DT_CA_SETTINGS_TEST (SETTING_NAME, SETTING_VALUE) VALUES
       (dbms_data_mining.TREE_TERM_MINPCT_NODE,to_char(1));
    END;
    That is not "Mode" its "NODE".
    Now Execute.
    Cheers..

  • Failed to open model viewer error, for Decision Tree Model

    Oracle 11.0.2
    SQL Developer 3.0.04
    I am trying to follow ODM tutorial here :
    http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/11g/r2/prod/bidw/datamining/ODM11gR2.htm
    After completing initial analysis, I want to investigate the Decision Tree model more closely. As I choose View Models > CLAS_DT_1_1, I get an error message:
    Failed to open model viewer
    Details are:
    java.lang.RuntimeException: not instanceof RoundedTreeNode
         at oracle.dmt.dataminer.mviewer.dtree.model.TreeNode.assignPropertyChangeListener(Unknown Source)
         at oracle.dmt.dataminer.mviewer.dtree.DecisionTreeEditor.setPropertyChangeListener(Unknown Source)
         at oracle.dmt.dataminer.mviewer.dtree.DecisionTreeEditor.open(Unknown Source)
         at oracle.ideimpl.editor.EditorState.openEditor(EditorState.java:283)
         at oracle.ideimpl.editor.EditorState.createEditor(EditorState.java:184)
         at oracle.ideimpl.editor.EditorState.getOrCreateEditor(EditorState.java:95)
         at oracle.ideimpl.editor.SplitPaneState.canSetEditorStatePos(SplitPaneState.java:232)
         at oracle.ideimpl.editor.SplitPaneState.setCurrentEditorStatePos(SplitPaneState.java:195)
         at oracle.ideimpl.editor.TabGroupState.createSplitPaneState(TabGroupState.java:102)
         at oracle.ideimpl.editor.TabGroup.addTabGroupState(TabGroup.java:379)
         at oracle.ideimpl.editor.EditorManagerImpl.createEditor(EditorManagerImpl.java:1403)
         at oracle.ideimpl.editor.EditorManagerImpl.createEditor(EditorManagerImpl.java:1337)
         at oracle.ideimpl.editor.EditorManagerImpl.openEditor(EditorManagerImpl.java:1263)
         at oracle.ide.editor.EditorUtil.openDefaultEditorInFrame(EditorUtil.java:164)
         at oracle.dmt.dataminer.workflow.WorkflowContextMenu$2.actionPerformed(Unknown Source)
         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
         at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
         at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
         at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
         at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
         at java.awt.Component.processMouseEvent(Component.java:6504)
         at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
         at java.awt.Component.processEvent(Component.java:6269)
         at java.awt.Container.processEvent(Container.java:2229)
         at java.awt.Component.dispatchEventImpl(Component.java:4860)
         at java.awt.Container.dispatchEventImpl(Container.java:2287)
         at java.awt.Component.dispatchEvent(Component.java:4686)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
         at java.awt.Container.dispatchEventImpl(Container.java:2273)
         at java.awt.Window.dispatchEventImpl(Window.java:2713)
         at java.awt.Component.dispatchEvent(Component.java:4686)
         at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
         at java.awt.EventQueue.access$000(EventQueue.java:101)
         at java.awt.EventQueue$3.run(EventQueue.java:666)
         at java.awt.EventQueue$3.run(EventQueue.java:664)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
         at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
         at java.awt.EventQueue$4.run(EventQueue.java:680)
         at java.awt.EventQueue$4.run(EventQueue.java:678)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    I get this error for Decision Tree Model only. For other models, there is no problem. How can I fix it?
    Thank you.

    After setting system language to English, be sure to restart SQL Dev to retry the test.
    Make sure you have the latest patches installed.
    Go to menu: Help-> About. In the About dialog, select the Extensions tab and check if you have Data Miner version 11.2.0.2.04.40. If not, go to menu Help->Check for Updates, and install the SQL Developer and Data Miner patches.
    SQL Dev 3.0 is not certified with Java 7.
    Thanks,
    Marat
    Edited by: mspivak on Jan 10, 2012 12:33 PM
    Edited by: mspivak on Jan 10, 2012 12:33 PM
    Edited by: mspivak on Jan 10, 2012 12:34 PM

  • Decision Trees with ODM 10.1

    Hi all,
    Does anybody know how to use DTs with ODM R1?. Maybe with the ABN model?.
    Any hint or recommendation to start with this?
    Thanks in advance!

    In ODM 10.1 you can get a type of decision tree using ODM in single feature mode. Unlike a traditional decision tree algorithm (e.g., CART), this type of ABM model creates a tree that, for a given level of the tree, it splits all the nodes along the same attribute. This ABN approach has the advantage of being more robust than traditional decision tree models. However, it works better (more accuracy and deeper trees) if the data set has a large number of rows.
    -Marcos

  • Exporting Decision Tree Rules

    I have built the decision tree model in ODM GUI. I would like to export all the decision rules in XLS or PPT from the built model. What is the appropriate way to do this.
    Thanks,
    Avinash

    Hi Avinash,
    Add a Model Details node to the workflow and connect the Build Class node (or the Model node) to the Model Details node.
    Then edit the Model Details node and select the DT details you are interested in.
    In your case, I think that is the Full Tree details.
    You can then right click and select View Data off of the Model Details node and then ctl-a, ctl-c and paste into spreadsheet.
    Thanks, Mark

  • Decision Tree in ODM

    The sum of number of observations from each leaf node is less than the total number of observations in my decision tree model. Am I missing something here?
    Thanks,
    Avinash

    Some rows may not reach the leaves. If there is a NULL value for the splitter attribute in a row, then the row can stop in a branch node. When predicting such a row, we will try the surrogate (if available), but if we cannot use the surrogate, then the scoring process will stop and provide the branch node as the final, predicted node. When building, the row may not follow the surrogate path as it is not available at that phase of build.

  • Decision Tree training runtime error. Perform Pruning.

    Hello I get the error below when trying to train a decisio n tree model in RSANWB. The same model trained correctly before I selected Perform Pruning + Extended Pruning in the Parameters tab.
    Note 738285 seems to address a similar problem, but is not applicable (or already corrected) in the system I am running (SAPKW35012, SAPKIBIFP5).
    Can anyone help me on that?
    Claudio Ciardelli
    Here is the error log.
    Runtime Errors         TABLE_FREE_IN_LOOP
    Date and Time          28.07.2005 15:40:59
    |ShrtText                                                                                |
    |    When you LOOP through an internal table, you must not change it.                              |
    |What happened?                                                                                |
    |    Error in ABAP application program.                                                            |
    |                                                                                |
    |    The current ABAP program "SAPLRS_DME_DECISION_TREE_PRUNE" had to be terminated                |
    |     because one of the                                                                           |
    |    statements could not be executed.                                                             |
    |                                                                                |
    |    This is probably due to an error in the ABAP program.                                         |
    |Error analysis                                                                                |
    |    When you LOOP through an internal table, the table as a whole may                             |
    |    not be changed,                                                                               |
    |    SORT, MOVE, REFRESH, and CLEAR are, for example, not allowed.                                 |
    |Trigger Location of Runtime Error                                                                 |
    |    Program                                 SAPLRS_DME_DECISION_TREE_PRUNE                        |
    |    Include                                 LRS_DME_DECISION_TREE_PRUNEF01                        |
    |    Row                                     163                                                   |
    |    Module type                             (FORM)                                                |
    |    Module Name                             UPDATE_BRANCH_NEW                                     |
    |Source Code Extract                                                                               |
    |Line |SourceCde                                                                                |
    |  133|  IF sy-subrc EQ space.                                                                     |
    |  134|    l_parent_index = sy-tabix.                                                              |
    |  135|    LOOP AT gt_tree_sorted                                                                  |
    |  136|       ASSIGNING <fs_tree>                                                                  |
    |  137|       FROM l_parent_index.                                                                 |
    |  138|      IF <fs_tree>-parent NE p_node.                                                        |
    |  139|        EXIT.                                                                               |
    |  140|      ENDIF.                                                                                |
    |  141|      CHECK <fs_tree>-node NE p_branch.                                                     |
    |  142|      l_node_index = sy-tabix.                                                              |
    |  143|      PERFORM delete_children_new USING <fs_tree>-node.                                     |
    |  144|      DELETE gt_tree_sorted INDEX l_node_index.                                             |
    |  145|    ENDLOOP.                                                                                |
    |  146|  ENDIF.                                                                                |
    |  147|* Update Parent = P_NODE for all Childnodes of P_BRANCH                                     |
    |  148|  READ TABLE gt_tree_sorted TRANSPORTING NO FIELDS                                          |
    |  149|    WITH KEY parent = p_branch BINARY SEARCH.                                               |
    |  150|  IF sy-subrc EQ space.                                                                     |
    |  151|    l_parent_index = sy-tabix.                                                              |
    |  152|    LOOP AT gt_tree_sorted                                                                  |
    |  153|       ASSIGNING <fs_tree>                                                                  |
    |  154|       FROM l_parent_index.                                                                 |
    |  155|      IF <fs_tree>-parent NE p_branch.                                                      |
    |  156|        EXIT.                                                                               |
    |  157|      ENDIF.                                                                                |
    |  158|      l_node_index = sy-tabix.                                                              |
    |  159|      <fs_tree>-parent = p_node.                                                            |
    |  160|    ENDLOOP.                                                                                |
    |  161|  ENDIF.                                                                                |
    |  162|* Sort again..since parent info is changed..                                                |
    |>>>>>|  SORT gt_tree_sorted BY parent node.                                                       |
    |  164|* Update Parent = P_NODE for all Childnodes of P_BRANCH                                     |
    |  165|  READ TABLE gt_tree_sorted TRANSPORTING NO FIELDS                                          |
    |  166|    WITH KEY parent = p_branch_parent                                                       |
    |  167|             node = p_branch BINARY SEARCH.                                                 |
    |  168|  IF sy-subrc EQ space.                                                                     |
    |  169|    DELETE gt_tree_sorted INDEX sy-tabix.                                                   |
    |  170|  ENDIF.                                                                                |
    |  171|                                                                                |
    |  172|                                                                                |
    |  173|ENDFORM.                    "update_branch_new                                              |
    |  174|                                                                                |
    |  175|*&---------------------------------------------------------------------*                    |
    |  176|*&      Form  update_tree                                                                   |
    |  177|*&---------------------------------------------------------------------*                    |
    |  178|*       text                                                                                |
    |  179|*----------------------------------------------------------------------*                    |
    |  180|*      -->P_I_T_CLASSDIST  text                                                             |
    |  181|*      -->P_I_NODE  text                                                                    |
    |  182|*----------------------------------------------------------------------*                    |
    Message was edited by: Claudio Ciardelli

    otherwise I would contact SAP because you can't update the temp internal table (See ABAP Coding),
    best regards,
    Klaus

  • What is a Decision Tree Algorithm?

    hi there,
    what is a decision tree algorithm??

    Hi,
    Decision trees are used to learn from historic data and to make predictions about the future. Prediction involves establishing rules using historic data and applying these rules to new data. These rules are displayed graphically as a hierarchy.
    Ex : Your customer data typically contains attributes such as gender, age, income, region, and occupation as well as information about whether a customer is a satisfied customer or not (possibly drawn from a survey). You can use such historic data to train a decision tree. You find out as a result that customers exhibiting certain attributes are generally satisfied customers while customers exhibiting other attributes tend to be dissatisfied customers. You can use rules determined in this way to assess the satisfaction of other customers in cases where this information is not available.
    Integration :
    The data that you use to train the model can be taken from any other system, provided that the system can extract data into SAP BW. Similarly, you can apply the identified rules to any data that has been extracted into SAP BW. In SAP BW, you can use queries to access data with known statements and then use this data to find out statements about other data.
    Regards
    Ram.

  • Decision Trees

    Does ODM support Decision Trees.
    If support, which algorithms.
    Thank you.

    We currently do not support classical decision trees. We do support something called Adaptive Bayes Networks that are "similar" in that they can produce "rules" that provide some level of model transparancy. There is a technical white paper on ABN here http://otn.oracle.com/products/bi/pdf/adaptive_bayes_net.pdf

  • CSTVI decision tree

    Hi All,
                can any1 plz help me how to create CSTVI decision tree.
       Is it compulsory to create CSTVI, CRDVI,COVGR,EECGR decision trees&  why do we create them?
    Thanks,
    satya

    1. You can read more about the algorithm at
    http://technet.microsoft.com/en-us/library/ms175312.aspx ,
    http://technet.microsoft.com/en-us/library/cc645868.aspx
    2. You don't need to write code to use algorithms from SQL Server. If you are just getting started, I recommend you to use Excel Data Mining Add-ins to create the models
    http://www.microsoft.com/en-us/download/details.aspx?id=35578
    If you don't have Excel, you can create models from SQL Server Development Studio, but it is more difficult to use.
    What are you trying to do?
    Tatyana Yakushev [PredixionSoftware.com]
    Download Predixion Insight 3.0 - World class predictive platform for big data

  • Creating Tree Model in JDeveloper 11.1.2

    hi!
    I tried the steps written in blog below but it didn't work. The output was 'no data to display'. Can anyone suggest me where I can find full procedure according to JDeveloper 11.1.2 for creating our own Tree model.
    [http://www.yonaweb.be/creating_your_own_treemodel_adf_11g_0]
    Thanks in advance!!
    Edited by: 886029 on Sep 22, 2011 4:51 AM

    You can check the tree demos here:
    http://www.oracle.com/technetwork/developer-tools/adf/documentation/adf-faces-rc-demo-083799.html
    for examples of beans with tree model.
    Of course if you are just accessing a database, then using ADF BC or JPA/EJB will get you there without any code needed.

  • How to create a decision tree in ABAP (in SAP or not, and how????)

    Hello,
    I have to create a decision tree which has to be called within a BAPI.
    This tree finally has to return 1 single value.
    Can you tell me what's the best solution for this ?
    Should I do this with abap, or should I call a webapplication which provides this tree for me ?
    It would be great if you could provide some example-code for me.
    Kind regards,
    Gert-Jan

    I am not sure I understood what you meant by decision tree. If you are simply talking about arriving at an answer based on one or more inputs, then it is a simple IF ELSEIF ELSE statements or CASE statements.
    Can you please elaborate/give example of what you mean by decision tree?

  • How to hide a tree node from the GUI but still keep it in the tree model?

    Hi, All
    I used a JTree in my project in which I have a DefaultTreeModel to store all the tree structure and a JTree show it on the screen. But for some reason, I want to hide some of the nodes from the user, but I don't want to remove them from the tree model because later on I still need to use them.
    I searched on the web, some people suggested method to hide the root node, but that's not appliable to my project because I want to hide some non-root nodes; Some people also suggested to collapse the parent node when there are child to hide, it is not appliable to me either, because there still some other childnodes (sibling of the node to hide) I want to show.
    How can I hide some of the tree node from the user? Thanks for any information.
    Linda

    Here's an example using a derivation of DefaultTreeModel that shows (or does not show) two types of Sneech (appologies to the good Dr Zeus) by overiding two methods on the model.
    Now, there are many things wrong with this example (using instanceof, for example), but it's pretty tight and shows one way of doing what you want.
    Note: to make it useful, you''d have to change the implementation of setShowStarBelliedSneeches() to do something more sophisticated than simply firing a structure change event on the root node. You'd want to find all the star bellied sneech nodes and call fireTreeNodesRemoved(). That way the tree would stay expanded rather than collapse as it does now.
    import javax.swing.JTree;
    import javax.swing.JScrollPane;
    import javax.swing.JOptionPane;
    import javax.swing.JCheckBox;
    import javax.swing.JPanel;
    import javax.swing.tree.TreePath;
    import javax.swing.tree.DefaultTreeModel;
    import javax.swing.tree.DefaultMutableTreeNode;
    import java.awt.Dimension;
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Enumeration;
    class FilteredTree
         private class PlainBelliedSneech {
              public String toString() { return "Plain Bellied Sneech"; }
         private class StarBelliedSneech {
              public String toString() { return "Star Bellied Sneech"; }
         private class FilteredTreeModel
              extends DefaultTreeModel
              private boolean mShowStarBelliedSneeches= true;
              private DefaultMutableTreeNode mRoot;
              FilteredTreeModel(DefaultMutableTreeNode root)
                   super(root);
                   mRoot= root;
              public Object getChild(Object parent, int index)
                   DefaultMutableTreeNode node=
                        (DefaultMutableTreeNode) parent;
                   if (mShowStarBelliedSneeches)
                        return node.getChildAt(index);
                   int pos= 0;
                   for (int i= 0, cnt= 0; i< node.getChildCount(); i++) {
                        if (((DefaultMutableTreeNode) node.getChildAt(i)).getUserObject()
                                            instanceof PlainBelliedSneech)
                             if (cnt++ == index) {
                                  pos= i;
                                  break;
                   return node.getChildAt(pos);
              public int getChildCount(Object parent)
                   DefaultMutableTreeNode node=
                        (DefaultMutableTreeNode) parent;
                   if (mShowStarBelliedSneeches)
                        return node.getChildCount();
                   int childCount= 0;
                   Enumeration children= node.children();
                   while (children.hasMoreElements()) {
                        if (((DefaultMutableTreeNode) children.nextElement()).getUserObject()
                                            instanceof PlainBelliedSneech)
                             childCount++;
                   return childCount;
              public boolean getShowStarBelliedSneeches() {
                   return mShowStarBelliedSneeches;
              public void setShowStarBelliedSneeches(boolean showStarBelliedSneeches)
                   if (showStarBelliedSneeches != mShowStarBelliedSneeches) {
                        mShowStarBelliedSneeches= showStarBelliedSneeches;
                        Object[] path= { mRoot };
                        int[] childIndices= new int[root.getChildCount()];
                        Object[] children= new Object[root.getChildCount()];
                        for (int i= 0; i< root.getChildCount(); i++) {
                             childIndices= i;
                             children[i]= root.getChildAt(i);
                        fireTreeStructureChanged(this, path, childIndices, children);
         private FilteredTree()
              final DefaultMutableTreeNode root= new DefaultMutableTreeNode("Root");
              DefaultMutableTreeNode parent;
              DefaultMutableTreeNode child;
              for (int i= 0; i< 2; i++) {
                   parent= new DefaultMutableTreeNode(new PlainBelliedSneech());
                   root.add(parent);
                   for (int j= 0; j< 2; j++) {
                        child= new DefaultMutableTreeNode(new StarBelliedSneech());
                        parent.add(child);
                        for (int k= 0; k< 2; k++)
                             child.add(new DefaultMutableTreeNode(new PlainBelliedSneech()));
                   for (int j= 0; j< 2; j++)
                        parent.add(new DefaultMutableTreeNode(new PlainBelliedSneech()));
                   parent= new DefaultMutableTreeNode(new StarBelliedSneech());
                   root.add(parent);
                   for (int j= 0; j< 2; j++) {
                        child= new DefaultMutableTreeNode(new PlainBelliedSneech());
                        parent.add(child);
                        for (int k= 0; k< 2; k++)
                             child.add(new DefaultMutableTreeNode(new StarBelliedSneech()));
                   for (int j= 0; j< 2; j++)
                        parent.add(new DefaultMutableTreeNode(new StarBelliedSneech()));
              final FilteredTreeModel model= new FilteredTreeModel(root);
              JTree tree= new JTree(model);
    tree.setShowsRootHandles(true);
    tree.putClientProperty("JTree.lineStyle", "Angled");
              tree.setRootVisible(false);
              JScrollPane sp= new JScrollPane(tree);
              sp.setPreferredSize(new Dimension(200,400));
              final JCheckBox check= new JCheckBox("Show Star Bellied Sneeches");
              check.setSelected(model.getShowStarBelliedSneeches());
              check.addActionListener(new ActionListener() {
                   public void actionPerformed(ActionEvent e) {
                        model.setShowStarBelliedSneeches(check.isSelected());
              JPanel panel= new JPanel(new BorderLayout());
              panel.add(check, BorderLayout.NORTH);
              panel.add(sp, BorderLayout.CENTER);
              JOptionPane.showOptionDialog(
                   null, panel, "Sneeches on Beeches",
                   JOptionPane.DEFAULT_OPTION,
                   JOptionPane.PLAIN_MESSAGE,
                   null, new String[0], null
              System.exit(0);
         public static void main(String[] argv) {
              new FilteredTree();

  • Bette way to referenced tree model nodes from UI to perform actions on them

    A singleton facade is built.
    Its init() method loads several "tree model configs", each of them referenced by a name.
    This singleton creates a Project instance for a given "tree model config" calling the facade method -> createProject(String pjrName, String modelConfigName)
    When the Project is built a new Model instance is set ( remember the model instance is a tree holding nodes )
    The new Project instance built is added to a List that the facade has and then it's returned to the UI part that called ->createProject(prjName,modelconfigName)
    Given the Project instance the UI has to build a JTree representation of the model that the project references and the UI will have button actions that should call methods of the Nodes of the model referenced by the Project.
    Doing it this way the UI will be able to reference objects directly without going through the facade.
    Maybe I should return to the UI something like a ProjectKey instance instead of letting have the UI the Project instance ?
    It should be better if I process the possible node actions behind the Facade and not the UI, but how can I do it ?
    Having a ProjectKey in my UI I could ask the facade a model tree representation but not having the real nodes, otherwise having some NodeKey instances ?

    Sounds like you want to represent a tree structure, without a reference to the real tree.
    I'll take it further: maybe you don't want the UI to know there's a real tree data-structure with nodes and pointers to children, because maybe you build the tree on the fly from a database.
    So use the Builder pattern instead of committing to a specific data structure.
    Google results for Builder pattern: http://www.google.com/search?hl=en&q=builder+pattern&btnG=Google+Search
    Your UI should know how to construct nodes and children graphically, when told. This means it should have methods like addNode, but related to the domain: addSubProject maybe.
    A Project object is the Director, knowing which part goes where, but it doesn't know the real end result (a JPanel or HTML). So it has a method buildProject(Builder e) or exportProject(Exporter e), where all logic of assembling the parts is.
    When you have that, write a class JTreeProjectExporter implements Exporter.
    Hope this helps.

Maybe you are looking for

  • My iphone 5s won't show up in itunes after the 11.1.4 update. How do I connect it so I can sync music again?

    It's been about three weeks since I was able to connect my phone to itunes. When I connect my phone to my computer, it will show up on the desktop, and I can sync my photos, but itunes doesn't recognize it. I've tried removing and downloading itunes

  • Primary Key in nested tables

    Let's assume I have a table containing only one column with users. Behind this table I have a nested table containing different lists. Thus, one database row consists of one user and different list names. However, every user should be only allowed to

  • Problems reading waveform files in MATLAB

    Deal all, I acquired signals on 2 A/D channel (using DAQ board M USB-6215) and save them into waveform file using WriteWaveformsFile.vi. But for processing (FFT, elippse fitting, sinewave fitting) I want to use these data in MATLAB. I tried some opti

  • "No Applicable data in Infoset"

    Hi All, Please could anyone help me in solving the issue for Infoset where I have four ODS's and three Info-Objects. But when I report on it no applicable data is found inspite all the data targets are loaded with the data. Previously there were only

  • RoboPDF (unattended removal)

    Can anyone point me into the right direction with removing RoboPDF? I am able to remove it using a script that leverages WMI but there are still two items leftover after the removal. 1. It's still listed under Add/Remove Programs 2. The RoboPDF print