Wednesday, June 23, 2010

Dex - Dexterity and IntelliSense

I have heard many times how it's nearly close to impossible to implement IntelliSense in Microsoft Dexterity. For those of you not familiar with the term, IntelliSense is to software development what autocompletion is to Microsoft Dynamics GP data entry or Office Excel for that matter.

Similar to other autocompletion systems, IntelliSense is a convenient way to access descriptions of functions, particularly their parameter lists. It speeds up software development by reducing the amount of name memorization needed and keyboard input required. It also allows for less reference to external documentation as interactive documentation on many symbols (i.e. variables and functions) in the active scope appears dynamically in the form of tooltips while programming.

IntelliSense works by accessing an automatically generated in-memory database of classes (not [entirely] supported in Dexterity), variable names and other constructs defined in or referenced by the application being edited. With some extra effort, IntelliSense can complete statements too.

Back to Dexterity though, one of the discussion points that seems to prevail around the implementation of IntelliSense is the fact that Dexterity does not support the typical telescopic reference (or scope) for objects, attributes, and properties and that makes sense, because in practical sense Dexterity is not an object-oriented programming (OOP) language. So, for example, you cannot have a construct similar to rmCustomerMaster.CustomerNumber.Value inside of Dexterity as you would if you were using Visual Studio Tools for example.

But then came Microsoft SQL Server 2008 to prove everyone wrong. TSQL - Microsoft SQL Server's programming language - is not an object oriented programming language, hence, it does not allow for contructs in the form of telescopic references as available in any Visual Studio language. However, Microsoft SQL Server 2008 IntelliSense is able to provide enough context for objects like variables, parameter information for most language functions, and then column information for tables, and I am sure if Microsoft had put a little more effort into the the technology, they would have been able to provide parameters for stored procedures.

Now, I intentionally included the word "entirely" couple paragraphs aback when describing Dex's OOP capabilities, the reason being, while Dexterity is not a true OOP environment, it does support object-based development, this is, the ability to create state machines and properties with the use of traditional forms and composite fields. Take for example, the implementation of the Purchase Order Processing module in Microsoft Dynamics GP. This would be one place where IntelliSense could prove very usefull as it would narrow the scope of the Me instantiations created based on composite fields.

I can only hope that this feature be considered -- seriously! -- for future releases of Dexterity. If it could be done in Microsoft SQL Server, I am sure it can be done for Dexterity. Let me know what you think about the subject.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/

11 comments:

David Musgrave said...

Yeah Baby. I would love this too.

Add it to the wish list.

David
http://blogs.msdn.com/DevelopingForDynamicsGP/

David Musgrave said...

Let's get this added as a product suggestion. Once it is in MS Connect we can ask the Dexterity Development community to vote for it.

Instructions here:

http://blogs.msdn.com/b/developingfordynamicsgp/archive/2008/10/10/providing-product-feedback-using-microsoft-connect.aspx


David
http://blogs.msdn.com/DevelopingForDynamicsGP/

VAIDHYANATHAN MOHAN said...

Me too as a Developer. I was just thinking how this Intellisense would work for 3rd Party product(s) programming. Whatever we have inside Dynamics.dic and our own resources can be listed or referenced thru' IntelliSense. But I sincerely doubt whether this would be possible when we try writing 3rd Party Code.

Nevertheless, this would be an awesome addition to Dex.

Vaidy

Mariano Gomez said...

Vaidi,

I am not sure what you mean by "how it would work inside 3rd party code". All code is developed in sanScript, so what does it matter whether you are developing 3rd party code or any code for that matter?

When you are developing in Visual Studio you get IntelliSense no matter what you are developing and so in SQL Server.

MG.-

RonH said...

Sounds like a great idea.
Is Microsoft doing "anything" to enhance Dexterity anymore??

Mariano Gomez said...

Ron,

Dexterity has been given a new set of enhacements for version 11 as it relates to new functions. Take a look at my previous article What's new in Microsoft Dexterity 11.

The propose IntelliSense enhacements are more geared towards usability and improved development experience. Please go to my new article Intellisense, it's time to vote! to vote for the enhancement.

VAIDHYANATHAN MOHAN said...

When in VS or SSMS, IntelliSense does have a scope inside which it gives us information about (methods, attributes, parameters, fields, etc). Likewise, in Dexterity, we do have a limitation of resources that we are referring to.

Like how it is in SQL Server, if we are trying to refer to a different Database Server.

IntelliSense would still help us a lot in giving Syntactical Assistance. 3rd Party Products' Resource Assistance may still be limited.

Hope above is a bit more clearer.

Vaidy

Mariano Gomez said...

Vaidy,

I still don't see why you differentiate resource assistance between Dynamics and third party. A third party resource is simply added to the IntelliSense in-memory metadata database just like any other Dynamics native resource.

When you develop resources in VS these are added to the IntelliSense database so you automatically can have reference to their structure down the road in your application. What is it that I am missing?

Likewise, when you declare a table or a variable in SSMS query window, these resources are added to the IntelliSense database as well.

MG.-

David Laumonier said...

Mario,
Is there any good examples of Creating a 3rd party dexterity Trigger. Basically, I need to suppress a warning message in Project Accounting.
I have combined both the Dynamics and PA258 Dictionaries (GP2010).

Thanks
David L.

Mariano Gomez said...

David,

Your approach is totally wrong. You shouldn't combine the dictionaries to begin with. In addition, Dexterity cannot interact with Modal Dialogs. You will need to use either VBA or VST to perform this customization.

MG.-

Christo Booysen said...

Is this Tim Gordons intellisense?
He was the first to develop intellisense for Dex! Many moons back