Tags |
(This content has not been tagged yet)
|
![]() |
Jan 2 2008, 10:31 PM
Post
#1
|
|||
|
Changing the world, one VI at a time. JKI ![]() Posts: 1692 Joined: 22-October 02 From: San Francisco, CA Member No.: 17 Using LabVIEW Since:1995 LV:8.2.1 ,8.5 ,7.1.1
My Blog
My Gallery
|
--------------------
|
||
|
|
|||
| Ad |
Jan 2 2008, 10:31 PM
Post
#
|
||
|
|
|
||
|
|
|||
Jan 2 2008, 11:36 PM
Post
#2
|
|||
|
Changing the world, one VI at a time. JKI ![]() Posts: 1692 Joined: 22-October 02 From: San Francisco, CA Member No.: 17 Using LabVIEW Since:1995 LV:8.2.1 ,8.5 ,7.1.1
My Blog
My Gallery
|
This wiki article states
QUOTE An Action engine is an expansion on the Functional global variable concept. Action engines define operations in addition to "set" and "get". These actions are used to perform some modification of the data stored in the Functional global's uninitialized shift register (USR). I believe that functional globals also tend to have additional actions beyond set and get -- this is what makes them functional. I would prefer to just say that "action engine" and "functional global" are synonomous, rather than drawing distinctions. Also, (for what it's worth) I never really liked the word "engine" associated with this pattern since this implies (in my mind) some sort of asynchronous behavior. --------------------
|
||
|
|
|||
Jan 4 2008, 03:32 AM
Post
#3
|
|||
![]() Very Active Member Posts: 54 Joined: 4-April 07 From: Andover, CT Member No.: 8297 Using LabVIEW Since:1999 LV:8.2.1 ,7.1.1 ,.
My Blog
|
I disagree that "action engine" and "functional global" are synonomous, and I think that this definition oversimplifies things too much. Although functional globals are certainly good examples of action engines, AE's go much further than just storing and acting upon data. The classic examples that I've seen of action engines are device or communications drivers. Instead of having separate VI's for the standard driver functions (initialize, configure, write, read, close, etc.), an AE combines all of these functions into a single VI whose function is controlled by (typically) an enum input. The functional global aspects of the AE are used to maintain state or configuration information between calls -- in the case of a driver, for example, the VISA refnum obtained through the initialize call is retained internally by an uninitialized shift register.
Here's my crack at defining an AE: An Action Engine is a VI that encapsulates related functions into a single object, hides or abstracts the operational details of those functions while exposing the relevant inputs and outputs, allows execution of each of those functions through a selection control, and maintains internal configuration, state, or other private data via uninitialized shift registers. -------------------- LabVIEW. It's not just for breakfast anymore.
|
||
|
|
|||
Jan 4 2008, 04:17 AM
Post
#4
|
|||
|
Changing the world, one VI at a time. JKI ![]() Posts: 1692 Joined: 22-October 02 From: San Francisco, CA Member No.: 17 Using LabVIEW Since:1995 LV:8.2.1 ,8.5 ,7.1.1
My Blog
My Gallery
|
I disagree that "action engine" and "functional global" are synonomous, and I think that this definition oversimplifies things too much. Although functional globals are certainly good examples of action engines, AE's go much further than just storing and acting upon data. The classic examples that I've seen of action engines are device or communications drivers. Instead of having separate VI's for the standard driver functions (initialize, configure, write, read, close, etc.), an AE combines all of these functions into a single VI whose function is controlled by (typically) an enum input. The functional global aspects of the AE are used to maintain state or configuration information between calls -- in the case of a driver, for example, the VISA refnum obtained through the initialize call is retained internally by an uninitialized shift register. Here's my crack at defining an AE: An Action Engine is a VI that encapsulates related functions into a single object, hides or abstracts the operational details of those functions while exposing the relevant inputs and outputs, allows execution of each of those functions through a selection control, and maintains internal configuration, state, or other private data via uninitialized shift registers. I think that we just disagree about where Functional Globals end and where Action Engines begin -- I don't really see the point of defining a whole new pattern, just because a Functional Global has lots of... well... functionality. Also, we did put this up for a vote/poll a couple years ago. --------------------
|
||
|
|
|||
Jan 4 2008, 05:02 AM
Post
#5
|
|||
![]() Confucius say: Crowded elevator always smell different to midget Admin ![]() Posts: 2363 Joined: 13-October 02 From: Planet Earth Member No.: 2 Using LabVIEW Since:1994 LV:8.5 ,8.2.1 ,7.1.1
My Blog
My Gallery
|
I honestly didn't hear of the term "action engine" until it was mentioned about a year or so ago on the NI Forums. "Functional Globals" has been around since the beginning of LabVIEW. I think the term "action engine" has a place on the Wiki, just like anything related to LabVIEW. However, even the communications driver functionality you describe has always been a functional global in my mind and I don't think I can get myself to ever call it an action engine. I guess I'm old fashioned that way.
http://forums.lavag.org/Action-Engine-t1373.html --------------------
|
||
|
|
|||
Jan 4 2008, 11:52 AM
Post
#6
|
|||
|
Extremely Active Premium Member ![]() Posts: 688 Joined: 3-November 04 From: Boston, MA Member No.: 949 Using LabVIEW Since:1999 LV:7.0 ,8.20 ,8.0
My Gallery
|
I think the term "action engine" has a place on the Wiki, just like anything related to LabVIEW. That's why I added it Bob, if you want to change it, feel free, that's what the wiki is for! --------------------
|
||
|
|
|||
Jan 4 2008, 12:05 PM
Post
#7
|
|||
|
Certified Kool-Aid Kid Premium Member ![]() Posts: 1155 Joined: 6-December 02 From: Pittsburgh PA USA Member No.: 29 Using LabVIEW Since:1998 LV:7.1 ,. ,.
|
My mother still callls me "Benny" and a facial tissue is still a "Kleenex" in my book. And while I am the topic of books and as I cited in the Dark-Side Nugget, I originally learned about AE's in
" LabVIEW Programming Techniques" produced by Viewpoint Systems Version 2.2 August, 2000 page 67. I believe this book was the precursor to the original version of NI's "Advanced Applications Development Course" Or as was common in the Navy back in the 70's "What kind of Coke do you want Pepsi or Sprite? Ben
|
||
|
|
|||
Jan 4 2008, 12:30 PM
Post
#8
|
|||
|
Extremely Active Premium Member ![]() Posts: 688 Joined: 3-November 04 From: Boston, MA Member No.: 949 Using LabVIEW Since:1999 LV:7.0 ,8.20 ,8.0
My Gallery
|
I was going to "Xerox" your nugget for the wiki, but it would porbably make more sense to "PDF" it.
I like Stephen's description of an LV2 global (functional global). QUOTE (you know, an uninitialized shift register on a loop that is guaranteed to run exactly once, used to store data for retrieval on a later call)
--------------------
|
||
|
|
|||
Jan 4 2008, 01:41 PM
Post
#9
|
|||
|
Certified Kool-Aid Kid Premium Member ![]() Posts: 1155 Joined: 6-December 02 From: Pittsburgh PA USA Member No.: 29 Using LabVIEW Since:1998 LV:7.1 ,. ,.
|
I was going to "Xerox" your nugget for the wiki, but it would porbably make more sense to "PDF" it. I like Stephen's description of an LV2 global (functional global). "An AE by any other name is still a sweet program construct." Ben
|
||
|
|
|||
Jan 4 2008, 02:30 PM
Post
#10
|
|||
|
Extremely Active JKI ![]() Posts: 549 Joined: 13-September 05 From: Cary, NC USA Member No.: 2992 Using LabVIEW Since:1997 LV:8.5 ,8.2.1 ,7.1.1
|
I honestly didn't hear of the term "action engine" until it was mentioned about a year or so ago on the NI Forums. "Functional Globals" has been around since the beginning of LabVIEW. I think the term "action engine" has a place on the Wiki, just like anything related to LabVIEW. However, even the communications driver functionality you describe has always been a functional global in my mind and I don't think I can get myself to ever call it an action engine. I guess I'm old fashioned that way. I'm in the same boat as Michael here. I completely agree with all the distinctions being drawn, but I think I have a lot of mental inertia when it comes to what a "functional global" is. I suppose if I worked around a bunch of people who used the words "action engine" a lot, I'd probably evolve (kind of like how you pick up the accent of a place when you live in it long enough You say tomayto, I say tomahto, let's all go for beer. EDIT: This is my 100*pith post. -------------------- If you don't like this post, you might also not like my widgets!
|
||
|
|
|||
Jan 4 2008, 05:21 PM
Post
#11
|
|||
|
Extremely Active Premium Member ![]() Posts: 688 Joined: 3-November 04 From: Boston, MA Member No.: 949 Using LabVIEW Since:1999 LV:7.0 ,8.20 ,8.0
My Gallery
|
--------------------
|
||
|
|
|||
Jan 4 2008, 06:10 PM
Post
#12
|
|||
|
Extremely Active Premium Member ![]() Posts: 430 Joined: 2-February 05 From: Southern California Member No.: 1519 Using LabVIEW Since:2004 LV:8.20 ,7.1.1 ,8.0.1
|
There is a discussion of the naming of Functional Globals in the Functional global variable wiki article, including the LAVA poll and Ben's excellent and descriptive nugget.
The functionality (pun intended) that is being described for Action Engines is already covered in the Functional Globals wiki article. There is no need to duplicate all that information. A description of the alternate naming, plus a link to the other wiki article and Ben's nugget should suffice. David
|
||
|
|
|||
Jan 4 2008, 07:22 PM
Post
#13
|
|
![]() Confucius say: Crowded elevator always smell different to midget |