<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Large Application Structure in LabVIEW</title>
    <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103914#M487828</link>
    <description>You should research the &lt;A href="http://search.ni.com/nisearch/app/main/p/bot/no/ps/10/ap/global/scope/en%2Cnl/q/subpanel%20example/" target="_self"&gt;subpanel&lt;/A&gt; structure (sounds very suitable in this kind of structure) and the use of &lt;A href="http://search.ni.com/nisearch/app/main/p/y/5/q/functional%20global/x/16/" target="_self"&gt;Functional Globals&lt;/A&gt; (&lt;A href="http://labviewwiki.org/Functional_global_variable" target="_self"&gt;Labview wiki&lt;/A&gt;) or Action Engines&amp;nbsp; to store the large cluster and have it operate on the data.&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by andre.buurman@carya on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-02-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 01:20 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by andre.buurman@carya on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-02-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 01:21 PM&lt;/SPAN&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 02 Apr 2010 11:21:56 GMT</pubDate>
    <dc:creator>andre.buurman@carya</dc:creator>
    <dc:date>2010-04-02T11:21:56Z</dc:date>
    <item>
      <title>Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103742#M487756</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am thinking about the structure of a large application.&amp;nbsp; I have built 5 independent VIs (each from independent LV Projects); 4 which gain the necessary inputs from the user (each has While Loop with Event Structure) and do their own processing to devise a large set of input data and parameters for a main processing VI.&amp;nbsp; The main processing VI can be slow to function.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I was considering the following structure:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A main UI VI which calls each of the 4 UI VIs in succession using an invoke node or similar&amp;nbsp;via the VI subpanels.&amp;nbsp; I have never used&amp;nbsp;a VI subpanel.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Passed to each of the&amp;nbsp;4 UI VIs is a&amp;nbsp;large cluster which each contributes to.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The large cluster is passed to the main processing VI (which has independent While Loop) via a Queue?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;IMG src="http://forums.ni.com/t5/image/serverpage/image-id/13076i1DB91BE9EE7DC259/image-size/original?v=mpbl-1&amp;amp;px=-1" border="0" alt="Program Structure.jpg" title="Program Structure.jpg" align="center" /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Your thoughts, ideas and examples would be greatly appreciated.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Battler.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 01 Apr 2010 23:42:34 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103742#M487756</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-01T23:42:34Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103914#M487828</link>
      <description>You should research the &lt;A href="http://search.ni.com/nisearch/app/main/p/bot/no/ps/10/ap/global/scope/en%2Cnl/q/subpanel%20example/" target="_self"&gt;subpanel&lt;/A&gt; structure (sounds very suitable in this kind of structure) and the use of &lt;A href="http://search.ni.com/nisearch/app/main/p/y/5/q/functional%20global/x/16/" target="_self"&gt;Functional Globals&lt;/A&gt; (&lt;A href="http://labviewwiki.org/Functional_global_variable" target="_self"&gt;Labview wiki&lt;/A&gt;) or Action Engines&amp;nbsp; to store the large cluster and have it operate on the data.&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by andre.buurman@carya on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-02-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 01:20 PM&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by andre.buurman@carya on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-02-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 01:21 PM&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 02 Apr 2010 11:21:56 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103914#M487828</guid>
      <dc:creator>andre.buurman@carya</dc:creator>
      <dc:date>2010-04-02T11:21:56Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103950#M487847</link>
      <description>&lt;P&gt;Sounds reasonable. In the LabVIEW style book by Blume there is an example of using subpanels with vi server (if I remember correctly).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You could place the Config App, App1, ... inside a state machine. This will be nice if you need to change/insert anything on that sequence (lika an abort functionality).&lt;/P&gt;&lt;P&gt;If your processing App might be slow, it is also reasonable to use the producer/consumer design pattern.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think some pitfalls are in the event handling of the main window. You would need one more loop to catch events like the Panel Close? or an global Exit. Then you need to pass this event to any of the 4 Apps that might be running in the SubPanel. I would advice to use User Events for this, as the apps already have an Event Structure.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you go OOP, there is some more concepts you might use... &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Felix &lt;/P&gt;</description>
      <pubDate>Fri, 02 Apr 2010 12:55:42 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103950#M487847</guid>
      <dc:creator>F._Schubert</dc:creator>
      <dc:date>2010-04-02T12:55:42Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103956#M487849</link>
      <description>&lt;P&gt;Thanks guys.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm thinking SubPanels with Producer/Consumer structure.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I can't picture how a state machine might work.&amp;nbsp; Example?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Object orientated design I know nothing about..&amp;nbsp; How to learn more?&lt;/P&gt;</description>
      <pubDate>Fri, 02 Apr 2010 13:11:44 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103956#M487849</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-02T13:11:44Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103968#M487858</link>
      <description>&lt;P&gt;You could have all VI's integrated in the main VI by putting it in a state-machine and have the UI's of the different VI be accesable via a tab control.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My personal favourite in this case is to use the subpanel when the configuration items have no direct relation and to use a single VI with tab control when they do. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Text below is just in case you don't know what a state-machine is. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="http://labviewwiki.org/State_machine" target="_self"&gt;State-machine&lt;/A&gt; basic explanation.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;E.g. an application has 3 states: &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Init (do all initialisation and auto-transition to next state "main"), &lt;/P&gt;&lt;P&gt;Main (do all normal application stuff, e.g. event structure for UI handling, transition to state "Clean-up" on app stop event),&lt;/P&gt;&lt;P&gt;Clean-up (close all references and delete temporary files).&amp;nbsp; &lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by andre.buurman@carya on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-02-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 03:41 PM&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 02 Apr 2010 13:41:20 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103968#M487858</guid>
      <dc:creator>andre.buurman@carya</dc:creator>
      <dc:date>2010-04-02T13:41:20Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103973#M487861</link>
      <description>&lt;P&gt;Yes I've used that structure (state-machine) before, but not for such a large application.&amp;nbsp; I think user events is more efficient than this, correct?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm thinking of adding Producer loop with processing VI.&amp;nbsp; Could I use a kind of global VI for this?&amp;nbsp; Can I&amp;nbsp;acquire a queue&amp;nbsp;from a VI not on the BD (i.e. globally) just by using the queue name?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Should I place the processing VI onto the BD?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How to pass 1 large cluster (is this the way to do it?) between applications which I'm calling via VI subpanel invoke method?&amp;nbsp; Since they will only be called and won't actually be placed onto BD (or will they?), how to pass data in and out of them?&lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by battler. on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-02-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 08:46 AM&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 02 Apr 2010 13:46:18 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103973#M487861</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-02T13:46:18Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103975#M487862</link>
      <description>&lt;DIV class="wrapper-hide-overflow message-body justify"&gt;&lt;P&gt;"You could have all VI's integrated in the main VI by putting it in a state-machine and have the UI's of the different VI be accesable via a tab control."&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Q.&amp;nbsp; How to make the UI of each VI accessible via Tab control?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My personal favourite in this case is to use the subpanel when the configuration items have no direct relation and to use a single VI with tab control when they do.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Q.&amp;nbsp; I have no idea what you mean.&amp;nbsp; Example?&amp;nbsp; Image?&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 02 Apr 2010 13:50:11 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103975#M487862</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-02T13:50:11Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103997#M487875</link>
      <description>&lt;P&gt;Q. What is you idea of a large application? &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"&lt;SPAN class="noindex"&gt;Q.&amp;nbsp; How to make the UI of each VI accessible via 
Tab control?"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;You will have to copy the frontpanel of the VI's to the pages of a tab control and integrate the code into the Vi that contains the tab control. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"&lt;SPAN class="noindex"&gt;Q.&amp;nbsp; I have no idea what you mean.&amp;nbsp; Example?&amp;nbsp; 
Image?'&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;E.g. there is settings VI for DAQ, one for logging and some more. In that case I would keep them in separate VI's and integrate them as either subpanels or as dialog boxes.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The Functional Global construct is very usefull to pass data between dynamically started VI's in case of the subpanel. It is advisable though to create one functional global per data type (e.g. one for DAQ parameters, one for Path configuration, etc) &lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by andre.buurman@carya on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-02-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 04:16 PM&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 02 Apr 2010 14:16:29 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1103997#M487875</guid>
      <dc:creator>andre.buurman@carya</dc:creator>
      <dc:date>2010-04-02T14:16:29Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104002#M487877</link>
      <description>&lt;P&gt;To clarify some of my ideas, here a fast scetch: &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;IMG src="https://ip1.i.lithium.com/ac1e8df7c4322fc2504fc63f8c6ed2d31fc20285/68747470733a2f2f6e692e6c69746869756d2e636f6d2f74352f696d6167652f736572766572706167652f696d6167652d69642f313331303269434337374335444332424230374545352f696d6167652d73697a652f6f726967696e616c3f763d6d70626c2d312670783d2d31" border="0" alt="Large App Scetch_BD.png" title="Large App Scetch_BD.png" align="CENTER" /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Sorry, CCT didn't work to make a snippet.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Felix &lt;/P&gt;</description>
      <pubDate>Fri, 02 Apr 2010 14:21:44 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104002#M487877</guid>
      <dc:creator>F._Schubert</dc:creator>
      <dc:date>2010-04-02T14:21:44Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104294#M488002</link>
      <description>&lt;P&gt;The application consists of 5 separate projects (100+ VIs each), each with a single main VI.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am interested in the use of these "functional globals" but have never used them.&amp;nbsp; How can I learn more?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I also want to dynamically call VIs.&amp;nbsp; I believe I know how to do this but not sure how to best fit it into the overall structure.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for posting the screenshots.&lt;/P&gt;</description>
      <pubDate>Sat, 03 Apr 2010 03:47:27 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104294#M488002</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-03T03:47:27Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104298#M488006</link>
      <description>An excellent source for how to use functional globabls is Ben's &lt;A href="http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=240328" target="_blank"&gt;Action Engine Nugget&lt;/A&gt;</description>
      <pubDate>Sat, 03 Apr 2010 03:52:29 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104298#M488006</guid>
      <dc:creator>RavensFan</dc:creator>
      <dc:date>2010-04-03T03:52:29Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104299#M488007</link>
      <description>&lt;P&gt;Schubert,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How to pass large (global?) cluster between the dynamically called VIs?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The large cluster will consist of&amp;nbsp;4 smaller clusters - 1 each for config app, app1, app2, app3.&amp;nbsp; Each of the apps should fill out the data into their respective cluster.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The large cluster should be stored where?&amp;nbsp; In a global buffer VI?&amp;nbsp; Should it be stored in the same location as the processing VI, since this is the VI which will ultimately process the large cluster?&lt;/P&gt;</description>
      <pubDate>Sat, 03 Apr 2010 03:53:46 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104299#M488007</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-03T03:53:46Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104300#M488008</link>
      <description>Thanks again Raven.</description>
      <pubDate>Sat, 03 Apr 2010 03:55:23 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104300#M488008</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-03T03:55:23Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104339#M488029</link>
      <description>&lt;P&gt;A structure to pass data between dynamically called VIs is a functional global.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;There different ways to do it (queues, user events, etc), but this is the easiest to create. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would suggest to create a functional global (action engine) per app, so you get FG_app, FG_app1, FG_app2 and FG_app3. There is no point in creating only one, since that would create dependencies between the apps (maintanability).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What is you LV version in case someone want to post an example? &lt;/P&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by andre.buurman@carya on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-03-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 12:21 PM&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 03 Apr 2010 10:21:34 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104339#M488029</guid>
      <dc:creator>andre.buurman@carya</dc:creator>
      <dc:date>2010-04-03T10:21:34Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104345#M488032</link>
      <description>&lt;P&gt;Hi Andre,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm using LV 2009.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1. You mean an action engine per app?&amp;nbsp; The Processing App would need data from all FG_app1, FGapp2 etc.&amp;nbsp; How would that work?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. Would the Processing app still use a queue in a Producer/Consumer arrangment?&amp;nbsp; The Processing app will be slow and I want the option of a batch processor; where I queue up several configurations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3. I do not understand what is "a wrapper VI for each type of AE call".&amp;nbsp; An example of what a "wrapper VI" is would be great.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;4. I have never gone about building an AE.&amp;nbsp; How do I go about that?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks.&lt;/P&gt;</description>
      <pubDate>Sat, 03 Apr 2010 11:53:11 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104345#M488032</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-03T11:53:11Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104348#M488034</link>
      <description>&lt;P&gt;Passing data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Use a wire. Inside the State machine, this is via shift register. And then via queue.&lt;/P&gt;&lt;P&gt;Using a functinal global might lead to race conditions or a laggy behaviour if your processing loop takes long time and the user starts again with the ConfigApp.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now concerning Action Engines. They are the poor man's Objects (but they work via vi server reference, which might be useful in your case).So you actually could go on using OOP as a 'glorfied cluster'. The main principle behind both ideas is to protect the data from unwanted modifications 'encapsulation'. In an AE, you will have a wrapper for each element to Set or Get and some extra methods. In OOP these are called accessor vi's. So when you make your cluster an object, you will use the accessor vi's instead of the bundle/undbundel function directly (inside the accessor vi, there is just this unbundel/bundle function).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What could help you at this stage is documenting the objects (even if you have clusters for now) using established methods like uml class diagrams. Ask these questions:&lt;/P&gt;&lt;P&gt;* Which of the data is shared among your 4 main vi's&lt;/P&gt;&lt;P&gt;* In detail which parts need to be accessed at which place&lt;/P&gt;&lt;P&gt;* Which operations need to be performed on the cluster (which would translate to methods in OOP or Actions in AEs).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think if you can come up with a scetch of this, we can help more... &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Felix &lt;/P&gt;</description>
      <pubDate>Sat, 03 Apr 2010 12:13:08 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104348#M488034</guid>
      <dc:creator>F._Schubert</dc:creator>
      <dc:date>2010-04-03T12:13:08Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104351#M488036</link>
      <description>&lt;P&gt;Felix,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I cannot understand all this jargon without seeing example BD.&amp;nbsp; Can you post some images or point me in the direction of where I can find examples.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am interested in this OOP but I need documentation and examples.&amp;nbsp; Know where to get it?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;A&amp;nbsp;step&amp;nbsp;should be, as you say, to write down all the inputs and outputs of the 4 Apps and any dependent data between them. The processing VI will need all the data.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However,&amp;nbsp;I will construct a scaled-down version of the complete architectue; the 4 Apps and Processing app will be simplified.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Battler.&lt;/P&gt;</description>
      <pubDate>Sat, 03 Apr 2010 12:29:55 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104351#M488036</guid>
      <dc:creator>battler.</dc:creator>
      <dc:date>2010-04-03T12:29:55Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104353#M488038</link>
      <description>&lt;SPAN class="noindex"&gt;&lt;P&gt;1. You mean an action engine per app?&amp;nbsp; The 
Processing App would need data from all FG_app1, FGapp2 etc.&amp;nbsp; How would 
that work?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yes, see attached example. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. Would the Processing app still use a queue 
in a Producer/Consumer arrangment?&amp;nbsp; The Processing app will be slow and I
 want the option of a batch processor; where I queue up several 
configurations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Yes, in that case a queue does what it is designed to do. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;3. I do not understand what is "a wrapper 
VI for each type of AE call".&amp;nbsp; An example of what a "wrapper VI" is 
would be great.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You probably don't need wrapper VI's. The AE itself is a way of data-encapsulation. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;4. I have never gone about building an 
AE.&amp;nbsp; How do I go about that?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;See example and see &lt;A href="http://forums.ni.com/ni/board/message?board.id=170&amp;amp;message.id=240328" target="_self"&gt;Ben's Nugget&lt;/A&gt;. &lt;/P&gt;&lt;/SPAN&gt;&lt;DIV class="message-edit-history"&gt;&lt;SPAN class="edit-author"&gt;Message Edited by andre.buurman@carya on &lt;/SPAN&gt;&lt;SPAN class="local-date"&gt; 04-03-2010&lt;/SPAN&gt;&lt;SPAN class="local-time"&gt; 03:22 PM&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 03 Apr 2010 13:22:52 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104353#M488038</guid>
      <dc:creator>andre.buurman@carya</dc:creator>
      <dc:date>2010-04-03T13:22:52Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104359#M488040</link>
      <description>&lt;P&gt;Wrapper VI's: See Andres example as a reference. I would make a wrapper vi for the Write Action which makes the Data Cluster input required. And a wrapper vi for the Read Action that won't have the input cluster on the connector pane. This isn't really code but more like 'documenting' the actions (which inputs/ouputs are valid, required ...). &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Felix &lt;/P&gt;</description>
      <pubDate>Sat, 03 Apr 2010 14:32:31 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104359#M488040</guid>
      <dc:creator>F._Schubert</dc:creator>
      <dc:date>2010-04-03T14:32:31Z</dc:date>
    </item>
    <item>
      <title>Re: Large Application Structure</title>
      <link>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104399#M488066</link>
      <description>&lt;P&gt;I see your point of view. Personally I don't do that in my projects (time overhead), though it make to resulting code a bit easier to understand.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When using it without wrapper for each method, you can always put a good description in the VI.documentation field. &lt;/P&gt;</description>
      <pubDate>Sat, 03 Apr 2010 20:29:12 GMT</pubDate>
      <guid>https://ni.lithium.com/t5/LabVIEW/Large-Application-Structure/m-p/1104399#M488066</guid>
      <dc:creator>andre.buurman@carya</dc:creator>
      <dc:date>2010-04-03T20:29:12Z</dc:date>
    </item>
  </channel>
</rss>

