Friday, October 05, 2007
Unicode Makes Multiple Languages Easier In Your eDeveloper V10 Applications
One of the important enhancements to eDeveloper V10 is the addition of full support for Unicode. This FAQ is designed to answer some of the high-level questions you may have regarding Unicode and its use in eDeveloper V10.
Q. What is Unicode?
A. The official definition can be found on the Unicode Consortium website in their glossary:
“Unicode. The universal character encoding, maintained by the Unicode Consortium (http://www.unicode.org/). This encoding standard provides the basis for processing, storage and interchange of text data in any language in all modern software and information technology protocols.”
Q. What are the benefits of Unicode?
A. Once again we turn to the Unicode Consortium for an answer:
“Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. The Unicode Standard has been adopted by such industry leaders as Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys and many others. Unicode is required by modern standards such as XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etc., and is the official way to implement ISO/IEC 10646. It is supported in many operating systems, all modern browsers, and many other products. The emergence of the Unicode Standard, and the availability of tools supporting it, are among the most significant recent global software technology trends.”
“Incorporating Unicode into client-server or multi-tiered applications and websites offers significant cost savings over the use of legacy character sets. Unicode enables a single software product or a single website to be targeted across multiple platforms, languages and countries without re-engineering. It allows data to be transported through many different systems without corruption.”
Q. How extensively does eDeveloper V10 support Unicode?
A. eDeveloper V10 now includes across-the-board Unicode support within the product. Support for Unicode is provided in addition to existing support for both the ANSI and OEM standards.
Q. What specific Unicode capabilities are included in eDeveloper V10?
A. Unicode support in eDeveloper V10 includes the ability to read from and write to Unicode database fields; capability to input and output Unicode data to various Input and Output files; options to create program logic for Unicode data; techniques to perform read and write operations on Unicode files; capacity to send and receive Unicode data to and from external systems; and power to use Unicode definitions in expressions, functions, and form properties.
Q. What capabilities are there for Unicode Conversion?
A. eDeveloper V10’s implicit casting mechanism lets you select the code pages you
want to use for conversion to and from Unicode. If you don’t select the code
pages, eDeveloper V10 will use its own default code page. For purposes of explicit casting, there are two new functions:
• UnicodeFromANSI
• UnicodeToANSI
Q. Is it true that Unicode functions have been added to eDeveloper V10?
A. Yes, to complement the Unicode support, two new Unicode-related functions have
been added.
• UnicodeCHR - Converts a numeric value to a corresponding Unicode
character
• UnicodeVal - Converts a Unicode character to a corresponding numeric
value
Q. Are there utilities for Unicode Conversion?
A. Absolutely. eDeveloper V10 includes utilities that help you convert data from Unicode to ANSI and from ANSI to Unicode. The utilities let you define the input and output files as well as the code page to use, if you don’t want to use the default code page.
Q. Are there resources on the web to help us learn more about Unicode?
A. Of course. Start, of course with Unicode.org at http://www.unicode.org/
While I am sure you can google on your own, here are a couple more interesting pages to get you started on a nice long surfing expedition:
Alan Wood’s Page
http://www.alanwood.net/unicode/
This is a good resource page with links to many other useful sites.
W3C Page
And of course, W3C could not possibly be silent on a subject as important as Unicode, here is the XML/Unicode page:
http://www.w3.org/TR/unicode-xml/
Q. What character sets are supported by Unicode?
A. “More than you will ever need” is probably the shortest answer.
Specifically, Unicode 2.0 supports scripts for Arabic, Armenian, Bengali, Bopomofo, Cyrillic, Devanagari (the script employed by Hindi and Sanskrit), Georgian, Greek, Gujarati, Gurmukhi, Han, Hangul, Hebrew, Hiragana, Kannada, Katakana, Latin (including the international phonetic alphabet IPA), Lao, Malayalam, Oriya, Tamil, Telugu, Thai, and Tibetan scripts. These scripts are all written horizontally. Hebrew and Arabic are of course written right to left. Indic scripts are written variously and in ways that are sometimes described as a circular motion. Arabic and the Indic scripts must use intelligent ligature selection.
Unicode 3.0 expands some existing scripts and adds Braille, Canadian Aboriginal, Cherokee, Ethiopic, Khmer, Mongolian, Myanmar, Ogham, Runic, Sinhala, Syriac, Thaana, and Yi. Mongolian is the first script that can only be written in vertical rows.
Besides the characters for writing the world's major languages, there is a whole set of typographic, technical, graphical, mathematical, astrological and other scientific symbols and geometrical shapes in Unicode.
Q. I heard Unicode has limited support for Chinese, Japanese and Korean. Is that true?
A. Unicode supports Han scripts such as those used in Chinese, Japanese and Korean (often called CJK). Unfortunately some urban legends or myths have developed about the support of CJK characters in Unicode. According to unicode.org, “The Unicode Standard supports all of the CJK characters from JIS X 0208, JIS X 0212, JIS X 0221, or JIS X 0213, for example, and many more. This is true no matter which encoding form of Unicode is used: UTF-8, UTF-16, or UTF-32.”
In fact, Unicode supports more than 70,000 CJK characters. More will undoubtedly be added, but you can be assured that the support is comprehensive already and goes above and beyond what is expected. Unicode.org reports that “the International Standard ISO/IEC 10646 and the Unicode Standard are completely synchronized in repertoire and content. And that means that Unicode has the same repertoire as GB 18030, since that also is synchronized with ISO 10646 — although with a different ordering and byte format.” Rather a mouthful for those that do not follow these things in detail. And in the final analysis, that is the beauty of eDeveloper 10 – as with all previous versions of Magic, you do not need to get bogged down in the underlying technical details. With eDeveloper 10, just sit back, relax and enjoy full Unicode support.
Q. What is Unicode?
A. The official definition can be found on the Unicode Consortium website in their glossary:
“Unicode. The universal character encoding, maintained by the Unicode Consortium (http://www.unicode.org/). This encoding standard provides the basis for processing, storage and interchange of text data in any language in all modern software and information technology protocols.”
Q. What are the benefits of Unicode?
A. Once again we turn to the Unicode Consortium for an answer:
“Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. The Unicode Standard has been adopted by such industry leaders as Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys and many others. Unicode is required by modern standards such as XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML, etc., and is the official way to implement ISO/IEC 10646. It is supported in many operating systems, all modern browsers, and many other products. The emergence of the Unicode Standard, and the availability of tools supporting it, are among the most significant recent global software technology trends.”
“Incorporating Unicode into client-server or multi-tiered applications and websites offers significant cost savings over the use of legacy character sets. Unicode enables a single software product or a single website to be targeted across multiple platforms, languages and countries without re-engineering. It allows data to be transported through many different systems without corruption.”
Q. How extensively does eDeveloper V10 support Unicode?
A. eDeveloper V10 now includes across-the-board Unicode support within the product. Support for Unicode is provided in addition to existing support for both the ANSI and OEM standards.
Q. What specific Unicode capabilities are included in eDeveloper V10?
A. Unicode support in eDeveloper V10 includes the ability to read from and write to Unicode database fields; capability to input and output Unicode data to various Input and Output files; options to create program logic for Unicode data; techniques to perform read and write operations on Unicode files; capacity to send and receive Unicode data to and from external systems; and power to use Unicode definitions in expressions, functions, and form properties.
Q. What capabilities are there for Unicode Conversion?
A. eDeveloper V10’s implicit casting mechanism lets you select the code pages you
want to use for conversion to and from Unicode. If you don’t select the code
pages, eDeveloper V10 will use its own default code page. For purposes of explicit casting, there are two new functions:
• UnicodeFromANSI
• UnicodeToANSI
Q. Is it true that Unicode functions have been added to eDeveloper V10?
A. Yes, to complement the Unicode support, two new Unicode-related functions have
been added.
• UnicodeCHR - Converts a numeric value to a corresponding Unicode
character
• UnicodeVal - Converts a Unicode character to a corresponding numeric
value
Q. Are there utilities for Unicode Conversion?
A. Absolutely. eDeveloper V10 includes utilities that help you convert data from Unicode to ANSI and from ANSI to Unicode. The utilities let you define the input and output files as well as the code page to use, if you don’t want to use the default code page.
Q. Are there resources on the web to help us learn more about Unicode?
A. Of course. Start, of course with Unicode.org at http://www.unicode.org/
While I am sure you can google on your own, here are a couple more interesting pages to get you started on a nice long surfing expedition:
Alan Wood’s Page
http://www.alanwood.net/unicode/
This is a good resource page with links to many other useful sites.
W3C Page
And of course, W3C could not possibly be silent on a subject as important as Unicode, here is the XML/Unicode page:
http://www.w3.org/TR/unicode-xml/
Q. What character sets are supported by Unicode?
A. “More than you will ever need” is probably the shortest answer.
Specifically, Unicode 2.0 supports scripts for Arabic, Armenian, Bengali, Bopomofo, Cyrillic, Devanagari (the script employed by Hindi and Sanskrit), Georgian, Greek, Gujarati, Gurmukhi, Han, Hangul, Hebrew, Hiragana, Kannada, Katakana, Latin (including the international phonetic alphabet IPA), Lao, Malayalam, Oriya, Tamil, Telugu, Thai, and Tibetan scripts. These scripts are all written horizontally. Hebrew and Arabic are of course written right to left. Indic scripts are written variously and in ways that are sometimes described as a circular motion. Arabic and the Indic scripts must use intelligent ligature selection.
Unicode 3.0 expands some existing scripts and adds Braille, Canadian Aboriginal, Cherokee, Ethiopic, Khmer, Mongolian, Myanmar, Ogham, Runic, Sinhala, Syriac, Thaana, and Yi. Mongolian is the first script that can only be written in vertical rows.
Besides the characters for writing the world's major languages, there is a whole set of typographic, technical, graphical, mathematical, astrological and other scientific symbols and geometrical shapes in Unicode.
Q. I heard Unicode has limited support for Chinese, Japanese and Korean. Is that true?
A. Unicode supports Han scripts such as those used in Chinese, Japanese and Korean (often called CJK). Unfortunately some urban legends or myths have developed about the support of CJK characters in Unicode. According to unicode.org, “The Unicode Standard supports all of the CJK characters from JIS X 0208, JIS X 0212, JIS X 0221, or JIS X 0213, for example, and many more. This is true no matter which encoding form of Unicode is used: UTF-8, UTF-16, or UTF-32.”
In fact, Unicode supports more than 70,000 CJK characters. More will undoubtedly be added, but you can be assured that the support is comprehensive already and goes above and beyond what is expected. Unicode.org reports that “the International Standard ISO/IEC 10646 and the Unicode Standard are completely synchronized in repertoire and content. And that means that Unicode has the same repertoire as GB 18030, since that also is synchronized with ISO 10646 — although with a different ordering and byte format.” Rather a mouthful for those that do not follow these things in detail. And in the final analysis, that is the beauty of eDeveloper 10 – as with all previous versions of Magic, you do not need to get bogged down in the underlying technical details. With eDeveloper 10, just sit back, relax and enjoy full Unicode support.
Compliance Requirements Strain IT Resources
For those of you keeping track of Magic Software's entry into the podcast age, here is a link to the interview on the subject of compliance with Carol Woodbury, Founder and President of Skyview Partners.
Learn more about the webinar here on Magic's website.
For information on ERP Integration, please look at the Integrate My JDE blog. You will find information on ERP and accounting interfaces and integration with CRM systems, enterprise portals, eCommerce, social media, and other business applications and software.
Learn more about the webinar here on Magic's website.
For information on ERP Integration, please look at the Integrate My JDE blog. You will find information on ERP and accounting interfaces and integration with CRM systems, enterprise portals, eCommerce, social media, and other business applications and software.
Thursday, May 10, 2007
Thanks for the Memories: MIUG 2007
What a great MIUG 2007! Thanks to everyone who participated in and attended this year's MIUG 2007. I hope that you will agree that this event provided an excellent foundation for members of the Magic community looking to advance and grow their businesses using the greatest development tool on the market today.
The key word at this year's event seems to have been "transparency." Thank you WIRED magazine for placing this concept top of mind for everyone. You probably noticed a few things that were different at this year's conference:
1. We started by showing our imminent built-in support for PDF. I am thinking that since it took us 6+ years of MIUG to release this feature, we should start each conference for the next six years by doing a PDF demo. :) The reason this is an evidence of transparency is that it showed that we listened to the input from last year, admitted our mistakes, and moved on.
2. The demonstration of he Rich Internet Client is also an evidence of transparency, in that we are showing that the input received during the CAPP migration process of last year has also influenced heavily on our development decisions.
3. Two years ago at MIUG, you may remember that we discussed the need for lower cost licensing models. It took us a little over a year to implement our solution, but we have also responded in a big way with the Discovery/Xpress/Enterprise Edition structure to answer the needs for seeding, affordability and power, respectively.
4. The focus roup sessions were invaluable. I am sure that you will see great things coming from Avishai Shafir as the lead person directing our Magic community programs and marketing.
5. Once again, we were delighted to be able to provide knowledgeable presenters from our R&D, technical support and professional services teams. We also love all of the presentations by each of you in the user community. The depth of your knowledge is invaluable.
6. Having our chairman, David Assia, present with us at MIUG was the icing on the cake this year. David's passion and vision are obvious and I hope that you can see that the future of eDeveloper is bright.
I want to take this opportunity to once again thank Dale and Heidi Schuppenauer and Cabrita Software for organizing the conference as well as SUmmer Remmert for her assistance.
See you all in 2008!
The key word at this year's event seems to have been "transparency." Thank you WIRED magazine for placing this concept top of mind for everyone. You probably noticed a few things that were different at this year's conference:
1. We started by showing our imminent built-in support for PDF. I am thinking that since it took us 6+ years of MIUG to release this feature, we should start each conference for the next six years by doing a PDF demo. :) The reason this is an evidence of transparency is that it showed that we listened to the input from last year, admitted our mistakes, and moved on.
2. The demonstration of he Rich Internet Client is also an evidence of transparency, in that we are showing that the input received during the CAPP migration process of last year has also influenced heavily on our development decisions.
3. Two years ago at MIUG, you may remember that we discussed the need for lower cost licensing models. It took us a little over a year to implement our solution, but we have also responded in a big way with the Discovery/Xpress/Enterprise Edition structure to answer the needs for seeding, affordability and power, respectively.
4. The focus roup sessions were invaluable. I am sure that you will see great things coming from Avishai Shafir as the lead person directing our Magic community programs and marketing.
5. Once again, we were delighted to be able to provide knowledgeable presenters from our R&D, technical support and professional services teams. We also love all of the presentations by each of you in the user community. The depth of your knowledge is invaluable.
6. Having our chairman, David Assia, present with us at MIUG was the icing on the cake this year. David's passion and vision are obvious and I hope that you can see that the future of eDeveloper is bright.
I want to take this opportunity to once again thank Dale and Heidi Schuppenauer and Cabrita Software for organizing the conference as well as SUmmer Remmert for her assistance.
See you all in 2008!
Saturday, March 03, 2007
eDeveloper V10 Advanced Features Webinar
eDeveloper V10 -- Advanced Features
Topic: eDeveloper V10 -- Advanced Features
Date: Wednesday, March 21, 2007
Time: 11:00 am, Pacific Daylight Time (GMT -07:00, San Francisco)
Join Roberto Ramirez, a Senior Consultant in the Professional Services Department at Magic Software Enterprises, Inc. in Laguna Hills, California, who will present three important advanced features in eDeveloper V10:
Registration. To attend this meeting, you must first register for it. Please click here to see more information about and register for this meeting.
Once you have registered for the meeting, you will receive an email message confirming your registration. This message will provide the information that you need to join the meeting.
Monday, February 26, 2007
How do you define software quality?
ISO 9126 provides a standardized way to evaluate software quality by defining six sets of attributes by which we can evaluate software. These attribute sets are functionality, reliability, usability, efficiency, maintainability, and portability. What do they mean by these standards?
Functionality refers to the existence of a set of functions and their associated properties. Functionality gets to the fundamental ability of a software application to perform the required tasks necessary to satisfy user and organizational needs.
Reliability refers to the stable performance of these functions under a variety of conditions across time.
Usability as approached by ISO 9126 deals with the effort needed for use, and user assessment and acceptance.
Efficiency is all about performance issues and the resources required to perform the software functions under various conditions over time.
Functionality, reliability, usability and efficiency are all characteristics observable by users or operators. The other two criteria for measuring software quality that are contained in ISO 9126 relate to the developers ability to interact with a given software application. It isn't only an assessment of the tools used, but also how well the tools were used to accomplish the need for these next criteria:
Maintainability looks at the effort required to make specific modifications. We all know that some applications are easier to maintain than others due to variations in documentation, organization and software architecture.
Portability, or the ability to run applications in new environments, can also be impacted by the developer, and not simply by the tools she uses. For example, an application that utilizes many environment specific utilities may be more difficult to port to a new environment where those utilities may be unavailable or handled in a different manner.
With eDeveloper V10, you gain a software development environment for application development, testing, and deployment that enhances software quality in all of these areas for a number of reasons. In future posts, will look at all of these areas in detail.
Functionality refers to the existence of a set of functions and their associated properties. Functionality gets to the fundamental ability of a software application to perform the required tasks necessary to satisfy user and organizational needs.
Reliability refers to the stable performance of these functions under a variety of conditions across time.
Usability as approached by ISO 9126 deals with the effort needed for use, and user assessment and acceptance.
Efficiency is all about performance issues and the resources required to perform the software functions under various conditions over time.
Functionality, reliability, usability and efficiency are all characteristics observable by users or operators. The other two criteria for measuring software quality that are contained in ISO 9126 relate to the developers ability to interact with a given software application. It isn't only an assessment of the tools used, but also how well the tools were used to accomplish the need for these next criteria:
Maintainability looks at the effort required to make specific modifications. We all know that some applications are easier to maintain than others due to variations in documentation, organization and software architecture.
Portability, or the ability to run applications in new environments, can also be impacted by the developer, and not simply by the tools she uses. For example, an application that utilizes many environment specific utilities may be more difficult to port to a new environment where those utilities may be unavailable or handled in a different manner.
With eDeveloper V10, you gain a software development environment for application development, testing, and deployment that enhances software quality in all of these areas for a number of reasons. In future posts, will look at all of these areas in detail.
Thursday, February 22, 2007
Magic eDeveloper Enters the Podcast Age
Well folks, here it is the long awaited and much ballyhooed eDeveloper Contest podcast. Please click here and enjoy the first ever (and definitely not the last) Magic eDeveloper podcast.
Wednesday, February 07, 2007
Get Ready for Daylight Savings Time 2007
Does your application use a table that lists the date and time of the switch to/from Daylight Savings time? If so, be forwarned: Congress has changed the dates in the United States beginning in 2007! Canada and many Carribean countries have changed their DST timetables as well.
Previous start to DST: First Sunday of April (1 April 2007)
New start of DST: Second Sunday of March (11 March 2007)
Previous end of DST: last Sunday of October (28 October 2007)
New end of DST: first Sunday of November (4 November 2007)
What types of applications could be afected?
Scheduling Applications. The most obvious are calendaring or scheduling applications, especially those that accomodate multiple international time zones. One example might be an international air freight scheduling system. Another example would be CRM scheduling systems that send email notices that localize the time of a scheduled appointment.
Applications with Time Calculations. An application that performs calculations using minutes or hours could be thrown off. For example, piece workers who are paid bonuses based on exceeding a certain number of pieces in a given time period. The calculations could be off by 60 minutes or 1 hour.
Data Synchronization Batch Jobs Suppose one data center is scheduled to synchronize data at a given local time, say 2 am, and another data center is normally completing its batch jobs prior to that so that the synched data center has current information -- or at least they should have, but the foreign data center does not know that it is synchronizing to data that has not yet updated because of the time change. Since it is a batch job that has not completed, the information could be off by a complete 24 hours or more. Any reports generated against that information, or supply chain orders dependent on that information, could be seriously off.
Planes Will Not Fall Out of the Sky I talked to my colleagues about this and they reminded me that planes will not fall out of the sky. But it is worth considering now, whether any of your applications are dependent on accurate update of daylight savings time.
Previous start to DST: First Sunday of April (1 April 2007)
New start of DST: Second Sunday of March (11 March 2007)
Previous end of DST: last Sunday of October (28 October 2007)
New end of DST: first Sunday of November (4 November 2007)
What types of applications could be afected?
Scheduling Applications. The most obvious are calendaring or scheduling applications, especially those that accomodate multiple international time zones. One example might be an international air freight scheduling system. Another example would be CRM scheduling systems that send email notices that localize the time of a scheduled appointment.
Applications with Time Calculations. An application that performs calculations using minutes or hours could be thrown off. For example, piece workers who are paid bonuses based on exceeding a certain number of pieces in a given time period. The calculations could be off by 60 minutes or 1 hour.
Data Synchronization Batch Jobs Suppose one data center is scheduled to synchronize data at a given local time, say 2 am, and another data center is normally completing its batch jobs prior to that so that the synched data center has current information -- or at least they should have, but the foreign data center does not know that it is synchronizing to data that has not yet updated because of the time change. Since it is a batch job that has not completed, the information could be off by a complete 24 hours or more. Any reports generated against that information, or supply chain orders dependent on that information, could be seriously off.
Planes Will Not Fall Out of the Sky I talked to my colleagues about this and they reminded me that planes will not fall out of the sky. But it is worth considering now, whether any of your applications are dependent on accurate update of daylight savings time.
Monday, February 05, 2007
The New Report Generator
Important: The New Report Generator is Here
1. What is it good for?
Many years ago eDeveloper (then named Magic) used to come bundled with a report generator. This was an amazing tool, basically allowing end users to create their own reports by letting them run existing reports, create new reports, delete reports, duplicate reports, load reports created by others, view the results of an existing report, or print a report, based on warehouse type views created by developers. Some of you may have missed the new report generator that was slipped into eDeveloper V10.1. It sort of snuck in the side door with the 10.1 version and very little noise has been made about it to date. So let's correct that now: the report generator is back and its more powerful than ever. There are two other ways to deal with report generation that are documented in the Help files for eDeveloper. But the new Report Generator has its own help files from which I will summarize.
2. So, how do I use it?
2.1. Loading
2.2. Using the Generator
The Select Report screen helps you manage reports with the following options (available as buttons or options in the File menu):
2.2.1. Report Creation Wizard
The Report Generator is equipped with a wizard that helps you create your report easily, step by step. Click New in the Select Report screen to activate the Report Creation wizard.
The Report Creation wizard contains six simple steps, but you do not have to complete all six steps to create a report. You may complete your report and exit the wizard at any time by clicking Finish or Close.
If you click Finish, the wizard closes, the Design screen opens, and the information you have entered in the wizard screens is automatically saved.
If you click Close, the wizard closes, the Design screen opens, but the information you have entered will not be saved unless you click Save.
The six steps of the Report Generation Wizard are:
2.2.1.1. Setting
The Setting step lets you define your report name and layout.
The report default name is the name of the eDeveloper program where the Report Generator is activated
2.2.1.2. Columns
The Columns step lets you select the variables you want to display, and their order, in the report table.
The left part of the screen shows the available columns, which includes all the fields selected in the eDeveloper program. The right part of the screen shows the columns you selected to be included in your report.
On the Columns screen you can perform the operations listed below:
2.2.1.3. Sections
The Sections step lets you divide your report into subsections that are similar to the grouping in eDeveloper.
On the Sections screen you can perform the operations listed below:
2.2.1.4. Sorting
The Sorting step lets you define the sort order of the report.
On the Sorting screen you can perform the operations listed below:
The main screen of the Report Generator is the design screen, which lets you graphically design and save the report.
To help you create a better report with less effort, the Design screen contains the tools listed below:
2.2.2.1. Drawing Aids Palette
The Drawing Aids palette helps you arrange the Elements and Variables you have added to the report. The buttons on this palette identify the available operations, and a ToolTip describes each operation.
2.2.2.2. Elements List Palette
The Elements List palette lets you add elements to your report. There are three types of Elements:
The Report Generator Design toolbar lets you perform the operations needed to create your report. The toolbar buttons include:
2.2.2.4. Variables Management Tool
Click on the Report Generator Design Toolbar to add and remove Variables and User Questions to your report.
Adding Variables:
No more simple reports hustle. The new report generator allows developers to create a view using main application entities linked to each other. The column names can be changed to user friendly names in the Dataview tab. Users can then create simple reports based on that view, allowing developers to concentrate on what they do best.
1. What is it good for?
Many years ago eDeveloper (then named Magic) used to come bundled with a report generator. This was an amazing tool, basically allowing end users to create their own reports by letting them run existing reports, create new reports, delete reports, duplicate reports, load reports created by others, view the results of an existing report, or print a report, based on warehouse type views created by developers. Some of you may have missed the new report generator that was slipped into eDeveloper V10.1. It sort of snuck in the side door with the 10.1 version and very little noise has been made about it to date. So let's correct that now: the report generator is back and its more powerful than ever. There are two other ways to deal with report generation that are documented in the Help files for eDeveloper. But the new Report Generator has its own help files from which I will summarize.
2. So, how do I use it?
2.1. Loading
- Create a component and then zoom to select the ReportingGenerator.eci application from the Add_On directory.
- In the task you want to work with, set the Print Data property in the Options tab of the Task Properties dialog box to Yes.
- Run the program that you want to print data from.
- Press CTRL+P to open the Report Generator. The Select Report screen opens.
2.2. Using the Generator
The Select Report screen helps you manage reports with the following options (available as buttons or options in the File menu):
- New - Opens the Report Creation wizard where you can create a new report.
- Edit - Lets you edit the report that you have selected.
- Delete - Deletes the report that you have selected.
- Duplicate - Copies the report that you have selected.
- Load - Lets you use reports created by others for the same eDeveloper program. You do this by moving reports to a visible place on your computer and then clicking the Load icon. This enables you to select the required report. This option is in the File menu.
- Preview - Provides a preview of the report that you have selected.
- Print - Prints the report that you have selected.
2.2.1. Report Creation Wizard
The Report Generator is equipped with a wizard that helps you create your report easily, step by step. Click New in the Select Report screen to activate the Report Creation wizard.
The Report Creation wizard contains six simple steps, but you do not have to complete all six steps to create a report. You may complete your report and exit the wizard at any time by clicking Finish or Close.
If you click Finish, the wizard closes, the Design screen opens, and the information you have entered in the wizard screens is automatically saved.
If you click Close, the wizard closes, the Design screen opens, but the information you have entered will not be saved unless you click Save.
The six steps of the Report Generation Wizard are:
2.2.1.1. Setting
The Setting step lets you define your report name and layout.
The report default name is the name of the eDeveloper program where the Report Generator is activated
2.2.1.2. Columns
The Columns step lets you select the variables you want to display, and their order, in the report table.
The left part of the screen shows the available columns, which includes all the fields selected in the eDeveloper program. The right part of the screen shows the columns you selected to be included in your report.
On the Columns screen you can perform the operations listed below:
- Rename a column by clicking on the column, and then clicking the
button. Enter a new name in the Column Properties dialog box and click OK.Note: This only changes the column name for the current report. - Change the Date Format by marking a Date column you would like to change and pressing the
button. You can edit the column name and change its date format in the Column Properties dialog box and click OK.Note: The default format for Date columns is dd/mm/yyyy. - Select all columns by pressing
the button. - Select a variable by using one of the following methods:
Drag a variable from the Available Items list to the Selected Items list.
Select a variable and click the
button.
Double-click on a variable in the Available Items list. - Unselect all columns by pressing the
button. - Unselect a column by marking the column and pressing the
button. - Move a column up by marking it and clicking the
button. - Move a column down by marking it and clicking the
button
2.2.1.3. Sections
The Sections step lets you divide your report into subsections that are similar to the grouping in eDeveloper.
On the Sections screen you can perform the operations listed below:
- Define Section Properties – Click on the section whose properties you want to define, and then click the button to:
- Change the title of a section.
- Choose if you want to start the section on a new page.
- Choose if you want to print the section title on every page. - Select a column by using one of the following methods:
- Drag a variable from the Available Items list to the Selected Items list.
- Select a variable and click the button.
- Double-click on a variable in the Available Items list. - Unselect all columns by pressing the button.
- Unselect a column by marking the column and pressing the button.
- Move a column up by marking it and clicking the button.
- Move a column down by marking it and clicking the button.
2.2.1.4. Sorting
The Sorting step lets you define the sort order of the report.
On the Sorting screen you can perform the operations listed below:
- Change the Sort order by selecting a column and pressing the button to open the Sort Properties dialog box and select the change.Note: The default sort order of a column is ascending.
- Select the columns by using one of the following methods:
- Drag a column from the Available Items list to the Selected Items list.
- Select a column and click the button.
- Double-click on a column in the Available items list. - Unselect all columns by pressing the button.
- Unselect a column by marking the column and pressing the button.
- Move a column up by marking it and clicking the button.
- Move a column down by marking it and clicking the button.
2.2.1.5. Filtering
The Filtering step lets you define an expression that will filter the report result.
Create a filtering expression by dragging and dropping Functions, Operations, or Variables (variable names are preceded by ~) from the right list to the left working area.
Click Test to check if the expression you created is valid.
2.2.1.6. Accumulators
The Accumulators step lets you create Accumulators for your report, such as the total salaries amount or employee count.
Create a new Accumulator by selecting a column from the Available Items list on the left and moving it to the Selected Items list on the right.
On the Accumulators screen you can perform the operations listed below:
- Define the Accumulator type by selecting an accumulator and clicking the button.Note: The default type for numeric data is SUM, and the default type for all other data is Count.
- Select the Accumulators by using one of the following methods:
- Drag a column from the Available Items list to the Selected Items list.
- Select a column and click the button.
- Double-click on a column in the Available items list. - Unselect all Accumulators by pressing the button.
- Unselect an Accumulator by marking the column and pressing the button.
- Move an Accumulator up by marking it and clicking the button.
- Move an Accumulator down by marking it and clicking the button.
The main screen of the Report Generator is the design screen, which lets you graphically design and save the report.
To help you create a better report with less effort, the Design screen contains the tools listed below:
2.2.2.1. Drawing Aids Palette
The Drawing Aids palette helps you arrange the Elements and Variables you have added to the report. The buttons on this palette identify the available operations, and a ToolTip describes each operation.
2.2.2.2. Elements List Palette
The Elements List palette lets you add elements to your report. There are three types of Elements:
- Variables – All the fields you selected in the invoking eDeveloper program with the names you gave them.
- Added Variables – The variables you added to the report using the Variables Management Tool.
- Internal Elements that help you design your report properly, including:
Rectangle
Image
Line
Simple Text
Report Title
Date
Page Number
The Report Generator Design toolbar lets you perform the operations needed to create your report. The toolbar buttons include:
Saves your report with the changes you made.
Displays the report you created.
Print the report.
Similar to the Wizard’s Setting screen.
See Variables Management Tool.
Similar to the Wizard’s Columns screen.
Similar to the Wizard’s Sections screen.
Similar to the Wizard’s Sorting screen.
Similar to the Wizard’s Filtering screen.
Similar to the Wizard’s Accumulators screen.
Lets you redesign the screen according to the default values. When you press this button, all the changes you made will be lost
Displays the Elements List Palette. - Displays the Drawing Aides Palette.
2.2.2.4. Variables Management Tool
Click on the Report Generator Design Toolbar to add and remove Variables and User Questions to your report.
Adding Variables:
- To add a new variable, press the Add Variable button, enter the variable name, select the variable type, and click OK to open a Column Properties dialog box.
- Create an expression by dragging and dropping Functions, Operations, or Variables (variable names are preceded by ~) from the right list to the left working area.
- Click Test to check if the expression you created is valid.
- Click OK to complete the new variable creation.
- Adding User Questions
The User Questions mechanism lets you ask the user who will run the report questions that will influence the report result data. Click the Add User Question button, enter the Name and Question type in the Add New Variable dialog box, and click OK to continue. You can later find your question by this name in the Expression Editor.
In the User Question dialog box, enter the question you want the user to see and the default value of the answer. - Removing Variables and User Questions
To remove a variable or user question you added to the report, select the variable you want to remove, and click the Remove variable button. - The Remove variable button is only applicable for variables and user questions you created in the Report Generator.
No more simple reports hustle. The new report generator allows developers to create a view using main application entities linked to each other. The column names can be changed to user friendly names in the Dataview tab. Users can then create simple reports based on that view, allowing developers to concentrate on what they do best.
Tuesday, January 30, 2007
Quote of the Day -- David James
"eDeveloper V10 does a great job in handling XML, parallel processing, debugging, and web services. It's a straight forward tool that helps us save time and money, while reacting quickly to our customers' changing business needs."
David James
Senior Developer,
Warren-Board
David James
Senior Developer,
Warren-Board
Labels:
AIX development tools,
app dev,
appdev,
application development tools,
RAD,
RADD
Windows Vista
The much delayed Windows Vista operating system is now shipping from Microsoft.
The official statement from Magic Software Enteprises is that
"eDeveloper 10.1 SP2 and higher will be supported for "Windows Vista".
Previous releases of Magic (including 9.4) are not supported and were never qualified."
The official statement from Magic Software Enteprises is that
"eDeveloper 10.1 SP2 and higher will be supported for "Windows Vista".
Previous releases of Magic (including 9.4) are not supported and were never qualified."
Monday, January 22, 2007
New eDeveloper V10 OS Releases Announced
Magic Software has added new operating system versions of eDeveloper V10 to the Downloads Area. These are available for download by customers with an eService account at http://downloads.magicsoftware.com
The new versions posted last week are:
eDeveloper Server 10.1 SP1 for IBM AIX
eDeveloper Server 10.1 SP1 for Sun Solaris
eDeveloper Server 10.1 SP1 for Linux
The new versions posted last week are:
Quote of the Day -- David Schmukler
XML enhancements and an upgraded RAD
"...as an IT professional I am very impressed with eDeveloper 10's XML enhancements and the upgraded RAD. As to user experience, eDeveloper 10 allows multiple contacts, permitting two active windows to be open at the same time. This is a significant improvement to the user experience".
David Schmukler
Chief Technology Officer,
New Era Solutions
"...as an IT professional I am very impressed with eDeveloper 10's XML enhancements and the upgraded RAD. As to user experience, eDeveloper 10 allows multiple contacts, permitting two active windows to be open at the same time. This is a significant improvement to the user experience".
David Schmukler
Chief Technology Officer,
New Era Solutions
Thursday, December 21, 2006
My Magical Christmas Wish List
A Christmas Wish List Powered By Magic Software
So many wonderful things are backed up behind the scenes by Magic Software. Here are ten things I'd love to get in my Christmas stocking that are "powered by Magic."
1. Lakers Tickets – The Staples Center uses ABI MasterMind, an application written in eDeveloper. So my number one wish is for Lakers Tickets.
2. A Subscription to the Orange County Register. – The Orange County Register uses Burt Technologies software for newspaper insert management, so I'd like a subscription to the paper, please.
3. Dinner at Outback Steakhouse. – Wow, this is already becoming the greatest Christmas Stocking ever and I'm only at number 3.
4. Weekend Rental of a Chrysler Sebring Convertible from Advantage Rent A Car. – Nothing like a weekend cruising Pacific Coast Highway.
5. Casino Upgrades at the Orleans Casino. – That's right. Orleans Casino is one of 16 casinos operated by Boyd Gaming, a Magic customer.
6. A Bottle of Kenneth Cole Signature, Men's Fragrance. – One of many designer brands carried by Coty, another Magic customer.
7. A Pair of adidas Climawarm Herm shoes, Size 13. – OK, I know my Christmas Stocking is getting full, but it’s a big stocking. :)
8. Club Med Vacation – Uh huh, Club Meds worldwide are powered by Magic applications.
9. World Peace I can too get World Peace delivered by a Magic application for Christmas! You see, the United Nations General Assembly wrote a special Magic application to manage its resolutions and amendments in the five official languages of the UN (English, French, Chinese, Russian and Arabic). Pretty cool, huh?
10. A Lump of Coal Unfortunately, I may only get and deserve this last item, which could be delivered by Magic customer Wabush Mines up in Quebec and Labrador, Canada.
Here's hoping you all get the things that you are wishing for next year. Please join me in adding number 9 to your list. Happy Hanukkah! Merry Christmas! Happy New Year!
So many wonderful things are backed up behind the scenes by Magic Software. Here are ten things I'd love to get in my Christmas stocking that are "powered by Magic."
1. Lakers Tickets – The Staples Center uses ABI MasterMind, an application written in eDeveloper. So my number one wish is for Lakers Tickets.
2. A Subscription to the Orange County Register. – The Orange County Register uses Burt Technologies software for newspaper insert management, so I'd like a subscription to the paper, please.
3. Dinner at Outback Steakhouse. – Wow, this is already becoming the greatest Christmas Stocking ever and I'm only at number 3.
4. Weekend Rental of a Chrysler Sebring Convertible from Advantage Rent A Car. – Nothing like a weekend cruising Pacific Coast Highway.
5. Casino Upgrades at the Orleans Casino. – That's right. Orleans Casino is one of 16 casinos operated by Boyd Gaming, a Magic customer.
6. A Bottle of Kenneth Cole Signature, Men's Fragrance. – One of many designer brands carried by Coty, another Magic customer.
7. A Pair of adidas Climawarm Herm shoes, Size 13. – OK, I know my Christmas Stocking is getting full, but it’s a big stocking. :)
8. Club Med Vacation – Uh huh, Club Meds worldwide are powered by Magic applications.
9. World Peace I can too get World Peace delivered by a Magic application for Christmas! You see, the United Nations General Assembly wrote a special Magic application to manage its resolutions and amendments in the five official languages of the UN (English, French, Chinese, Russian and Arabic). Pretty cool, huh?
10. A Lump of Coal Unfortunately, I may only get and deserve this last item, which could be delivered by Magic customer Wabush Mines up in Quebec and Labrador, Canada.
Here's hoping you all get the things that you are wishing for next year. Please join me in adding number 9 to your list. Happy Hanukkah! Merry Christmas! Happy New Year!
Wednesday, November 29, 2006
WS-* At Your Service With eDeveloper V10
A Little Magic for Web Services
The World Wide Web Consortium (W3C) defines a Web service as "a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards."
eDeveloper V10 provides powerful capabilities for creating and integrating applications that utilize Web services. Internally, eDeveloper V10 uses the Systinet Web Services framework (specifically "Systinet Server for Java") for providing and consuming Web Services. Fortunately, you don't have to do any Java programming in order to develop programs that take advantage of this foundation.
The WS standards supported by eDeveloper include SOAP 1.1 and SOAP 1.2; WSDL 1.1; SOAP Attachments; WS-I conformance; transport level security; and WS-Security for authentication, encryption and digital signing of SOAP messages. For reference, SOAP is Simple Object Access Protocol, WSDL is Web Services Description Language, UDDI is Universal Description Discovery and Integration, and WS signifies Web Services. WS-* refers to any of several enhancements or extensions to the basic SOAP, WSDL and UDDI standards, including WS-Interoperability and WS-Security.
I like to think of Web services as shared application logic (and associated data). For example, a Web service might be used to provide access to changing data such as stock ticker symbols (companies are listed and delisted). A service is said to be finely grained when it performs a narrow function, for example, a service that returns the range between the minimum and maximum value in a series of numbers. A coarsely grained web service might contain fairly complex functionality, such as a Web service that processes an order, calculates shipping charges and sends confirmation emails – in a single web service. The object of the game is to create fine grained services, but not too finely grained, so as to avoid the inflexibility of coarsely grained services on the one hand and the complex orchestration of finely grained services on the other.
To use eDeveloper as a Web Services consumer you can either use the Web Service Composite Generator or the Invoke Web Service operation.
To use eDeveloper as a Web Services provider, you should generate a service using the Web Service Interface Builder. To deploy and use the service you should make sure the following Windows OS service is started – “Systinet Server for Java”.
For information about how eDeveloper V10 deals with migration of Web Services from eDeveloper 9.4 applications, see Conversion Process Modifications.
The Web Service Composite Generator is a wizard used to generate a component that accesses a Web Service.
The How-to is fairly straightforward. First, you access the composite generators by following the Main Wizard Module steps. In the Web Service Location screen, click the WSDL URL or UDDI Search option. If you selected WSDL URL, enter the location of the WSDL. You can enter up to 256 characters in the WSDL URL field. You can click the Browse button to search for the WSDL file on the disk. The you click Next and eDeveloper will access and parse the WSDL file. If a WSDL file is not found or if the WSDL file is invalid, an error message will appear.
If you selected the UDDI Search option, the UDDI Server and Search String screen will appear. If you selected the WSDL URL option, the Operation Selection screen will appear. But we won't get into those details here (you can find more information in the documentation).
To see what happens once you finish using the Web Service wizard, see the Generated Web Service Component topic in the documentation.
Invoke Web Service lets you call a Web Service by using the SOAP protocol. When you select the Invoke Web S (Service) operation, you select a service that has been defined in the Service repository as a SOAP type. Zoom from the space to the right of Web S to open the Web Service dialog box, where you can define the Service, Operation, and Fault properties.
The Web Service Interface Builder lets you provide Web Services using eDeveloper by exposing public batch programs. The builder will generate a service JAR file and optionally deploy it on a Systinet™ server (which is installed as part of the eDeveloper installation, identified as a Web Services framework).
To successfully generate and deploy the Web Service, you should make sure that the following Windows service is started: "Systinet Server for Java". The Web Service Interface Builder is not available in the eDeveloper Discovery version.
With eDeveloper V10, you can also easily see the available Web services that you have created. The Available Web Services screen is a list of previously created Web Services as well as additional details. You can view and delete the available Web Services from the list, but you cannot modify the data in this screen.
As those who have published and subscribed to Web Services in eDeveloper 9.4 will tell you, this is a much more elegant and straightforward implementation and has the great advantage of being compliant with WS-Interoperability and WS-Security : two more great reasons to upgrade to eDeveloper V10. For all the details, see the user documentation online at www.magicsoftware.com.
The World Wide Web Consortium (W3C) defines a Web service as "a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards."
eDeveloper V10 provides powerful capabilities for creating and integrating applications that utilize Web services. Internally, eDeveloper V10 uses the Systinet Web Services framework (specifically "Systinet Server for Java") for providing and consuming Web Services. Fortunately, you don't have to do any Java programming in order to develop programs that take advantage of this foundation.
The WS standards supported by eDeveloper include SOAP 1.1 and SOAP 1.2; WSDL 1.1; SOAP Attachments; WS-I conformance; transport level security; and WS-Security for authentication, encryption and digital signing of SOAP messages. For reference, SOAP is Simple Object Access Protocol, WSDL is Web Services Description Language, UDDI is Universal Description Discovery and Integration, and WS signifies Web Services. WS-* refers to any of several enhancements or extensions to the basic SOAP, WSDL and UDDI standards, including WS-Interoperability and WS-Security.
I like to think of Web services as shared application logic (and associated data). For example, a Web service might be used to provide access to changing data such as stock ticker symbols (companies are listed and delisted). A service is said to be finely grained when it performs a narrow function, for example, a service that returns the range between the minimum and maximum value in a series of numbers. A coarsely grained web service might contain fairly complex functionality, such as a Web service that processes an order, calculates shipping charges and sends confirmation emails – in a single web service. The object of the game is to create fine grained services, but not too finely grained, so as to avoid the inflexibility of coarsely grained services on the one hand and the complex orchestration of finely grained services on the other.
To use eDeveloper as a Web Services consumer you can either use the Web Service Composite Generator or the Invoke Web Service operation.
To use eDeveloper as a Web Services provider, you should generate a service using the Web Service Interface Builder. To deploy and use the service you should make sure the following Windows OS service is started – “Systinet Server for Java”.
For information about how eDeveloper V10 deals with migration of Web Services from eDeveloper 9.4 applications, see Conversion Process Modifications.
The Web Service Composite Generator is a wizard used to generate a component that accesses a Web Service.
The How-to is fairly straightforward. First, you access the composite generators by following the Main Wizard Module steps. In the Web Service Location screen, click the WSDL URL or UDDI Search option. If you selected WSDL URL, enter the location of the WSDL. You can enter up to 256 characters in the WSDL URL field. You can click the Browse button to search for the WSDL file on the disk. The you click Next and eDeveloper will access and parse the WSDL file. If a WSDL file is not found or if the WSDL file is invalid, an error message will appear.
If you selected the UDDI Search option, the UDDI Server and Search String screen will appear. If you selected the WSDL URL option, the Operation Selection screen will appear. But we won't get into those details here (you can find more information in the documentation).
To see what happens once you finish using the Web Service wizard, see the Generated Web Service Component topic in the documentation.
Invoke Web Service lets you call a Web Service by using the SOAP protocol. When you select the Invoke Web S (Service) operation, you select a service that has been defined in the Service repository as a SOAP type. Zoom from the space to the right of Web S to open the Web Service dialog box, where you can define the Service, Operation, and Fault properties.
The Web Service Interface Builder lets you provide Web Services using eDeveloper by exposing public batch programs. The builder will generate a service JAR file and optionally deploy it on a Systinet™ server (which is installed as part of the eDeveloper installation, identified as a Web Services framework).
To successfully generate and deploy the Web Service, you should make sure that the following Windows service is started: "Systinet Server for Java". The Web Service Interface Builder is not available in the eDeveloper Discovery version.
With eDeveloper V10, you can also easily see the available Web services that you have created. The Available Web Services screen is a list of previously created Web Services as well as additional details. You can view and delete the available Web Services from the list, but you cannot modify the data in this screen.
As those who have published and subscribed to Web Services in eDeveloper 9.4 will tell you, this is a much more elegant and straightforward implementation and has the great advantage of being compliant with WS-Interoperability and WS-Security : two more great reasons to upgrade to eDeveloper V10. For all the details, see the user documentation online at www.magicsoftware.com.
Tuesday, November 07, 2006
eDeveloper and SNMP: Part Two – Making it Happen
Using eDeveloper and SNMP
eDeveloper applications and various components or modules can send trap messages to a pre-configured Network Management Station (NMS), also referred to as an SNMP monitor, which lets the system administrator query and control the eDeveloper application or module when alarms, failures, or other exceptional events occur.
The SNMP DLL
Needless to say, the SNMP agent must be present on the operating system and the eDeveloper SNMP extension, the Mgsnmp.dll file, must be placed in the eDeveloper root during installation.
The MIB files
eDeveloper supplies two Management Information Base (MIB) files, Magic.mib and Magic_trap.mib. These are located in the eDeveloper Support directory. The MIB files are compiled according to the NMS version installed. You should copy the MIB files to the NMS server.
Overview of SNMP Use in Magic
You can set various values for the SNMP parameters, defined in the Mgreq.ini and Mgrb.ini files, to specify when the Magic Requester and Magic Requester Broker will send trap messages.
The SNMPNotify function is utilized to issue SNMP messages with the available parameters of message, severity.
When an alarm or error occurs outside of the application development process, SNMP trap messages are sent to the Network Management Station (NMS).
Examples of the types of trap messages sent are:
A thread crash or fatal error of eDeveloper or the eDeveloper gateway.
Termination due to the license limit.
Unable to connect to a specified DBMS.
Database connection threshold exceeded.
An enterprise server was stopped and started. The trap message contains the address of the enterprise server.
An enterprise server aborted its connection to the Magic Request Broker. The trap message contains the address of the enterprise server.
Anyway, this is an overview of SNMP and eDeveloper. If you are not familiar with SNMP applications, such as IBM Tivoli, then some of this discussion may seem like a foreign language discussion. For more information on SNMP, try the official Internet Engineering Task Force website for official information contained in the Request for Comments (RFC) documents. But for those familiar with SNMP for application monitoring, you can see from this overview that eDeveloper "plays well" with SNMP application monitors and other SNMP oriented software.
eDeveloper applications and various components or modules can send trap messages to a pre-configured Network Management Station (NMS), also referred to as an SNMP monitor, which lets the system administrator query and control the eDeveloper application or module when alarms, failures, or other exceptional events occur.
The SNMP DLL
Needless to say, the SNMP agent must be present on the operating system and the eDeveloper SNMP extension, the Mgsnmp.dll file, must be placed in the eDeveloper root during installation.
The MIB files
eDeveloper supplies two Management Information Base (MIB) files, Magic.mib and Magic_trap.mib. These are located in the eDeveloper Support directory. The MIB files are compiled according to the NMS version installed. You should copy the MIB files to the NMS server.
Overview of SNMP Use in Magic
You can set various values for the SNMP parameters, defined in the Mgreq.ini and Mgrb.ini files, to specify when the Magic Requester and Magic Requester Broker will send trap messages.
The SNMPNotify function is utilized to issue SNMP messages with the available parameters of message, severity.
When an alarm or error occurs outside of the application development process, SNMP trap messages are sent to the Network Management Station (NMS).
Examples of the types of trap messages sent are:
Anyway, this is an overview of SNMP and eDeveloper. If you are not familiar with SNMP applications, such as IBM Tivoli, then some of this discussion may seem like a foreign language discussion. For more information on SNMP, try the official Internet Engineering Task Force website for official information contained in the Request for Comments (RFC) documents. But for those familiar with SNMP for application monitoring, you can see from this overview that eDeveloper "plays well" with SNMP application monitors and other SNMP oriented software.
Monday, November 06, 2006
SNMP and eDeveloper: Part 1 – Theory and Use
eDeveloper supports Simple Network Management Protocol (SNMP) and works with Microsoft Windows SNMP Agent, the Net-SNMP Agent in UNIX environments, and the Native SNMP Agent in the i5OS (OS/400) environment for IBM System i (iSeries).
SNMP is a standard in the application layer of the Internet protocol suite for management of various nodes on an IP network. SNMP enables network administrators to manage network performance, find and solve network problems, and plan for network growth. For developers, SNMP is the standard that you can use to communicate with application monitoring and other monitoring tools.
The SNMP architectural model involves a set of network management stations and network elements. The purpose of the network management stations is to host management applications that control and monitor network elements. The network elements are devices that serve as gateways, hosts, terminal servers, etc. These various network elements have management agents that execute management functions requested by the network management stations. SNMP, as a protocol, includes the message format used to communicate between the stations and the elements.
In general, application monitoring can be applied for any of these five broad requirements:
Fault
The most obvious use of application monitoring is to detect faults which can be major errors related to one or more elements within the architecture. eDeveloper can be configured to send only specific error codes to the monitor, or the entire range of errors. Normally, you would want to report only significant error conditions that affect the operational integrity of the application or quality of the users' application experience.
Performance
External monitors may want to track application performance. Performance monitoring is useful in detecting sub-optimal software performance, as measured by average wait time, number of pending requests, number of currently processing requests, and so on. Performance problems usually correlate to increased user requests. When the load outstrips the ability of the application and systems to perform the required function within expected response times, a degraded quality of user experience occurs. Application monitoring can provide us with useful metrics for performance optimization related to both applications and the network itself.
Security
You may want to employ SNMP for certain types of security monitoring such as authentication failures.
Configuration
By monitoring certain configuration settings, you can ensure that key configuration variables affecting application performance and stability stay within specified limits. For example, if the Maximum Connection property is set to 10 for a specified DBMS and the SNMP Database Connections Utilization Threshold is set to 50, eDeveloper sends a trap message to the Network Management Station (NMS) when 5 connections (50% of 10) to the DBMS have been opened.
Accounting
Another application for application monitoring is accounting, for administration of things like usage fees and maintenance fees. SNMP is used when a third party application tracking these fees utilizes SNMP to monitor the activity to be accounted for. Since an eDeveloper can easily track these elements within the application itself or through another eDeveloper application, SNMP is only likely to be used in rare instances where an enterprise wide IT policy has introduced SNMP as an accounting standard, especially in environments where there is a mix of eDeveloper and non-eDeveloper applications being accounted for.
Application monitoring via SNMP can be implemented using applications such as IBM Tivoli. For example, IBM Tivoli Business Application Management (BAM) products help ensure the availability and performance of your business-critical applications, including portal and Service Oriented Architecture (SOA)-based technologies. In Part Two, we'll look at some of the how-to required to support SNMP monitoring of an eDeveloper application.
SNMP is a standard in the application layer of the Internet protocol suite for management of various nodes on an IP network. SNMP enables network administrators to manage network performance, find and solve network problems, and plan for network growth. For developers, SNMP is the standard that you can use to communicate with application monitoring and other monitoring tools.
The SNMP architectural model involves a set of network management stations and network elements. The purpose of the network management stations is to host management applications that control and monitor network elements. The network elements are devices that serve as gateways, hosts, terminal servers, etc. These various network elements have management agents that execute management functions requested by the network management stations. SNMP, as a protocol, includes the message format used to communicate between the stations and the elements.
In general, application monitoring can be applied for any of these five broad requirements:
Fault
The most obvious use of application monitoring is to detect faults which can be major errors related to one or more elements within the architecture. eDeveloper can be configured to send only specific error codes to the monitor, or the entire range of errors. Normally, you would want to report only significant error conditions that affect the operational integrity of the application or quality of the users' application experience.
Performance
External monitors may want to track application performance. Performance monitoring is useful in detecting sub-optimal software performance, as measured by average wait time, number of pending requests, number of currently processing requests, and so on. Performance problems usually correlate to increased user requests. When the load outstrips the ability of the application and systems to perform the required function within expected response times, a degraded quality of user experience occurs. Application monitoring can provide us with useful metrics for performance optimization related to both applications and the network itself.
Security
You may want to employ SNMP for certain types of security monitoring such as authentication failures.
Configuration
By monitoring certain configuration settings, you can ensure that key configuration variables affecting application performance and stability stay within specified limits. For example, if the Maximum Connection property is set to 10 for a specified DBMS and the SNMP Database Connections Utilization Threshold is set to 50, eDeveloper sends a trap message to the Network Management Station (NMS) when 5 connections (50% of 10) to the DBMS have been opened.
Accounting
Another application for application monitoring is accounting, for administration of things like usage fees and maintenance fees. SNMP is used when a third party application tracking these fees utilizes SNMP to monitor the activity to be accounted for. Since an eDeveloper can easily track these elements within the application itself or through another eDeveloper application, SNMP is only likely to be used in rare instances where an enterprise wide IT policy has introduced SNMP as an accounting standard, especially in environments where there is a mix of eDeveloper and non-eDeveloper applications being accounted for.
Application monitoring via SNMP can be implemented using applications such as IBM Tivoli. For example, IBM Tivoli Business Application Management (BAM) products help ensure the availability and performance of your business-critical applications, including portal and Service Oriented Architecture (SOA)-based technologies. In Part Two, we'll look at some of the how-to required to support SNMP monitoring of an eDeveloper application.
Friday, November 03, 2006
Quote of the Day -- Mark Bailey
As seen on the Magic List at Yahoo! Groups.
"I am currently converting ALL of my apps to eDeveloper V10.
Everything I have converted so far works and the extra effort I am putting in is just to take advantage of the new features.
The more I use it, the more I love it. Never ceases to amaze me how many programs I have with no logic and it takes a bit of getting used to, opening a program and not seeing the Task or Record levels sitting there empty.
And, man o man. The Subforms and User Functions are Brilliant!!!!"
Mark Bailey, Australia
Thanks, Mark! Glad to hear it. I'll have to buy you a Foster's at the next MIUG in Vegas. [emphasis added].
"I am currently converting ALL of my apps to eDeveloper V10.
Everything I have converted so far works and the extra effort I am putting in is just to take advantage of the new features.
The more I use it, the more I love it. Never ceases to amaze me how many programs I have with no logic and it takes a bit of getting used to, opening a program and not seeing the Task or Record levels sitting there empty.
And, man o man. The Subforms and User Functions are Brilliant!!!!"
Mark Bailey, Australia
Thanks, Mark! Glad to hear it. I'll have to buy you a Foster's at the next MIUG in Vegas. [emphasis added].
Thursday, November 02, 2006
What's in the Kitchen Sink, Anyway?
With eDeveloper V10, the feature list goes on an on. 51 reasons clearly are not enough as this review misses major enhancements like full Unicode support, superior XML handling, the new report writer and much more. But before we look at the bonuses and extras not included in Magic's list of reasons, let's look at the general enhancements they do mention in the list of 51.
In the list of 51 reasons to upgrade to eDeveloper V10, reasons 47 through 51 are dedicated to an assortment of improvements, this where Magic's R&D department has "thrown in the kitchen sink" and now I get to describe it. No snoring! There actually is some good stuff in here!
47. Preload View – Have every data-view fully loaded upon task execution for improved scrolling and for retrieval full view related information.
I think this advantage could have been expressed more clearly. Have you ever loaded a really large file and noticed that your scrollbar slider adjusted its size to the number of records. Well that's what we're talking about here. Now eDeveloper programmers don't have to come up with tricks and schemes to size the thumb on the scrollbar slider, it's built-in.
The scrollbar thumb reflects the size of the table content according to the number of records that are fetched while the task is running. When opening a task, the table reads the first set of records and the thumb size is based on that first set. Then, as an end-user scrolls through the records, the thumb is progressively updated.
48. Dynamic Menus – Construct modular menu structures based on menu subsets that can be automatically added or removed from the pulldown menu.
eDeveloper V10's new menu-related functions let you dynamically add and remove menus to the menu structure. The functions allowed are MnuAdd and MnuRemove which enable the programmer to dynamically add or remove a menu structure to the current runtime pulldown menu structure. There is also a MnuReset function that restores the default pulldown menu structure. This gives you some very sophisticated contextual control over the user experience that can streamline and enhance the user experience.
49. Windows Menu – Easily set the application menu system to cascade all selected open windows for easier end-user window navigation.
To quote on of my favorite lines from the movie Joe Versus the Volcano, "I have no response to that."
50. DateTime Support – Simplify the retrieval and storage of DateTime data types by letting the Magic Rules Engine automatically map them into simplified and separated Date and Time units.
While many of you may have developed workarounds for this in the past, I am sure it will be nice to have automated conversion between DateTime and Date and Time.
51. Standard Keyboard Mapping – Easily adopt a new Keyboard mapping scheme that corresponds to the accepted keyboard mapping standards.
Keyboard shortcut standards seem to change all the time. I've also found that certain user communities have differing expectations. eDeveloper users expect F5 to "zoom" of course, but what if your end users have a completely different map in their head because of some other application pervasive throughout their organization? Wouldn't it be better to change the keyboard mapping used in your eDeveloper application, rather than try to force all your users to learn a new set of keystrokes? Probably, so eDeveloper V10 gives you that option. You can map eDeveloper's studio keyboard map as well as the map used in your application at runtime.
The Keyboard Mapping settings you edit are kept in a special file. The file eDeveloper uses is named in the Keyboard Mapping File setting in the Options/Settings/Environment dialog box. By default this file is ACT_STD.ENG. You can create and use different mapping files. On conclusion of an editing session of the Keyboard Mapping repository, eDeveloper prompts you to save the changes with the File Save dialog box. You can save these changes to a file different from the one currently used by eDeveloper, by specifying a different name in the Save As... property.
This concludes our analysis of the original list of 51 "numerous reasons to migrate to eDeveloper V10." But don't worry, here in blogland, we've come up with some important reasons of our own. So stay tuned.
In the list of 51 reasons to upgrade to eDeveloper V10, reasons 47 through 51 are dedicated to an assortment of improvements, this where Magic's R&D department has "thrown in the kitchen sink" and now I get to describe it. No snoring! There actually is some good stuff in here!
47. Preload View – Have every data-view fully loaded upon task execution for improved scrolling and for retrieval full view related information.
I think this advantage could have been expressed more clearly. Have you ever loaded a really large file and noticed that your scrollbar slider adjusted its size to the number of records. Well that's what we're talking about here. Now eDeveloper programmers don't have to come up with tricks and schemes to size the thumb on the scrollbar slider, it's built-in.
The scrollbar thumb reflects the size of the table content according to the number of records that are fetched while the task is running. When opening a task, the table reads the first set of records and the thumb size is based on that first set. Then, as an end-user scrolls through the records, the thumb is progressively updated.
48. Dynamic Menus – Construct modular menu structures based on menu subsets that can be automatically added or removed from the pulldown menu.
eDeveloper V10's new menu-related functions let you dynamically add and remove menus to the menu structure. The functions allowed are MnuAdd and MnuRemove which enable the programmer to dynamically add or remove a menu structure to the current runtime pulldown menu structure. There is also a MnuReset function that restores the default pulldown menu structure. This gives you some very sophisticated contextual control over the user experience that can streamline and enhance the user experience.
49. Windows Menu – Easily set the application menu system to cascade all selected open windows for easier end-user window navigation.
To quote on of my favorite lines from the movie Joe Versus the Volcano, "I have no response to that."
50. DateTime Support – Simplify the retrieval and storage of DateTime data types by letting the Magic Rules Engine automatically map them into simplified and separated Date and Time units.
While many of you may have developed workarounds for this in the past, I am sure it will be nice to have automated conversion between DateTime and Date and Time.
51. Standard Keyboard Mapping – Easily adopt a new Keyboard mapping scheme that corresponds to the accepted keyboard mapping standards.
Keyboard shortcut standards seem to change all the time. I've also found that certain user communities have differing expectations. eDeveloper users expect F5 to "zoom" of course, but what if your end users have a completely different map in their head because of some other application pervasive throughout their organization? Wouldn't it be better to change the keyboard mapping used in your eDeveloper application, rather than try to force all your users to learn a new set of keystrokes? Probably, so eDeveloper V10 gives you that option. You can map eDeveloper's studio keyboard map as well as the map used in your application at runtime.
The Keyboard Mapping settings you edit are kept in a special file. The file eDeveloper uses is named in the Keyboard Mapping File setting in the Options/Settings/Environment dialog box. By default this file is ACT_STD.ENG. You can create and use different mapping files. On conclusion of an editing session of the Keyboard Mapping repository, eDeveloper prompts you to save the changes with the File Save dialog box. You can save these changes to a file different from the one currently used by eDeveloper, by specifying a different name in the Save As... property.
This concludes our analysis of the original list of 51 "numerous reasons to migrate to eDeveloper V10." But don't worry, here in blogland, we've come up with some important reasons of our own. So stay tuned.
Wednesday, November 01, 2006
Parallel Parking and Other eDeveloper V10 Tricks
The eDeveloper enterprise server supports parallel execution of tasks or multithreading. Whether your tasks are truly executed in parallel or are conducted in pseudo-parallel mode through a technique called time slicing is dependent on your hardware and operating system. With traditional programming tools, the programmer must carefully design the program in such a way that all the threads can run at the same time without interfering with each other. With eDeveloper, multiple contexts are maintained automatically and controlling contexts is simplified tremendously compared to unnecessarily complex 4GL and 3GL development systems.
And the good news, no the great news, is that multiple document interface (MDI) and single document interface support is now built-in to eDeveloper, further simplifying development of applications that meet the needs and demands of your users.
In the list of 51 reasons to upgrade to eDeveloper V10, reasons 42 through 46 are dedicated to parallel execution, i.e., multithreading. Let's take a closer look at each claim to better understand what's behind it.
42. Concurrent Task Execution – Provide a greater application productivity level by enabling the end-user to run several processes - online and batch - simultaneously.
In eDeveloper v9.x, multithreading was available for background processing only. Now with eDeveloper V10, background enterprise servers and Online programs are multi-threaded. This gives you the ability to have parallel task execution in your projects for both batch and online tasks.
Each thread accesses a different Runtime context, and does not interact with other threads, in other words, it is stateless.
To work with multiple threads in Online programs, eDeveloper V10 provides you with powerful new Multiple Document Interface (MDI) and Single Document Interface (SDI) functionality.
43. Single Instance – Easily control concurrently running tasks to keep a single instance for proper implementation of console screens, palettes, and property sheets.
When you are using parallel tasks, and you call a program again, a new instance of the program opens. To better illustrate what we mean, consider what happens with a well-known application like Internet Explorer. The first time you open Internet Explorer, one instance of it opens to your default home page. When that instance is open and you open Internet Explorer again, a second instance opens to the default home page regardless of the context, i.e., the current URL of the already open browser window. However, sometimes you want the same context to open, such as when you use the "New Window" option in Internet Explorer and you get a second window with the same context as the previous window. A third option is that you do not want multiple windows and contexts. You want the new instance with its new URL to open in the already open window. Internet Explorer allows the user or the developer to control this kind of functionality.
eDeveloper V10 now supports both multiple document interfaces and single document interfaces and gives you as the developer, control over the way contexts are handled. In those situations where you want the second call to return to the original instance, this is what eDeveloper's Single Instance task property does. When you select this property, when a program is called for a second time, the focus will be set on the already running instance. However, there will be no initialization steps (such as preparing the data view).
44. Event Posting – Enable full interaction between all concurrent processes using the inter-context event posting mechanism.
Most of the time, you will probably want instances to execute independently, but there are some events that may require you to enable events to be sent between contexts. Using eDeveloper V10's event posting functionality is accomplished via the Destination Context Name property of the Raise Event operation. The mechanism allows for synchronous and asynchronous events. If a synchronous event was raised, the context waits until the receiving handler ends. I like the fact that eDeveloper V10 gives the developer all of these options and doesn't restrict the developer to stateless contexts without interaction.
45. Single & Multiple Document Interface – You now have the freedom to choose the layout by which your parallel tasks will be presented. You can have a parallel task be displayed as yet another MDI child window or an independent SDI window.
This is another new eDeveloper V10 feature that standing completely on its own will justify the upgrade in the minds of many developers. eDeveloper lets you define a Multiple Document Interface (MDI) as well as a Single Document Interface (SDI).
In the most basic of terms: the MDI and SDI functionality allows an application to open and concurrently run several tasks. That is, it enables a program to be opened concurrently without the need to open a new instance of eDeveloper.
The eDeveloper engine can maintain multiple concurrent instances, executing programs within the same application and within the same eDeveloper instance.
In eDeveloper, concurrent execution is implemented using contexts. When a program is run concurrently and a new context is opened, the new context will have its own Main Program. This Main Program and context are independent of the other contexts running under this process. Read up on the MDI and start using it, your users will applaud.
46. Window Focus Management – Using a simple set of functions and events eDeveloper gives you a full control over the focus management of all your windows. Easily handle lost-focus events and easily instruct a window to get focus.
The default behavior for contect management is pretty much as you would expect: When focusing on a window in a different context, eDeveloper will not lose track of the control in the current context. In this fashion, when focus is passed back to this original window, it will pass back to the same control. Similarly, if there is a window that is not in focus, and a dialog box appears, such as a Verify operation or the window's own form with a Window Type property of Modal, the focus will pass to the dialog box. If a different context opens a window, the focus will pass to that window. Using the expression editor, you can utlilize the SetWindowFocus function to determine the particular window in the Window list that will be in focus. During runtime, if the window does not exist (the name does not exist or the name is blank or Null), focus will remain on the current window and the function will return False.
So all in all, parallel execution is another home run for eDeveloper V10, if you will forgive the baseball metaphor. The multi-threaded architecture of eDeveloper can now be enjoyed in both online and batch mode. Just in time, I think, as duo core and quad core processors are becoming commonplace on client desktops. You'd better get ready now as the world of parallel processing has entered the mind of the everyday user and they will demand the functionality that eDeveloper V10 delivers.
And the good news, no the great news, is that multiple document interface (MDI) and single document interface support is now built-in to eDeveloper, further simplifying development of applications that meet the needs and demands of your users.
In the list of 51 reasons to upgrade to eDeveloper V10, reasons 42 through 46 are dedicated to parallel execution, i.e., multithreading. Let's take a closer look at each claim to better understand what's behind it.
42. Concurrent Task Execution – Provide a greater application productivity level by enabling the end-user to run several processes - online and batch - simultaneously.
In eDeveloper v9.x, multithreading was available for background processing only. Now with eDeveloper V10, background enterprise servers and Online programs are multi-threaded. This gives you the ability to have parallel task execution in your projects for both batch and online tasks.
Each thread accesses a different Runtime context, and does not interact with other threads, in other words, it is stateless.
To work with multiple threads in Online programs, eDeveloper V10 provides you with powerful new Multiple Document Interface (MDI) and Single Document Interface (SDI) functionality.
43. Single Instance – Easily control concurrently running tasks to keep a single instance for proper implementation of console screens, palettes, and property sheets.
When you are using parallel tasks, and you call a program again, a new instance of the program opens. To better illustrate what we mean, consider what happens with a well-known application like Internet Explorer. The first time you open Internet Explorer, one instance of it opens to your default home page. When that instance is open and you open Internet Explorer again, a second instance opens to the default home page regardless of the context, i.e., the current URL of the already open browser window. However, sometimes you want the same context to open, such as when you use the "New Window" option in Internet Explorer and you get a second window with the same context as the previous window. A third option is that you do not want multiple windows and contexts. You want the new instance with its new URL to open in the already open window. Internet Explorer allows the user or the developer to control this kind of functionality.
eDeveloper V10 now supports both multiple document interfaces and single document interfaces and gives you as the developer, control over the way contexts are handled. In those situations where you want the second call to return to the original instance, this is what eDeveloper's Single Instance task property does. When you select this property, when a program is called for a second time, the focus will be set on the already running instance. However, there will be no initialization steps (such as preparing the data view).
44. Event Posting – Enable full interaction between all concurrent processes using the inter-context event posting mechanism.
Most of the time, you will probably want instances to execute independently, but there are some events that may require you to enable events to be sent between contexts. Using eDeveloper V10's event posting functionality is accomplished via the Destination Context Name property of the Raise Event operation. The mechanism allows for synchronous and asynchronous events. If a synchronous event was raised, the context waits until the receiving handler ends. I like the fact that eDeveloper V10 gives the developer all of these options and doesn't restrict the developer to stateless contexts without interaction.
45. Single & Multiple Document Interface – You now have the freedom to choose the layout by which your parallel tasks will be presented. You can have a parallel task be displayed as yet another MDI child window or an independent SDI window.
This is another new eDeveloper V10 feature that standing completely on its own will justify the upgrade in the minds of many developers. eDeveloper lets you define a Multiple Document Interface (MDI) as well as a Single Document Interface (SDI).
In the most basic of terms: the MDI and SDI functionality allows an application to open and concurrently run several tasks. That is, it enables a program to be opened concurrently without the need to open a new instance of eDeveloper.
The eDeveloper engine can maintain multiple concurrent instances, executing programs within the same application and within the same eDeveloper instance.
In eDeveloper, concurrent execution is implemented using contexts. When a program is run concurrently and a new context is opened, the new context will have its own Main Program. This Main Program and context are independent of the other contexts running under this process. Read up on the MDI and start using it, your users will applaud.
46. Window Focus Management – Using a simple set of functions and events eDeveloper gives you a full control over the focus management of all your windows. Easily handle lost-focus events and easily instruct a window to get focus.
The default behavior for contect management is pretty much as you would expect: When focusing on a window in a different context, eDeveloper will not lose track of the control in the current context. In this fashion, when focus is passed back to this original window, it will pass back to the same control. Similarly, if there is a window that is not in focus, and a dialog box appears, such as a Verify operation or the window's own form with a Window Type property of Modal, the focus will pass to the dialog box. If a different context opens a window, the focus will pass to that window. Using the expression editor, you can utlilize the SetWindowFocus function to determine the particular window in the Window list that will be in focus. During runtime, if the window does not exist (the name does not exist or the name is blank or Null), focus will remain on the current window and the function will return False.
So all in all, parallel execution is another home run for eDeveloper V10, if you will forgive the baseball metaphor. The multi-threaded architecture of eDeveloper can now be enjoyed in both online and batch mode. Just in time, I think, as duo core and quad core processors are becoming commonplace on client desktops. You'd better get ready now as the world of parallel processing has entered the mind of the everyday user and they will demand the functionality that eDeveloper V10 delivers.
Tuesday, October 31, 2006
Fewer Bugs and Better Bug Spray
Terrence Parr, a University of San Francisco Professor of Computer Science, suggests that there are six essential elements in the debugging process:
Reproduce the error. By finding a way to reproduce an error, you can often see the cause of the error. Parr says, "A bug that appears randomly is essentially unsolvable unless you have a leap of insight."
Reduce problems to their essence. Once you have discovered how to reproduce a problem, you should attempt to isolate an error to its smallest constituents. Parr suggest slicing data inputs, for example, to see which part of a file causes the problem.
Use your powers of deduction to find causality. This involves forming a hypothesis that can be tested. Follow the path of the data and watch for factors that can contribute to an error.
Test your hypothesis. Change various elements in the environment, the data and the logic to test your hypothesis.
Draw on experience. If you are an experienced developer, you will look for problems similar to those you have seen before in like situations. If you are a new developer, then you may want to consult another developer (Magic eDeveloper discussions are available on Yahoo! groups at magicu-l, for example.
Never give up. By taking a systematic approach, you will first test the hypotheses that seem most likely based on logic and past experience. Be patient, communicate with others and the solutions will become apparent.
Never give up. Parr sees tenacity as the final essential ingredient.Fortunately for users of eDeveloper V10, a new debugger has been introduced that makes extermination of bugs much easier than before.
Let's continue our review of Magic Software's 51 reasons to upgrade to eDeveloper V10. Reasons 36 through 41 all deal with enhancements to the debugger:
36. Visual Debugging – Follow the exact logic definition within the studio as you progress step-by-step in debug mode.
This feature can help you pinpoint problems that you are having in an application by stepping through an application with pauses at pre-defined breakpoints.
When you are in Debug mode (you selected Debug Mode from the Debug menu), you can run a program in Runtime mode and the Debugger will "park" on the Studio read-only screen at the exact location of where you are in the program (when a breakpoint is reached).
37. Manageable Break Points – Have full control on every break point defined in the application using the fully functional break points palette.
Obviously, breakpoints are a helpful tool for debugging. As Parr suggests in his point regarding the use of deduction, you need to follow the path of your data through an application in order to deduce any flaws in your logic. Breakpoints allow you to pause the logic at any point and determine exactly where things stand. Breakpoints let you halt execution of the program at a specific location in the Studio screen, so the debugger parallels the design of your program, which also gives you a clearer ability to see where problems may be introducuing themselves.
The how-to of breakpoints is quite straightforward, when you select Breakpoints from the View menu, the Breakpoint repository appears. You should remember that when you add a breakpoint to the Logic Editor, the default Condition is Always.
38. Conditional Break Points – Reduce your debugging efforts by conditioning your set breakpoints for accurate and focus debugging.
Within the Debugger, you can define a conditional breakpoint if the Enable check box is selected. The condition will be evaluated each time the breakpoint is reached. If the condition evaluates to False, the breakpoint will be ignored.
The valid options for breakpoint conditions are Always, Count and Condition. With count, the breakpoint is only activated once the specified count has been reached. And of course, with a condition, the breakpoint will only be executed if the condition is True.
Condition: Execution will break only when the condition evaluates to True. This option is only enabled if the task in which the condition is defined is in focus. You can use variables from the current task tree.
39. Watch points – Easily collect all variables that require your attention in the debugging process for efficient monitoring over the progress of your logic.
The watch points are very handy and make it easy to focus in on the variables that your experience suggests are most important. The Watch Variable list displays the variables currently being watched. This allows you to see how the value of the watched variable changes. You control which variables are displayed on the Watch variable list from the Variable list itself and the Variable declaration(s).
40. Modifiable Variables – Manipulate the execution of a debugged execution by directly modifying the value of any variable.
The context menu gives you control over modification of variables in the debugging process. This is useful in pursuing various "what-if" scenarios as you test various hypotheses. The context menu allows you to add and delete variables from the watch list, go to the source for the variable, edit the current value of the data in the variable, set the variable value to NULL, and expand or collapse the index size of vector variables with a cell index >0.
41. Call Stack View – Get clear information pertaining the exact stack of calls at any given time.
As you might expect, the Runtime Call Stack repository displays the state of the programs that are in the current runtime task tree and the handler (aka logic unit) that called the new program. You can get to this repository by selecting Call Stack from the View menu. Naturally, the tasks are displayed in the order in which they were executed. In other words, the Main Program of the host application will be the first task in the list and the current task will be the last one listed.
The information in the Runtime Call Stack repository is displayed in five columns.
The indicator column simply shows the current line. The module column will display the component name, if any. The task column shows the task name and the handler column show the Handler (logic unit) in that task. Finally, the line column shows the line number of the current operation.
Keep in mind that you can also view the flow of the logic within your eDeveloper application from the Activity Monitor. A whole article could be dedicated to this. It is also important to note that while you can only debug one context at a time, you can switch between contexts while debugging. You can also now dynamically change what information gets entered into the log with the dynamic logging function. You can change the logging filter on the fly, and this does not require a change to the magic.ini file. Sweet.
All in all, the new eDeveloper debugger is a huge improvement and benefit to the developer that just makes your life easier. Here again, it is worth the price of admission.
In the past, eDeveloper was known as an IDE that generally produced programs with fewer bugs and less need for debugging. But the debugging procedures available were weak in the past. With eDeveloper V10, you now have both advantages: fewer bugs and a faster way to isolate them and test your hypotheses.
Reproduce the error. By finding a way to reproduce an error, you can often see the cause of the error. Parr says, "A bug that appears randomly is essentially unsolvable unless you have a leap of insight."
Reduce problems to their essence. Once you have discovered how to reproduce a problem, you should attempt to isolate an error to its smallest constituents. Parr suggest slicing data inputs, for example, to see which part of a file causes the problem.
Use your powers of deduction to find causality. This involves forming a hypothesis that can be tested. Follow the path of the data and watch for factors that can contribute to an error.
Test your hypothesis. Change various elements in the environment, the data and the logic to test your hypothesis.
Draw on experience. If you are an experienced developer, you will look for problems similar to those you have seen before in like situations. If you are a new developer, then you may want to consult another developer (Magic eDeveloper discussions are available on Yahoo! groups at magicu-l, for example.
Never give up. By taking a systematic approach, you will first test the hypotheses that seem most likely based on logic and past experience. Be patient, communicate with others and the solutions will become apparent.
Never give up. Parr sees tenacity as the final essential ingredient.Fortunately for users of eDeveloper V10, a new debugger has been introduced that makes extermination of bugs much easier than before.
Let's continue our review of Magic Software's 51 reasons to upgrade to eDeveloper V10. Reasons 36 through 41 all deal with enhancements to the debugger:
36. Visual Debugging – Follow the exact logic definition within the studio as you progress step-by-step in debug mode.
This feature can help you pinpoint problems that you are having in an application by stepping through an application with pauses at pre-defined breakpoints.
When you are in Debug mode (you selected Debug Mode from the Debug menu), you can run a program in Runtime mode and the Debugger will "park" on the Studio read-only screen at the exact location of where you are in the program (when a breakpoint is reached).
37. Manageable Break Points – Have full control on every break point defined in the application using the fully functional break points palette.
Obviously, breakpoints are a helpful tool for debugging. As Parr suggests in his point regarding the use of deduction, you need to follow the path of your data through an application in order to deduce any flaws in your logic. Breakpoints allow you to pause the logic at any point and determine exactly where things stand. Breakpoints let you halt execution of the program at a specific location in the Studio screen, so the debugger parallels the design of your program, which also gives you a clearer ability to see where problems may be introducuing themselves.
The how-to of breakpoints is quite straightforward, when you select Breakpoints from the View menu, the Breakpoint repository appears. You should remember that when you add a breakpoint to the Logic Editor, the default Condition is Always.
38. Conditional Break Points – Reduce your debugging efforts by conditioning your set breakpoints for accurate and focus debugging.
Within the Debugger, you can define a conditional breakpoint if the Enable check box is selected. The condition will be evaluated each time the breakpoint is reached. If the condition evaluates to False, the breakpoint will be ignored.
The valid options for breakpoint conditions are Always, Count and Condition. With count, the breakpoint is only activated once the specified count has been reached. And of course, with a condition, the breakpoint will only be executed if the condition is True.
Condition: Execution will break only when the condition evaluates to True. This option is only enabled if the task in which the condition is defined is in focus. You can use variables from the current task tree.
39. Watch points – Easily collect all variables that require your attention in the debugging process for efficient monitoring over the progress of your logic.
The watch points are very handy and make it easy to focus in on the variables that your experience suggests are most important. The Watch Variable list displays the variables currently being watched. This allows you to see how the value of the watched variable changes. You control which variables are displayed on the Watch variable list from the Variable list itself and the Variable declaration(s).
40. Modifiable Variables – Manipulate the execution of a debugged execution by directly modifying the value of any variable.
The context menu gives you control over modification of variables in the debugging process. This is useful in pursuing various "what-if" scenarios as you test various hypotheses. The context menu allows you to add and delete variables from the watch list, go to the source for the variable, edit the current value of the data in the variable, set the variable value to NULL, and expand or collapse the index size of vector variables with a cell index >0.
41. Call Stack View – Get clear information pertaining the exact stack of calls at any given time.
As you might expect, the Runtime Call Stack repository displays the state of the programs that are in the current runtime task tree and the handler (aka logic unit) that called the new program. You can get to this repository by selecting Call Stack from the View menu. Naturally, the tasks are displayed in the order in which they were executed. In other words, the Main Program of the host application will be the first task in the list and the current task will be the last one listed.
The information in the Runtime Call Stack repository is displayed in five columns.
The indicator column simply shows the current line. The module column will display the component name, if any. The task column shows the task name and the handler column show the Handler (logic unit) in that task. Finally, the line column shows the line number of the current operation.
Keep in mind that you can also view the flow of the logic within your eDeveloper application from the Activity Monitor. A whole article could be dedicated to this. It is also important to note that while you can only debug one context at a time, you can switch between contexts while debugging. You can also now dynamically change what information gets entered into the log with the dynamic logging function. You can change the logging filter on the fly, and this does not require a change to the magic.ini file. Sweet.
All in all, the new eDeveloper debugger is a huge improvement and benefit to the developer that just makes your life easier. Here again, it is worth the price of admission.
In the past, eDeveloper was known as an IDE that generally produced programs with fewer bugs and less need for debugging. But the debugging procedures available were weak in the past. With eDeveloper V10, you now have both advantages: fewer bugs and a faster way to isolate them and test your hypotheses.
Subscribe to:
Posts (Atom)