LAVA Forums Buy cool LAVA gear Forums RSS Feed

Welcome Guest ( Log In | Register )

Tags
(This content has not been tagged yet)
2 Pages V   1 2 >  
Reply to this topic Start new topic
> [Wiki] Action engine
Jim Kring
post 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
United States us_california Nothing Selected My Blog My Gallery


This is the discussion topic for the wiki article: Action engine


--------------------
-----------------------------------------------------------------------------------------------------
| Book | OpenG | LAVA | Champion | VIPM | Builder | Blog | JKI |
-----------------------------------------------------------------------------------------------------


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
Ad
post Jan 2 2008, 10:31 PM
Post #















Tags
(This content has not been tagged yet)
Go to the top of the page
Quote Post
Jim Kring
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
United States us_california Nothing Selected 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.

--------------------
-----------------------------------------------------------------------------------------------------
| Book | OpenG | LAVA | Champion | VIPM | Builder | Blog | JKI |
-----------------------------------------------------------------------------------------------------


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
BobHamburger
post 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 ,.
United States Nothing Selected Nothing Selected 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.


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
Jim Kring
post 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
United States us_california Nothing Selected My Blog My Gallery


QUOTE (BobHamburger @ Jan 3 2008, 07:32 PM) *
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.

--------------------
-----------------------------------------------------------------------------------------------------
| Book | OpenG | LAVA | Champion | VIPM | Builder | Blog | JKI |
-----------------------------------------------------------------------------------------------------


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
Michael_Aivaliot...
post Jan 4 2008, 05:02 AM
Post #5


Confucius say: Crowded elevator always smell different to midget
Group Icon
*****

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
Greece Canada United States 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

--------------------


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
Phillip Brooks
post 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
us_massachusetts France Thailand My Gallery


QUOTE (Michael_Aivaliotis @ Jan 4 2008, 12:02 AM) *
I think the term "action engine" has a place on the Wiki, just like anything related to LabVIEW.


That's why I added it wink.gif . I've come across the term "Action engine" on 'the dark side' enough times that I thought there should be a more definitive place to get the definition. NI doesn't use the term in training or literature yet its part of the LabVIEW vernacular (at least on the dark side). Maybe a link to Ben's Nugget should be added (I'll try to do it today).

Bob, if you want to change it, feel free, that's what the wiki is for!

--------------------



Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
neB
post 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 ,. ,.
United States Germany Nothing Selected


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


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
Phillip Brooks
post 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
us_massachusetts France Thailand My Gallery


I was going to "Xerox" your nugget for the wiki, but it would porbably make more sense to "PDF" it. smile.gif

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)

--------------------



Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
neB
post 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 ,. ,.
United States Germany Nothing Selected


QUOTE (LV Punk @ Jan 4 2008, 07:30 AM) *
I was going to "Xerox" your nugget for the wiki, but it would porbably make more sense to "PDF" it. smile.gif

I like Stephen's description of an LV2 global (functional global).


"An AE by any other name is still a sweet program construct."


Ben


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
Justin Goeres
post 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
United States us_north_carolina us_iowa


QUOTE (Michael_Aivaliotis @ Jan 3 2008, 10:02 PM) *
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 tongue.gif).

You say tomayto, I say tomahto, let's all go for beer. beer_mug.gif

EDIT: This is my 100*pith post.

--------------------
If you don't like this post, you might also not like my widgets!


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
Phillip Brooks
post 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
us_massachusetts France Thailand My Gallery


QUOTE (Justin Goeres @ Jan 4 2008, 09:30 AM) *
EDIT: This is my 100*pith post.


Mmm, pi.

--------------------



Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
JDave
post 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
United States Peru us_california


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


Tags
(This content has not been tagged yet)
Go to the top of the page
+Quote Post
Michael_Aivaliot...
post Jan 4 2008, 07:22 PM
Post #13


Confucius say: Crowded elevator always smell different to midget
Group Icon
****