05-20-2016 12:59 PM
Dear NI Community,
Following on from my previous attemt at the Elevator CLA past paper, I attempted the ATM CLA past paper today and was looking for some further feedback and help with how to pass the exam. Based on the feedback from the Elevator I have tried to plan how I went about the exam more wisely.
Enjoy, and once again - any feedback would be greatly received 🙂
Thanks in advance,
05-23-2016 07:16 AM
MUCH better. Just some more comments though.
1. Do not show the label for EVERY function, especially the primitives. The context help can tell you what those are. You are just wasting time by actually showing the labels.
2. You can GREATLY simplify your Communications Action Engine simply by getting rid of the queues. You have comments that the developer needs to be careful and only use the User Event to communicate between modules. So do not even give them the opportunity to mess it up. Create the queues directly on the modules that will use them. Only pass the User Event around in the Action Engine.
3. For the Display Console, you do not need to call the User Event just to update the screen for EVERY case. Do the update inside of the message handler loop by unbundling directly off of the shift register (still inside of the loop). This will help the other modules as well since they will have to process the User Event as well (even if they are not doing anything with it).
I only made mods to the Display Console and the Action Engine so you can see what I am talking about (at least for points 2 and 3).
08-01-2016 04:22 PM
Hi Cross,
Thanks for sharing the architecture , what is the name you call this architecture .
09-10-2016 04:55 PM
Hello Robert ,
Thanks for developing such a good architecture this gives us more inside .
Could you please provide more details about the architecute design and how it communicated with other modules .that is inter process communication .
I am taking this architecure as a base and prepare for my CLA exame .
waiting for your reply .
Regards,
Prithviraj
09-12-2016 02:46 PM
09-13-2016 03:00 AM
Hi Robert ,
Thanks for your reply .I have couple of questions .kindly provide your answere .
Q1.How did you arrive with this architecurter . I mean could you pleaase provide more details about this architecture . since i am practise this .i need to know in and out of this arch.
I belive you are following View model arch.is view model arch and QMH is both are same or is there any major difference .
Q2.I have a one big question in the arch ,how do u create cluster parameter when the cluster element is not avaliable .is this you have give to developer to build this ?
Q3.Queues initialisation is there in only one place . do the developer need to create the queues in another places .
these are the question ,I request to get clarified from your end .
Regards,
Prithviraj
09-13-2016 04:32 PM - edited 09-13-2016 04:55 PM
Hi Prithviraj,
Q1. This architecture was something I had seen from a sample solution and seemed to be what I was after for a more complex application I was working on. It seems like the CLD is more concerned with how you code up one module and the CLA is how you would code up several modules that can communicate with each other. Hence why the user event brings everything together through inter-process communication 🙂
The reason why I describe it as a model-view-controller is because all the controls AND indicators can exist in the event stucture (view) and be updated by user events. This allows me to pass global updates to modules running in separate independent threads and handle the event accordingly e.g. start/pause/stop etc. It would be quite easy to swap the data cluster for an object (model) and bring all the advantages of OOP e.g inheritance into the module. The Queued Message Handler in the consumer loop (controller) is then the action engine that can execute the relevant methods in the class.
Please see https://decibel.ni.com/content/docs/DOC-31625
When I develop code nowadays I have since found a love for sub-panels as it allows me to have several modules running in asynchronous threads independently of one another in the background and I can just display the relevant module to my user as and when required.
Q2. I would let the developer build the cluster, but it wouldn't harm to think about what data types might go into it (or if you are in OOP speak then what properties & methods the class has). If you comment it as per the requirements document then this would be a good idea.
Q3. I don't code my queues up in this way anymore in reality mainly because I want to have multiple instances of modules running asynchronously so need to dynamically create queues. I would have the obtain queue and enqueue (initialise) inside the module itself now.
I hope this isn't information overload and don't forget that simpler architectures can still solve complex problems (occam's razor) - but hope this helps.
Thanks,
09-14-2016 03:15 PM
Hi Robert,
Thanks for the woundeful reply .I would like to know few things.
1.Why are you creating event reference and again destroying the event reference.as i have attached
2.As you mentioned below as dynamic queue creation .how are you creating dynamic queues in your architecture.please let me know this is very important for me to understand.
Regards,
Prithviraj
11-01-2016 11:09 AM
Hello Michael,
Hope you are doing good . I copied your architecture and I have practised as it is in the exampel which you have provided . kindly review my code and suggest me if I need to update or practise any thing else .
The one big question whihc i didnt get answere for the below question .kindly answere before 4th Dec and help me in passing .
1.How does Error handling module wil handle error with Event driven . if the usere presses the button for 2 -3 time continiously then the event will be struck in the event driven . Instead of event driven can i go with queues modules ?.
2.How does COntroller Module will behave . how does controller module acts as a controller in distributing the message to all the other modules . Or it is jus a module ?
3.What about error logging for Warning ,Error and critical error .
I have added my code . kindly review and provide your valauble suggestion .
Regards,
Prithviraj