1-to-1 Relationship Between UI and subVI Data Cluster

Discussion continued from here.
In summary:
JackDunaway wrote:
Yes,
I can see clear benefits in implementing this Idea - that is, if your
underlying datatype elements have a 1:1 relationship with the UI
elements.
I will
illustrate this point by showing some potential flaws in your example:
"Profile Running" and "Profile Complete" are mutually exclusive, no?
Wouldn't it be better to have a single enum named "Profile" with three
elements "Idle, Running, and Complete" for the underlying datatype?
Having two mutually exclusive pieces of data in an underlying datatype
is among my favorite of code smell indicators.
Also, the underlying datatype probably only needs "Forward Miles" and
"Reverse Miles" since "Total Miles" is derived. Exclude "Total Miles"
from the underlying cluster and just show the sum for display.
Another
argument against using a 1:1 relationship: the customer now wants to
multiply speed by -1 if Direction==Reverse and not show the Direction
enum on the UI. The data source (the VI that generates the data) would
need to be updated using your 1:1 relationship. Using underlying data
different from the display data, only the data client (the UI front
panel) needs to change. I would be much more inclined to service the UI
FP for a cosmetic upgrade rather than tracing the data source back
through the HMI framework, through TCP, back to the RT, back to FPGA...
Basically...
I question a perfectly overlapped Venn Diagram where the set of data
shown to the user equals the dataset used for underlying data
processing/messaging/storing. The underlying datatype should be as
stripped and streamlined as possible, while the display datatype can
inherit all the flair and post-processing that Upper Management wants to
see in a UI.
LabBEAN wrote:
<JackDunaway wrote
I will illustrate this point by showing some potential flaws in your example...
<LabBEAN response
The data you see maps directly to tags on the PLC.
<JackDunaway wrote
Yes, I can see clear benefits in implementing this Idea - that is, if your underlying datatype elements have a 1:1 relationship with the UI elements.
<LabBEAN response
JackDunaway wrote:
This is a good indicator that we're both aware at this point that I'm
missing something... in all seriousness, could you reply to the 1:1
argument? I really want to understand this Idea and learn how/if I need
to apply it to my own style (our last back-and-forth turned out to be an enlightening and introspective exercise for me).
***EDIT: By all means, please start a discussion on the LabVIEW board so we're not hindered by the Exchange's interface. ***
My long delayed response:
The indicators you see map to tags on the PLC.  That is, we were connecting through OPC to an application on a PLC that was written ~15 years ago.  I have a VI where I read a bunch of SVs (Shared Variables).  Each SV is bound through OPC to a PLC tag.  In the interest of disclosure, two 16-bit tags are required to represent each 32-bit mileage number.  In the same subVI, I read each set of mileage tags, convert, and feed my subVI cluster indicator.  The same is true for wheel size:  three bits get converted to the enum.  Regardless, though, I have one subVI that reads SVs and outputs the same "underlying data" cluster that is seen on the UI.  The UI has a "Faults" cluster full of fault Booleans that follows the same logic.  When the user configures a profile of steps, they do so via an array of "step" clusters (although the cluster look is hidden for aesthetics).  It's the same thing as above except we write tags instead of reading them.
In my case, each set of 16-bit tags is worthless as two 16-bit numbers.  They are only useful as a 32-bit mileage, so I don't pass around the raw 16-bit data.  The same is true for the wheel size bits. My software can just as easily (in fact, more easily) operate on the enum.  So, the underlying cluster from the subVI is programmatically useful and applicable to the UI.  I would guess that the same is true for a lot of RT applications, where the read VI can have some intelligence to process the data into useful / applicable clusters.
There are going to be cases where "Upper Management" would like to see "flair and post-processing" as you say.  Your speed illustration is a good example of this.  There are also instances where the cluster works fine on the UI the way it is (like this one and many others that we've seen).
<JackDunaway wrote
"Profile Running" and "Profile Complete" are mutually exclusive, no?
Wouldn't it be better to have a single enum named "Profile" with three
elements "Idle, Running, and Complete" for the underlying datatype?
<LabBEAN response
Did you mean "not" mutually exclusive?  We combined 3 "dependent" (not mutually exclusive) Booleans into an enum for Wheel Size, as I mentioned above.  Not sure now why we went the other way with these two (this was 2 years ago).  In any event, with regard to UI representation, I still pass a cluster out of my read-raw-data-and-process-into-cluster subVI up to the applicable queued state machines and to the UI.
<JackDunaway wrote
Having two mutually exclusive pieces of data in an underlying datatype
is among my favorite of code smell indicators.
<LabBEAN response
Working with applications written in ladder logic, it is not uncommon to see separate Booleans that indicate the same condition.  This seems to be especially true when safety is a concern.  That is, ladder Coil A ON and Coil B OFF == switch open.  Coil A OFF and Coil B ON == switch closed.  If you ever read OPC tags from Coil A and Coil B and the two are the same, you know the ladder is in transition (hasn't updated the tags).  Throw that point out and read again.
I, too, appreciate our back-and-forths.  Good discussion.
Certified LabVIEW Architect
Wait for Flag / Set Flag
Separate Views from Implementation for Strict Type Defs

Thanks for replying, Jason. Let me see if I can craft a coherent response after getting back up to speed...
(...later)
OK, let's go. I'm going to fully agree with you that LabVIEW imposes a strange constraint unique from most other languages where a Typedef defines two things: the underlying data structure, and also the view. A Strict Typedef should be more accurately deemed the Datatype-View-Definition, and a Typedef would be more accurately called the Datatype-Definition-and-View-Suggestion. And to be clear, there are two types of views: the programmer's view (a SubVI look and feel) and the UI view (what the user and Upper Management sees). (Finally, I admit I'm ignorant whether view or View is more a more appropriate term)
Linking the programmer's view to the datatype is perfectly fine with me, and based on your original Idea I think we both agree that's OK. I think we run into a disagreement where you have loosely tied the concept of "Strict TD" to "UI View".
Historically, I have used Strict Typedefs for the programmer's view (SubVIs), since I like to maintain a "functional UI" at the SubVI level. I don't use type definitions on User Interfaces - only Controls. That's the reason your Idea does not appeal to me, but perhaps if your Idea were implemented, it would appeal to me since View and Implementation would be divorced as separate entities within the Type Definition. (Does that classify as a Catch-22?) So, you're Idea is fundamentally suggesting that Type Definition .ctl files should be more accurately called "a container that holds both a Type Definition and any number of View Definitions as well".
Fundamentally, I think I finally understand the gist of your Idea: "let's ditch this weird constraint where View and Datatype are inextricably defined together in one file", and for that, I'll give Kudos to the original Idea. I got really tied up with the example you used to present the Idea, and plus I'm still learning a lot.
Additional thoughts:
This Idea reminds me of another: Tag XControl as Class View
We've still got some arguing to do on a 1:1 relationship between underlying datatype and UI presentation, so put your mean face back on: 
Since our last conversation, interestingly, I have been on an anti-Typedef kick altogether.  Why don't you drop some feedback on my attempt at a completely typedef-free UI framework?
a.lia-user-name-link[href="/t5/user/viewprofilepage/user-id/88938"] {color: black;} a.lia-user-name-link[href="/t5/user/viewprofilepage/user-id/88938"]:after {content: '';} .jrd-sig {height: 80px; overflow: visible;} .jrd-sig-deploy {float:left; opacity:0.2;} .jrd-sig-img {float:right; opacity:0.2;} .jrd-sig-img:hover {opacity:0.8;} .jrd-sig-deploy:hover {opacity:0.8;}

Similar Messages

  • OTL - Table Relationship between Timecard and Workflow

    Hi All,
    Our employees work multiple projects and charge their time thru OTL to each of individual project as appropriate every pay period. Each project has it's own project manager. When an employee sumbits his timecard for approval the workflow routes an approval notification to EACH project manager. Every project manager must approve the employee's timecard before the "overall" timecard status is APPROVED.
    For example, an employee works on four diffent projects - each project has a different PM. When the employee submits his timecard for approval an approval notification is sent to all four PMs. However, more than occasionally at least one of the PMs doesn't approve the timecard in a timely fashion so the employee's timecard is "hung up" waiting for approval.
    I need to write a query in which I specifiy both an employee and particular pay period, and the query returns for the employee/pay peirod EACH Project Name, the PM for the respective project, and whether or not the the PM has approved the employee's time for the respective PM's project in the specified pay period.
    Unfortunately I don't really know where to start. I don't know if there is an HXC or group of HXC tables that would allow me to report on the individual project manager's 'status' (i.e., has a PM approved his project in the employee's timecard)...or do I need to allow include some workflow tables such as (maybe ?) wf_notifications ? And if I need to include some WF tables can someone help me understand where the relationship between timecard and WF is definded/stored (in other words, for a particular timecard how can I query a WF table - for example, wf_notifications - and find all the respective notifications associated with that particular timecard ?
    I hope my question is clear, but please advise if you have any questions. Thanks in advance for the help !!
    Jeff

    Hi Jeff,
    Did you ever get an answer on this question, as I have similar issues.
    One question you may be able to answer - Do all approvals on the project side need to be done for ANY project information to pull into Project Accounting, or as each Project Manager approves their portion does it pull in to PA?
    Thanks very much!!
    Lori

  • Separate document no. for SD revision document and detagging relationship between invoice and SD document no.

    HI,
    Country specific settings for India - Business transactions enables SD revision vide table TE872_SDCTRL_IND.
    Whenever SD revision takes place system issue similar document no. as that of invoice and tagged it with XBLNR as per standard process.
    Now issue that if that invoice is reversed, subsequent SD also gets reversed.
    So business requires to have separate document no. for SD revision document and detagged relationship between invoice and SD document no.
    I have explored event R507, 0010, 0060 and R436 but couldn't find input structure where such separate document can be assigned.
    So can you provide hint which can assist in issue resolution?
    Regards,
    Paresh

    Check this thread, if this helps.
    [url] Link between MKPF table and EKKO or RBKP table [url]
    I've done this as well earlier to create a custom document flow for archived documents where from the EBELN i've found all the related documents. Hope this helps.

  • Could I build 1:N relationship between CMP and BMP?

    Hi, as subject, Could I build 1:N relationship between CMP and BMP?
    Thanks a lot!
    a13519

    Container managed relationships only apply to CMP beans. You can look at the DTD in appendix B of the EJB spec or chapter 10 where they make this distinction.

  • Difference/relationship between XML and XSD

    Hi All,
    Correct me if i am wrong,
    When we create a source and a target datatype in IR automatically objects will be created in XSD.
    The same way it does when we create message type.
    In message mapping, We map source and target message type and when we test with sample data, we can view source and target in xml
    My question is what is the difference/relationship between XML and XSD ?
    Thanks,
    ss

    Hi,
    XML (Extensible Markup Language) is a W3C initiative that allows information and services to be encoded with meaningful structure and semantics that computers and humans can understand. XML is great for information exchange, and can easily be extended to include user-specified and industry-specified tags.
    Whereas
    An XML Schema Definition (XSD) is an instance of an XML schema written in the XML Schema language. An XSD defines a type of XML document in terms of constraints upon what elements and attributes may appear, their relationship to each other, what types of data may be in them, and other things. It can be used with validation software in order to ascertain whether a particular XML document is of that type, and to produce a Post-Schema Validation Infoset.
    I hope this clarifies.
    Regards.
    Praveen

  • 2-way Trust Relationship between Windows and Mac Domain

    Hi guys I hope someone can help me.
    Just a quick explanation of what I am trying to do.
    I have an Xserve running OSX 10.5.8 server, which is the OD Master. On that server I’m running Kerio mail server. I have a Microsoft 2003 server running AD.
    The problem is I need to run BlackBerry Enterprise on the Windows server as the BlackBerry need active directory to work.
    Since I have both system already running, I do not want to destroy my open directory just to get the BlackBerry working.
    So what I have tried to do is create a 2-way Trust Relationship between the 2 domains, so the BlackBerry server will talk to the Kerio mail server.
    The trust relationship appears to create fine from the Windows server side, but I’m not able to retrieve LDAP information from the open directory server.
    The creation from the OSX server starts fine automated but then I had to finish it manually.
    Has anyone else here created a 2-way trust relationship between Windows and Mac’s before? Any help on how you did it would be appreciated. Thanks

    Have you checked on when the computer last checked in and changed the computer account password with the domain?  When a computer changes it's password, Active Directory will store only the current password and it does not expire.  The workstation
    will store both the current password and the previous password.  This for cases when you may restore Active Directory to a point before the computer password change.  
    To handle this, the workstation will try it's current password, then it's previous.
    If you're restoring the workstation to a previous point in time, you may be rolling the stored passwords back too far for Active Directory to accept.  I would only imagine this to be the case a handful of times if you're going back 1-2 days.
    Are you experiencing 100% failure?

  • What is rfc of creating relationship between ibase and partner?

    I need bapi or rfc for assign a partner to ibase.
         create relationship between ibase and parten.
    pls.

    Hi
    check this link
    Re: BAPI for creating IBASE structure
    Regards
    Pavan

  • Many to many relationships between Fact and Dimension

    Hi All,
    I have to solve two kind of many to many relationships between Fact and Dimension.
    1. Many to Many relationship between Fact and Dimension, using a bridge table, with FKs in fact and dimension to bridge table’s PK.
    2. Many to Many relationship between Fact and Dimension, using a bridge table, and an intersection table, with FK in fact to bridge table, and 2 FKs in intersection table to Dimension and to bridge table.
    I need help on implementing (how the mapping has to look like) them in OWB 9.2.0.2.8.
    Thanks,
    Aurelian Cojocaru

    Aurelian,
    Unfortunately, you cannot implement this in the dimensional model. You would have to use relational tables and relationships between those in order to implement your scenario.
    Thanks,
    Mark.

  • Employee relationship between BP and org.BP missing

    Hello,
    I am getting few error in SRM when trying to order a shopping cart. After checking the user and BP through USERS_GEN i am getting this error.
    "Employee relationship between BP and org.BP missing". Could anyone help me in this.
    Thanks,
    Pijush

    Hi Pijush
    Please let us know are you create the new EBP purchasing org copying from any other existing  EBP purchase org, if yes, could you please delete the new EBP org assignment and create the new EBP org by using the Create icon and select u201CIs Line Supervisor ofu201D option. It will be resolve your issue.
    Thanks
    Sada

  • Relationship between db_flashback_retention_target and fast_recovery_area

    Hi to all
    I was doing a test on Flashback Database on my Oracle 11gR2 and I would like to seek clarifications on the relationship between db_flashback_retention_target and fast_recovery_area. Here are my current settings below:
    SQL> show parameter db_flashback_retention
    NAME TYPE VALUE
    db_flashback_retention_target integer 60
    SQL> show parameter recovery_file_dest
    NAME TYPE VALUE
    db_recovery_file_dest string L:\app\amosleeyp\fast_recovery
    _area
    db_recovery_file_dest_size big integer 20G
    Here come the question. I know that the db_flashback_retention_target parameter specifies the upper limit (in minutes) on how far back in time the database may be flashed back. I did a testing and below is the sequence of events.
    DELETE FROM SCOTT.EMP WHERE ename = 'KING'; -- *12:13pm*
    FLASHBACK DATABASE TO TIME = "TO_DATE('2013-03-25 12:12:00','YYYY-MM-DD HH24:MI:SS')"; -- *1:30pm*
    Select count(*) from SCOTT.EMP where ename='KING'; -- *1:31pm*
    COUNT(*)
    1
    From this simple test, I was able to flashback database to more than 60minutes ago despite my retention window being set at 60minutes. Is this due to the reason that I have a huge db_recovery_file_dest_size of 20G? Thus, I am able to go back in time for more than 60minutes? Thanks for the sharing.

    Hi,
    So do you mean that the retention target can be at about 59,60,61minutes or more depending on the fast_recovery_area space? So it actually fluctuates ~ ?No it does not fluctuate. fast_recovery_area is just a storage area for multipurpose use for backup, backup copy, archived redo logs and flashback logs etc, so don't confuse it with flashback retention.
    flashback retention time is the time which Oracle will always ensure you the flashback of database. If set to 60 minutes, it means you will certainly be able to flashback your database atleast 60 minutes.
    If your fast recovery area is free, Oracle will not delete flashback logs (and you might be able to flashback to even several days if flashback logs have not been deleted from fast recovery area). It will only delete flashback logs if fast recovery area has small space left in it.
    Only when I set the guaranteed restore points , then it will always store at 60 minutes?See following for this concept
    http://docs.oracle.com/cd/E11882_01/backup.112/e10642/flashdb.htm#autoId8
    Salman

  • Relationship between JCE and JSSE providers.

    Howdy,
    I need clarification about the relationships between JCE and JSSE providers.
    Do JSSE providers function independantly of JCE providers. If a JCE provider supplies a specific encryption algorithim, is it used in the JSSE?
    Or are only the JSSE provider encryption algorithims used ?
    Jim Cotsios

    In JSSE 1.0.x, and JSSE in J2SE 1.4 beta 2
    and earlier, the
    JSSE and JCE are completely separate entities.
    The JSSE doe not use any of the JCE algorithms.
    All necessary algorithms are provided either
    in the JSSE jar file, or by obtaining them
    from the J2SE itself with the appropriate
    getInstance().

  • Can we unlink the relationship between Customer and Opportunity?

    Hi Experts,
    I have an opportunity type field in Opportunity to differentiate customer and non-customer. There is a situation when I create an opportunity from customer, the opportunity is tie with customer even the opportunity type is non-customer. How do I remove the relationship between customer and opportunity if the opportunity type = non-customer and I want remain the relationship if opportunity type = customer? I have tried on workflow, but it's seems not working as the system not allow me to modified the relationship.
    Please advice. Thanks

    Hi Bob,
    You are right, we can hide the Customer Name from the layout. But this is not what I want because at the back-end the Opportunity are still tied with the Customer and it will still be shown in the Opportunity section of Customer. If we show the Customer Name in the layout, the value are still there. I will like to take out the relationship between Customer and Opportunity if Opportunity Type = Non Customer. Meaning that Non Customer Opportunity will not tie with any customer.
    Please advice. Thanks

  • What is relationship between ping and tcp in BGP ?

    Dear All, As we know, BGP peer relation needs reachability  of tcp 179. But usually if the two peer neighbors can ping each other, we can consider the tcp 179 is working well. So what is relationship between ping and tcp in BGP in this situation ? Thank you !

    Ping is a tool in the ICMP suite, and doesn't use ports. It uses codes.  TCP is a different protocol, and does use ports.  In the case of BGP, once the process is started (and you have at least one neighbor command) it will open port 179.  Who is the client and who is the server in the neighborship, does not matter.  If you have issues with BGP neighbors being formed, and you believe the configuration is correct - Telnet to the port to be sure that it is working.  Also, if they are not directly connected, you may need to enable multihop.  Check Access lists also.
    Pinging the other router it is unrelated to the BGP TCP process. - Here is an example pinging fine, but before the BGP process has opened port 179.
    There is just two routers on a /30 segment - 10.19.2.2 and 10.19.2.1
    LON-ROUTER#ping 10.19.2.1      
    Type escape sequence to abort.
    Sending 5, 100-byte ICMP Echos to 10.19.2.1, timeout is 2 seconds:
    Success rate is 80 percent (4/5), round-trip min/avg/max = 8/9/12 ms
    Pings fine.
    LON-ROUTER#
    LON-ROUTER#telnet 10.19.2.1 179
    Trying 10.19.2.1, 179 ... 
    % Connection refused by remote host
    Enable BGP on the neighbor:
    LON-CORE(config)#router bgp 65000
    LON-CORE(config-router)#neighbor 10.19.2.2 remote-as 65001   
    LON-CORE(config-router)#
    try the TCP connection again
    LON-ROUTER#
    LON-ROUTER#telnet 10.19.2.1 179
    Trying 10.19.2.1, 179 ... Open
    The connection now works, as the port is open on the neighbor.

  • What the relationship between eul4_documents and eul4_objs

    we use discoverer administration to creat folder. then we create workbook in discoverer desktop from available folders . now i want to write a sql to show the the relationship between folder and workbook. as i know , i can find folder in table eul4_objs and workbook in table eul4_documents . but how to link them together?
    For example , i know folder A. how can i find the workbooks which created from folder A only by using SQL

    Hi,
    Instead of EUL5 use EUL4 in this query.
    select distinct doc_name, obj.obj_name folder_name, bas.ba_name
    from eul_us.eul5_documents doc
    , eul_us.eul5_elem_xrefs xref
    , eul_us.eul5_expressions exp
    , eul_us.eul5_objs obj
    , eul_us.eul5_ba_obj_links bol
    , eul_us.eul5_bas bas
    where xref.ex_from_id = doc.doc_id
    and doc.doc_name = &your_report
    and xref.ex_to_id = exp.exp_id
    and obj.obj_id = exp.it_obj_id
    and bol.bol_obj_id = obj.obj_id
    and bas.ba_id = bol.bol_ba_id
    Hope it helps you.
    Best Wishes,
    Kranthi.

  • Many to many relationship between category and category set?

    Is there a many to many relationship between category
    and category sets in Inventory mgmt?
    I mean, one category can exist in many category sets
    and one category set can have many categories, is that true?

    Is there a many to many relationship between category
    and category sets in Inventory mgmt?
    I mean, one category can exist in many category sets
    and one category set can have many categories, is that true?

Maybe you are looking for

  • Why can't I sign into Kindle Cloud since upgrade to ios7 on iPad mini?

    Help!  I resisted upgrading for a few weeks, and glad I did!  But finally upgraded and now Kindle Cloud won't let me sign in.  Most frustrating. Also.....Gmail crashes just after I get the opening screen of my emails.  I can't stop it.  Every other a

  • Assets not linked to accounts

    I have a few assets that had been uploaded partially and aren't linked to an account. I can see the assets in a report but have no other way of getting to them to get them re-associated to the correct account. Is there any way of deleting these asset

  • Ipad 2 won't restore, it says is not elegible for the requested  build. HELP!!!

    I KEEP TRYING TO PDATE MY IPAD2 TO THE LATEST UPDATE, BUT EVERYTIME IT GETS TO THE PART WHERE IT GET RESTORED IT STOPS. I THEN GET A ERROR MESSAGE SAYING : "THE IPAD COULD NOT BE RESTORED. THIS DEVICE ISN'T ELEGIBLE FOR THE REQUESTED BUILD". AT THIS

  • LSMW Transport Request

    Hi Can we Transport the LSMW project from one client to another (DEV ---> QAS ---> PRD). Can it be possible or I have to creat LSMW project on Same client ( Production). Please correct me. Thanks Swapnil

  • Passport restart when set date and time automatical austrian mountain

    Hi guys sorry for my poor english. I was for four days in austrian mountain. There are a lot of areas without any connection (thats ok in mountain...). but why restartet my passport two counts per day? Only when it, set date and time automatical. Aft