tag:blogger.com,1999:blog-49045194892002439282024-03-13T17:24:33.882+00:00IET Gen Development BlogThis is an occasional blog about IET's use of CA Gen for internal development as well as thoughts, tips and techniques on using CA Gen for application development. It is aimed at the CA Gen development professional, so please excuse the jargon and assumed level of knowledge about CA Gen. Reference will also be made to our products to put the development into context, so if you are not familiar with these, please visit the IET web site by clicking on the company logo.Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.comBlogger157125tag:blogger.com,1999:blog-4904519489200243928.post-63604040947425901472020-06-02T12:51:00.000+01:002020-06-02T12:51:02.619+01:00IET CommunityWith the launch of the new <a href="https://iet.uk/community" target="_blank">IET Community</a> site, any new posts will now be made there.Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-37429610531387647772020-03-30T15:15:00.000+01:002020-03-30T15:15:38.067+01:00View DescriptionsA recent idea posted on the CA Gen forum was to allow NOTE statements to be defined for views so that views could be better described, especially when their purpose is not easily documented in the view name. Whilst the CA Gen toolset allows you to enter a description for a view, <br />
<a name='more'></a>you have to double-click the view to open it's properties dialog and then open the secondary Description dialog to check if the description exists and view it.<br />
<br />
It would require a significant change to the CA Gen toolset and meta model to allow NOTE statements in the view section, but at IET we felt that the description was adequate for the purpose, but the issue was the lack of visibility of the description value if it had been entered.<br />
<br />
To address this requirement, we have implemented the following enhancements:<br />
<br />
1) In the next GuardIEn 8.7 service pack (8.7.4) you will be able to view the view descriptions from the GuardIEn PAD Editor, for example:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcBO9E0M-hVvMsT8XEMM_-iVsbVD2oalmS3R-iZtZLWRvNVpk7CjjGIVtBrALPUCRVQRfj67PL-g5sMBt_ArsgVfGb1ZZmy2CdifAewB3u1WTgZ47Eqcw3e-Sa9UHcTGXfvpJVFrfl7aYE/s1600/Annotation+2020-03-30+151021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="341" data-original-width="819" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcBO9E0M-hVvMsT8XEMM_-iVsbVD2oalmS3R-iZtZLWRvNVpk7CjjGIVtBrALPUCRVQRfj67PL-g5sMBt_ArsgVfGb1ZZmy2CdifAewB3u1WTgZ47Eqcw3e-Sa9UHcTGXfvpJVFrfl7aYE/s640/Annotation+2020-03-30+151021.png" width="640" /></a></div>
<br />
2) In Studio Developer the action diagram editor displays the views. For longer descriptions you can hover over the description to view the complete text.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp8cAH6HQlqDr37l2JYRW6F0XveE5G3uUTHhX1LqZDAcE2nkK-5yEcVM7ZSsZxyNAlhYZOUKrRrV8y4sAL8kHyTMaFG4CzXywDRYGPiRPKocPA8p4UouDGxO8PHUC6vRgYAlkXkIigAhda/s1600/Image2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="400" data-original-width="1073" height="236" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp8cAH6HQlqDr37l2JYRW6F0XveE5G3uUTHhX1LqZDAcE2nkK-5yEcVM7ZSsZxyNAlhYZOUKrRrV8y4sAL8kHyTMaFG4CzXywDRYGPiRPKocPA8p4UouDGxO8PHUC6vRgYAlkXkIigAhda/s640/Image2.png" width="640" /></a></div>
<br />
<br />
You can also edit the description more easily:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiamNsHhHkTSlSJRA-1p4iUSrTD2h_6Xcxa2o0I9Uvq7RTZhCaOHYLKRgDGQXrV-z1ggA4ciqWMJf76cL5rgmEvO5ZhK7juq1-dfqxe8Yew8O6tipujrBK0wE7Uk7hfL9JX_miL9WlrrQc3/s1600/Image3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="671" data-original-width="407" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiamNsHhHkTSlSJRA-1p4iUSrTD2h_6Xcxa2o0I9Uvq7RTZhCaOHYLKRgDGQXrV-z1ggA4ciqWMJf76cL5rgmEvO5ZhK7juq1-dfqxe8Yew8O6tipujrBK0wE7Uk7hfL9JX_miL9WlrrQc3/s640/Image3.png" width="388" /></a></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-22910884077782141562020-03-24T12:38:00.001+00:002020-03-24T12:38:31.550+00:00Multiple Row Template DesignsRow Templates is a feature in <a href="https://www.iet.uk/rapide/index.html" target="_blank">Rapide</a> that allows the data in a group view to be presented in a more sophisticated style compared to the standard row/column approach.<br />
<a name='more'></a><br />
<br />
Rapide Row Templates have been enhanced to allow the specification of multiple row template designs with dynamic selection of the design for each row based on an attribute value in the group view.<br />
<br />
<br />
<div class="MsoNormal">
Row template designs can also contain an additional level of
nesting. In the example below, row design 1 shows the retailer and row design 2
shows the products nested within the retailer. You can view this example on the Rapide demo application at <o:p></o:p><a href="https://support.iet.co.uk/demo" target="_blank">https://support.iet.co.uk/demo</a></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2QuOifD0AUF2rX0GD8BiTmgVoSszFpCZAe_WABsNIVPp5PpqKN_o4zhVPmgsVfJ787cBHsRLrxZjSY_5yCqSDlgWGv-JoviZvv-HlU-rvJXU6_qTtVQ1ctgk6qx6Gj03FZWo3AHZpXw8j/s1600/pic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="373" data-original-width="837" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2QuOifD0AUF2rX0GD8BiTmgVoSszFpCZAe_WABsNIVPp5PpqKN_o4zhVPmgsVfJ787cBHsRLrxZjSY_5yCqSDlgWGv-JoviZvv-HlU-rvJXU6_qTtVQ1ctgk6qx6Gj03FZWo3AHZpXw8j/s640/pic1.png" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-86320872888656709682020-01-16T12:38:00.000+00:002020-01-16T12:38:06.311+00:00Action Diagram BookmarksA customer recently requested a new feature for the <a href="http://www.iet.uk/StudioDeveloper/index.html" target="_blank">Studio Develope</a>r Action Diagram editor.<br />
<br />
They wanted the ability to add bookmarks into the action diagram so that they could quickly and easily move between different sections. For example, if you have to edit code in different places and move up and down between them, rather than trying to find the locations by scrolling up and down, it is much easier to place a couple of bookmarks and then jump between them.<br />
<br />
<br />
<a name='more'></a>You can now add bookmarks using either the menu or a shortcut key and jump to the next bookmark with a shortcut key (or menu).<br />
<br />
In the example below, three bookmarks have been added with their location shown in blue in the right hand locator. The third bookmark is the MOVE statement shown with the highlighting.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKh-ORbb5J_E9Mq1n9hL5Wb5Zwa6rnnBm567mKYHkyZMc4duh17mpwgHgxAbXL411Z_KUpcmMSdd2TSHMsmiIA129rN_rWxIncfVNrm0IdnGwlCBVODPWSaHObuqe096QwCW1j0NXsGdUx/s1600/Annotation+2020-01-16+123456.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="673" data-original-width="900" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKh-ORbb5J_E9Mq1n9hL5Wb5Zwa6rnnBm567mKYHkyZMc4duh17mpwgHgxAbXL411Z_KUpcmMSdd2TSHMsmiIA129rN_rWxIncfVNrm0IdnGwlCBVODPWSaHObuqe096QwCW1j0NXsGdUx/s640/Annotation+2020-01-16+123456.png" width="640" /></a></div>
<br />
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-39039385590939240962019-03-25T12:12:00.001+00:002019-03-25T12:12:53.155+00:00Phased Upgrades for GuardIEn and CA Gen<div>
When considering upgrades of GuardIEn and/or CA Gen to a new release, a common misconception is that the upgrade has to be implemented all at once with the upgrade of the CSE and GuardIEn software, regeneration of code and deployment of new versions of workstation software all happening as part of the upgrade and development frozen until complete.</div>
<div>
<br /></div>
<div>
For example, you might currently be using CA Gen 8.5 (or earlier) for the encyclopaedia and generated code and wish to upgrade to 8.6. However not all of the applications are able to regenerate and retest their code as part of the upgrade process at present and hence the choice is either to postpone the upgrade or install a new encyclopaedia server and database and selectively transfer projects across to the new encyclopaedia.</div>
<div>
<br /></div>
<div>
This can be further complicated when you wish to use one release of CA Gen (e.g. 8.6) for developing a new release of the application and also maintain the production code using an earlier release (e.g. 8.5). If you implement a new encyclopaedia for the new release, migrating changes between models becomes much more difficult when they are in separate encyclopaedias.</div>
<div>
<br /></div>
<div>
There is an alternative...</div>
<div>
<br /></div>
<div>
The flexibility offered by GuardIEn to generate and install the application code it is sometimes overlooked when considering options for upgrades, especially for upgrading the application code.</div>
<div>
<br /></div>
<div>
<a name='more'></a>GuardIEn can be configured to use multiple versions of the CA Gen generators from a single encyclopaedia. In the above example, you could upgrade the existing encyclopaedia server to CA Gen 8.6 and configure GuardIEn to generate the code using 8.6 or earlier versions of the generators. This would then allow you to selectively upgrade the application code for individual models at at time of your choice rather than as part of the Gen upgrade project.</div>
<div>
<br /></div>
<div>
Similarly you can upgrade the GuardIEn server software to the latest release (e.g. 8.7) but also have earlier releases available as well. This then allows you to phase the roll-out of the GuardIEn client software to the developer's workstations.</div>
<div>
<br /></div>
<div>
IET are able to assist in the planning and execution of both GuardIEn and CA Gen upgrades. If you would like to discuss how we might be able to help, please get in touch.</div>
<div>
<br /></div>
<div>
<br /></div>
Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-12909394138124663932019-03-22T01:30:00.000+00:002019-03-22T01:30:05.923+00:00Inline Code PreferencesA new feature introduced to the Studio Developer action diagram editor is the ability to define inline code preferences which are then used to preset the values when adding a new INLINE code statement.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilaXPKOUxmISFxg3pLhfPmUuERplBXg6ZKdSzn2si04dfh5DIhMtFLXYx_Wd_Eh_3x0s773GvbHlhyj2QVpfjjcjUmatQO91RiLlEIYo_-_CMQMpQl4-CcrO2rnI1s9O_C6NyOHyLaHYIA/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="537" data-original-width="788" height="436" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilaXPKOUxmISFxg3pLhfPmUuERplBXg6ZKdSzn2si04dfh5DIhMtFLXYx_Wd_Eh_3x0s773GvbHlhyj2QVpfjjcjUmatQO91RiLlEIYo_-_CMQMpQl4-CcrO2rnI1s9O_C6NyOHyLaHYIA/s640/Capture.PNG" width="640" /></a></div>
<br />
<a name='more'></a>You can specify one or more of the default language, OS, DBMS and TP Monitor preferences.<br />
<br />
When a new INLINE statement is added, the preferred values are set for the new statement. In the example below, the Language property has been defaulted to JAVA based on the preference.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTqB0J1-cYCDsmhyphenhypheno_R48H0SvtPMlWn0EUjLncYOb_W3Lqdoo3F5AMAiff-HxVvjFggb3wmkWPXfhXTjUm5OdKNMJl4bY7A2NDrwF2vtoqR-p-B7DLmCWTtkEuKYYBUn8GEmR1JQclneok/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="61" data-original-width="777" height="50" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTqB0J1-cYCDsmhyphenhypheno_R48H0SvtPMlWn0EUjLncYOb_W3Lqdoo3F5AMAiff-HxVvjFggb3wmkWPXfhXTjUm5OdKNMJl4bY7A2NDrwF2vtoqR-p-B7DLmCWTtkEuKYYBUn8GEmR1JQclneok/s640/Capture.PNG" width="640" /></a></div>
Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-35999474242851660272019-03-21T15:44:00.001+00:002019-03-21T15:44:43.221+00:00Objects Changed Since Upload<br />
<div class="MsoNormal">
A new feature in Studio Developer's Model Explorer allows you to easily list action blocks and procedure steps that have
changed since the last upload of the model to the encyclopaedia. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj13IK3pFyQFIYFbmgufWImOtqzuBg4DZGvJE5oUwG0BBMK0MAMa4IR0IWbOlwVWfPmnhECrR-3BHHHhI17JzDBupsG0V23nEl46lTPm2ftfSsbdGgF0Cudl3gOFV9oD1Dfz0LCiku0G4Rv/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="319" data-original-width="380" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj13IK3pFyQFIYFbmgufWImOtqzuBg4DZGvJE5oUwG0BBMK0MAMa4IR0IWbOlwVWfPmnhECrR-3BHHHhI17JzDBupsG0V23nEl46lTPm2ftfSsbdGgF0Cudl3gOFV9oD1Dfz0LCiku0G4Rv/s1600/Capture.PNG" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<a name='more'></a>Examples of how you might use this list includes simply seeing what objects you have changed, scoping objects that need to be re-generated or checked with VerifIEr prior to upload.<br />
<div class="MsoNormal">
<br /></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-42363114079467870012018-11-23T01:00:00.000+00:002018-11-23T01:00:13.326+00:00Rapide integration with Studio Developer<a href="http://www.iet.uk/rapide/index.html" target="_blank">Rapide</a> is IET's product for developing advanced, multi-platform user interfaces with CA Gen. To enable the design of user interfaces that support more advanced features than the standard Gen toolset, Rapide provides a toolset plug-in that is used to specify additional properties in the UI design, for example responsive layouts where the size & position of controls adjusts automatically to fit the device or window size.<br />
<br />
<a name='more'></a><br /><br />
The disadvantage of the plug-in feature of the Gen toolset is that the plug-ins need to be opened as a separate window to the main UI designer, so when we developed the new UI designer for Studio Developer, provision was made to include the additional control types and properties for Rapide.<br />
<br />
In the screenshot below, note the annotations on the controls to indicate how they are tracked, and also the ability to specify the Rapide properties for the selected listbox control.<br />
<br />
The control toolbar on the left allows the developer to design the standard Gen controls (push buttons, literals, fields, etc.) as well as the additional controls supported by Rapide like sliders, tabs, java controls, etc.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMCSb8PjeoH0M9pc6_DfKVponetiw5X46GJUpde3RsxSJe5na000B904miEd9CnG9p1NSRi7VXhSlZjQoc4Eo0ums5u4KVLZbghtlVTOvbAGLmi-avYLx9HkJEO13nZYkNzp5n8M6OJ15n/s1600/Image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1040" data-original-width="1447" height="458" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMCSb8PjeoH0M9pc6_DfKVponetiw5X46GJUpde3RsxSJe5na000B904miEd9CnG9p1NSRi7VXhSlZjQoc4Eo0ums5u4KVLZbghtlVTOvbAGLmi-avYLx9HkJEO13nZYkNzp5n8M6OJ15n/s640/Image1.png" width="640" /></a></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-53400511668364862862018-11-22T01:00:00.000+00:002018-11-22T01:00:03.207+00:00VerifIEr integration in Studio Developer<a href="http://www.iet.uk/verifier/index.html" target="_blank">VerifIEr</a> is IET's quality assurance and code checking tool. The best time to detect any errors is whilst you are developing the code rather than after the fact, so it makes sense to integrate the code checking with the development tool.<br />
<br />
<a name='more'></a><br />
<br />
Whilst VerifIEr allows you to run checks at any point in the development life-cycle, the toolset plug-in can be used to check code in the local toolset model / subset before uploading the changes to the encyclopaedia.<br />
<br />
With Studio Developer we developed an integrated VerifIEr capability which allows you to check the objects as they are developed. If the VerifIEr editor is open, then when you apply the changes to an object, it is automatically added to the scope of the VerifIEr checks to make it very quick and easy to then check for any errors or warnings.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBe1T1cLTt3-0QtKT2XMiAGYnGKfK-7HfwwU2ECraC9obxsMKhqjNG2I6MOKVpwU7ccr8ct9bfeO9mYJQgHpyzGBMY6w5pLGh4g7jq4NaoejmiNoXuRD9XX8gZsogpEVw883NHEDS4-Xaj/s1600/VerSD.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="929" data-original-width="720" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBe1T1cLTt3-0QtKT2XMiAGYnGKfK-7HfwwU2ECraC9obxsMKhqjNG2I6MOKVpwU7ccr8ct9bfeO9mYJQgHpyzGBMY6w5pLGh4g7jq4NaoejmiNoXuRD9XX8gZsogpEVw883NHEDS4-Xaj/s640/VerSD.png" width="496" /></a></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-8345500135659929372018-11-21T01:00:00.000+00:002018-11-21T01:00:04.926+00:00genIE Integration in Studio Developer<a href="http://www.iet.uk/Products/genIE/index.html" target="_blank">genIE</a> is IET's suite of developer productivity tools, comprising both a plug-in module for toolset based features and other utilities that operate on the encyclopaedia and which are accessed from Object List+ and the GuardIEn client.<br />
<br />
With Studio Developer, the genIE functions are now directly accessed from within the action diagram editor.<br />
<br />
<a name='more'></a><br />
This provides quick and easy access to the powerful utilities that operate on the action diagram, for example re-ordering views, deleting unused views and statement generation.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBEENrvQmSzFyoCu9HJnmKaaQ8dz04-ihh2AfaEkmhpKeDEU9nC2UNpLV2AmCbvLeYPVHylGXJLvle4k-ZECYvOIDYVGyKVSucPzpU2oBEeh5QwQcTgPqayCTtQNMTOlNjdB_j_WYRzxjq/s1600/Image3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="510" data-original-width="528" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBEENrvQmSzFyoCu9HJnmKaaQ8dz04-ihh2AfaEkmhpKeDEU9nC2UNpLV2AmCbvLeYPVHylGXJLvle4k-ZECYvOIDYVGyKVSucPzpU2oBEeh5QwQcTgPqayCTtQNMTOlNjdB_j_WYRzxjq/s1600/Image3.png" /></a></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-1161365821328838582018-11-20T01:00:00.000+00:002018-11-20T01:00:01.745+00:00Generating and Installing Operations LibrariesWhen considering how to implement the generation editors for Studio Developer, one of the decisions taken was to have separate editors for online, batch and window code like the legacy Gen toolset, but also to separate client and server generation into separate editors. This mean that you could have both the client and server editors open simultaneously and also specify different target properties for each, for example Windows/C for clients and MVS/COBOL for servers.<br />
<br />
However we also had to consider how to best handle operations libraries.<br />
<br />
<a name='more'></a>The Gen toolset has a separate window for these, but we did not feel that this was the best approach since it meant that you would either have to have one additional editor for all operations libraries which could then generate either client code or server code, or have two, one for client and one for server. But what about windowed load modules if these are also required?<br />
<br />
Instead of having a separate editor, we decided to include the generation of operations libraries within the scope of the existing generation editors, i.e. client, server, online, etc.<br />
<br />
This then lead to the problem of what operations libraries are generated? Should it display all of them for each target environment? What if some of the opslibs are for the client and others for the server? You would not want to generate the server opslibs when generating the client code and vice-versa.<br />
<br />
One approach would be to present all of the opslibs and allow the developer to select which ones are to be generated and installed. The issue here is that as explained in a <a href="http://ietgen.blogspot.com/2018/11/auto-including-objects-for-generation.html" target="_blank">previous post</a>, Studio Developer will automatically select changed action blocks for generation and installation, so if for example the client code generation editor was open and a server action block was changed, the opslib would be selected for client generation and installation.<br />
<br />
The solution that we came up with was to provide an option for defining a filter that specifies which opslibs are included for each editor. The generation options dialog allows you to specify an include filter and an exclude filter. For example you could specify an include filter of CL% for client generation which means that only opslibs that start CL are included. For server generation you could then specify the exclusion filter of CL% which means that all opslibs are included except those that start CL. This approach does rely on a structured naming convention for the operation library names.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYZLLahII1jm6EZmnWDZb3VUs-VVId2zAsvgkfM7h1ZD2oLBYvxKoMvoDNuE5WCXrCSk463cDge2Kg1p7UNso3fkSRPKKXC_B0yLRqRJBZ18nBYaNojnzGcWC6ubdpS05Pb3oWHVymG_95/s1600/Image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="557" data-original-width="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYZLLahII1jm6EZmnWDZb3VUs-VVId2zAsvgkfM7h1ZD2oLBYvxKoMvoDNuE5WCXrCSk463cDge2Kg1p7UNso3fkSRPKKXC_B0yLRqRJBZ18nBYaNojnzGcWC6ubdpS05Pb3oWHVymG_95/s1600/Image1.png" /></a></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-43297540720916523172018-11-19T01:00:00.000+00:002018-11-19T01:00:05.095+00:00Pixel Perfect PositioningHave you ever had trouble precisely positioning UI controls using the Gen toolset Window designer? Apart from the difficulty of doing so with the mouse (which is solved in Studio Developer by allowing you to move controls one pixel at a time with the keyboard or by typing in the co-ordinates), sometimes you cannot do so.<br />
<br />
<a name='more'></a><br /><br />
The reason is that for historical reasons the x and y co-ordinates for the window design are stored in the model using an OS/2 co-ordinate system since this was the first operating system that Gen GUI design worked on. For the Windows co-ordinate system used by the generators and for displaying the co-ordinates in the UI designer, the co-ordinates are converted but with the possible loss of 1 px since the OS/2 co-ordinate system is less precise than the Windows one.<br />
<br />
A preference in the Studio Developer UI designer is to use Pixel Perfect Positioning. When enabled, whilst the designed co-ordinates are stored in the same OS/2 system in the model for use by the generators and the old toolset with the possible loss of precision, a hidden additional property is stored to ensure that the actual pixel value is retained. Whilst the Gen generated GUI and web windows will still suffer from the loss of precision of up to 1 pixel, when generating a Rapide application the Rapide generator uses this additional property to ensure that the co-ordinates used are correct without any loss.Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-90644614280182797842018-11-16T01:00:00.000+00:002018-11-16T17:54:52.856+00:00Synchronise Data StructureA new feature in Studio Developer is the Synchronise Data Structure function. This shows any discrepancies between the data model and the
data structure.<br />
<br />
The tool checks the following objects to ensure that they have
been specialized for the selected DBMS.<br />
<a name='more'></a><br />
<div class="MsoNormal">
<o:p></o:p></div>
<h4>
Table</h4>
<h4>
<ul>
<li><span style="font-weight: normal;">Table has an identifier</span></li>
<li><span style="font-weight: normal;">Lists unimplemented attributes and relationships</span></li>
</ul>
</h4>
<h4>
Column</h4>
<h4>
<ul>
<li><span style="font-weight: normal;">Column format and length are consistent with the
attribute properties and model preferences</span></li>
</ul>
</h4>
<div class="MsoListParagraph" style="mso-list: l3 level1 lfo3; text-indent: -18.0pt;">
<o:p></o:p></div>
<h4>
FK Constraint</h4>
<h4>
<ul>
<li><span style="font-weight: normal;">Delete rule is consistent with relationship
properties</span></li>
<li><span style="font-weight: normal;">RI rules that should be Gen/DBMS enforced are
defined as such</span></li>
</ul>
</h4>
<div class="MsoListParagraphCxSpLast" style="mso-list: l2 level1 lfo2; text-indent: -18.0pt;">
<o:p></o:p></div>
<h4>
Index</h4>
<h4>
<ul>
<li><span style="font-weight: normal;">Primary Index columns are consistent with the
Entity Type Primary Identifier</span></li>
</ul>
</h4>
<div class="MsoListParagraph" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<o:p></o:p></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-57820024390469305922018-11-15T01:00:00.000+00:002018-11-15T01:00:07.020+00:00Auto-including objects for generationA feature of the code generation editors in Studio Developer is that whilst the editor is open it will detect
changes to action blocks and procedure steps and automatically flag them for
generation.<br />
<div>
<br /></div>
<div>
You can therefore open the required editors (for example client and
server) and then when you have completed your changes to the model, switch to the
editor and the objects will be pre-selected for generation.<br />
<a name='more'></a></div>
<div>
<br /></div>
<div>
Note that only
the changed action blocks and procedure steps are flagged and a full impact
analysis is not performed. For example if you change the import view of an
action block or change the length of an attribute, the impacted objects are not
selected for generation. For these situations, you can use the 'Generate Used By' feature where you select an action block and it will flag all callers for generation.<br />
<div class="MsoNormal">
<o:p></o:p></div>
</div>
<div>
<br /></div>
Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-64400607903137974142018-11-14T01:00:00.000+00:002018-11-14T01:00:10.412+00:00Action Diagram Keyboard Selection<br />
<div class="MsoNormal">
Unlike the legacy toolset, the new Action Diagram provides a
keyboard caret-style cursor which can be moved around the diagram character- by-character,
which gives the look-and-feel of being a text editor.<span style="mso-spacerun: yes;"> </span>While this is not actually the case
underneath, it does make navigation and editing more intuitive and flexible.<br />
<a name='more'></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The caret is a flashing vertical bar, similar to any
traditional text editor.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
In general, typing at the caret is only possible while there
are no selections made.<span style="mso-spacerun: yes;"> </span>Selections can
be one of a number of types:</div>
<div class="MsoNormal">
</div>
<ol>
<li>Entire lines</li>
<li>Entire statements/blocks/views</li>
<li>One or more ‘elements’ within a single
statement/clause</li>
<li>A block of contiguous characters within a single
element</li>
</ol>
<br />
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<o:p></o:p></div>
<div class="MsoNormal">
Highlighting one or more elements is perhaps the most
flexible facility, particularly within an expression, where you can replace
blocks of elements with new elements, thus making expression editing very
simple – remember in the legacy toolset where you would have to recode the
entire statement in order to make some simple structure change to an
expression? …no longer a restriction!<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-72357261063178598092018-11-13T01:00:00.000+00:002018-11-13T01:00:04.674+00:00Shortcuts for adding NOTE statementsIn the Studio Developer action diagram editor, there are some shortcut keys that make it quicker to add a NOTE statement.<br />
<a name='more'></a><br />
<br />
<div class="MsoNormal">
In addition to creating a NOTE statement by typing in NOTE,
you can also create a NOTE statement by typing in # or //.<o:p></o:p></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-71442386497441512002018-11-12T01:00:00.000+00:002018-11-12T01:00:08.666+00:00Action Diagram Syntax ChangesOne of the challenges in developing the new action diagram editor to support keyboard entry was the need to ensure that each part of a statement was unambiguous and easy and quick to enter. This necessitated a few minor changes to the action diagram syntax.<br />
<a name='more'></a><br />
<span style="text-indent: -18pt;"><br /></span>
<br />
<ul>
<li>View Names. The parts of a view name are
separated by a . rather than a space, for example IN.CUSTOMER.CODE not IN
CUSTOMER CODE.</li>
</ul>
<ul>
<li><span style="text-indent: -18pt;">Several operators are simplified to aid keyboard
entry for example ‘IS EQUAL TO’ is replaced by ‘=’ and ‘IS NOT EQUAL TO’ is
replaced by ‘!=’.</span></li>
</ul>
<ul>
<li><span style="text-indent: -18pt;">K</span>eywords that contain spaces in the
legacy toolset are joined with underscores.<span style="text-indent: -18pt;">
</span><span style="text-indent: -18pt;">For example, FOR EACH becomes FOR_EACH, READ EACH becomes READ_EACH and
ELSE IF becomes ELSE_IF. This is also true for some expression clauses, for
example IS_BETWEEN and IS_IN, IS_VISIBLE.</span></li>
</ul>
<ul>
<li><span style="text-indent: -18pt;">SET_PROPERTY. The legacy CA Gen toolset uses a
SET verb for two completely different types of statement: setting a view value
and setting an ole/com/object property. The Action Diagram Editor uses
SET_PROPERTY for the latter instead of SET, so the distinction is clear,
avoiding ambiguity.</span></li>
</ul>
<ul>
<li><span style="text-indent: -18pt;">READ_EACH statements always have a (for each
successful iteration) clause even if there are no exception clauses.</span></li>
</ul>
<ul>
<li><span style="text-indent: -18pt;">Numerous statements and clauses present detail
information directly in the diagram for convenient viewing and editing, whereas
the legacy toolset would provide some of these properties only via a separate
pop-up dialog.</span><span style="text-indent: -18pt;"> </span><span style="text-indent: -18pt;">For example, Event
properties </span><i style="text-indent: -18pt;">default</i><span style="text-indent: -18pt;">, </span><i style="text-indent: -18pt;">always move</i><span style="text-indent: -18pt;">, </span><i style="text-indent: -18pt;">never move</i><span style="text-indent: -18pt;"> is displayed in the Action Diagram itself.</span></li>
</ul>
<ul>
<li><span style="text-indent: -18pt;">Various expression parts have also been subtly
changed to aid auto-suggest, making each combination distinct and unique where
possible to avoid ambiguity in the language.</span><span style="text-indent: -18pt;">
</span><span style="text-indent: -18pt;">However, because of the automatic nature of the suggestion lists
presented, these should be intuitive and clear.</span></li>
</ul>
<br />
<br />
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><o:p></o:p></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-20328060091974555352018-11-09T01:00:00.000+00:002018-11-09T01:00:01.471+00:00How does Undo work in Studio Developer?One of the most useful new features in Studio Developer is the undo/redo capability that is provided with the new action diagram editor, UI Designer and Screen Designer.<br />
<div>
<br /></div>
<div>
We are all familiar with using Undo in all sorts of programs that we use on a daily basis. The lack of an undo capability in the Gen toolset comes as a surprise to those new to the tool and is often sorely missed, especially when you accidentally delete something in an action diagram or move controls in the UI designer.</div>
<div>
<br /></div>
<div>
Whilst 'undo' has probably been the most requested enhancement to the Gen toolset over the past 30 years, it was not easy to implement<br />
<a name='more'></a> in the old Gen toolset because of the way that Gen stores objects in the model. All of the diagrams in Gen work off a common model (set of objects, associations and properties), so if you change an object like an attribute, the effect is immediate on any other diagram that references the object. Gen also imposes very strict and rigid constraints on the model: you cannot reference a non-existent object and you cannot delete an object that is referenced.</div>
<div>
<br /></div>
<div>
As a result, the concept of being able to undo changes made in a single action diagram is not feasible with a single underlying data store. As an example, consider simultaneous updates to two action diagrams:</div>
<div>
<ol>
<li>Change #1 in Action Diagram A</li>
<li>Change #1 in Action Diagram B</li>
<li>Change #2 in Action Diagram A</li>
</ol>
<div>
If you wanted to undo Changes #1 and #2 in Action Diagram A, rolling back the transactions to the model back to point (1) would also require undoing the change to Action Diagram B, which would not be desirable.</div>
</div>
<div>
<br /></div>
<div>
Therefore, to support an undo capability within a single diagram, it follows that each diagram must maintain its own private copy of the model that is separate to the local model and provide a mechanism to save these changes to the local model on demand.</div>
<div>
<br /></div>
<div>
In designing Studio Developer, the architecture included support for maintaining the diagram's private model in a Document Object Model (DOM) with support for undo and redo and applying the changes to the local Gen model. Once the changes have been applied to the local model, previous changes to the diagram cannot be undone, so the undo capability is only back to the last apply point.</div>
<div>
<br /></div>
<div>
Another design feature of the DOM is less strict enforcement of model consistency to support the partial completion of statements, as described in a <a href="http://ietgen.blogspot.com/2018/10/studio-developer-cool-new-feature-3.html" target="_blank">previous post</a>. </div>
Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-38107792374716843322018-11-08T01:00:00.000+00:002018-11-08T01:00:01.372+00:00Modifying an entity type identifier with Studio Developer<br />
<br />
<div class="MsoNormal">
With Studio Developer, if you modify the identifier of an entity type, you can
synchronise the table’s identifying index and associated foreign keys without
needing<br />
<a name='more'></a> to re-transform the entity type, thus retaining any customisations made
to the table and its associated components.<o:p></o:p></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-4165493435413471012018-11-07T01:00:00.000+00:002018-11-07T01:00:04.628+00:00Custom Naming for Data Structure ObjectsSo far the postings on new features in Studio Developer have concentrated on the action diagrammer, but there also some useful enhancements in other parts of the development tools as well.<br />
<br />
You can specify rules for how Studio Developer allocates names to attribute DSD names<br />
<a name='more'></a>, tablespaces, link tables, indexes, RI constraints and foreign key columns using Model Preferences.<br />
<br />
In the Model Preferences Editor, you specify a naming rule using a combination of name parts separated by a ‘+’ operator.<br />
<br />
The name parts can be:<br />
<br />
<ul>
<li>Literals enclosed in “”, for example “FK” or “IX”</li>
<li>An ‘n’ or ‘m’ which indicates a generated number to ensure uniqueness, optionally followed by one character to be used for the first instance, for example ‘n_’ or ‘m1’. If n is used, the first unique number is 0, for example FK0xxxxx. If m is used, the first unique number is 1, for example FK1xxxxxx.</li>
<li>A property value or substring of a property value, for example PARENT_TABLE(1:3) is the first 3 characters of the parent table name.</li>
</ul>
<br />
The advantage of naming rules is that when you transform new or existing data model objects to data structure objects, the site standard naming rules are automatically applied.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-KPbxq7l22pGC9OgH9dvsmDi86nbTNFTiYVP7_cz4QwW_1mPuNS2sXuW6OEUeXxS5zK9VdaHCQWTP1B7yPpuovTRbb3lVHlx2UN4YnK9N1SGhj-9mGDnq4F6AvHqODpfqEd8G4kr0Q942/s1600/Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="428" data-original-width="868" height="314" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-KPbxq7l22pGC9OgH9dvsmDi86nbTNFTiYVP7_cz4QwW_1mPuNS2sXuW6OEUeXxS5zK9VdaHCQWTP1B7yPpuovTRbb3lVHlx2UN4YnK9N1SGhj-9mGDnq4F6AvHqODpfqEd8G4kr0Q942/s640/Capture.PNG" width="640" /></a></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-62802141885130735402018-11-06T01:00:00.000+00:002018-11-06T01:00:04.969+00:00Block Line Colours<br />
<div class="MsoNormal">
If you have a high number of nesting levels in your action diagram code and need to decide where to place an escape or next pointer, it can be difficult to choose the correct block of code for the escape / next pointer. </div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Studio Developer helps by highlighting the block lines for the currently selected statement<br />
<a name='more'></a> as described <a href="http://ietgen.blogspot.com/2018/10/studio-developer-cool-new-feature-2.html" target="_blank">in a previous post</a>.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
You can also enable colouring of block lines with an action
diagram preference. This makes it even easier to locate the line for a specific
statement when placing the end marker for an ESCAPE or NEXT pointer.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1QgKfHTCD4UAldnZiJf4TUUkAQ_KF56HEfoVh40Hs6g9iKY7J_hpVBO-xzNVd2MFFN1r5p7fq6agsYTLLv9rvrL4qw32sJ4TvvQzSQO57Yet60qgZFNy0u0IsDNo004_EDfpDCPdg6_Ux/s1600/pic3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="168" data-original-width="524" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1QgKfHTCD4UAldnZiJf4TUUkAQ_KF56HEfoVh40Hs6g9iKY7J_hpVBO-xzNVd2MFFN1r5p7fq6agsYTLLv9rvrL4qw32sJ4TvvQzSQO57Yet60qgZFNy0u0IsDNo004_EDfpDCPdg6_Ux/s1600/pic3.png" /></a></div>
<div class="MsoNormal">
<br /></div>
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-6852164462407258502018-11-05T01:30:00.000+00:002018-11-05T11:46:10.508+00:00Statement NumbersAn optional feature in the new Studio Developer action diagram editor is the ability to display statement numbers:<br />
<a name='more'></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGF8au3IHVLZPaY_SIHrqNWZyKGDCRbh39ta1AxpsA5VGNVw0yfL6iSWHF8_0LrrEy6hOCIm_sRT-PkhMaauXF9rcCMe9Y4u-ZQ3rVyuoR6j-qPrPt4j1cd_JeCJXum5NM7XKzzx_sKyZi/s1600/pic2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="80" data-original-width="365" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGF8au3IHVLZPaY_SIHrqNWZyKGDCRbh39ta1AxpsA5VGNVw0yfL6iSWHF8_0LrrEy6hOCIm_sRT-PkhMaauXF9rcCMe9Y4u-ZQ3rVyuoR6j-qPrPt4j1cd_JeCJXum5NM7XKzzx_sKyZi/s1600/pic2.png" /></a></div>
<br />
You can choose whether these are displayed or not via the Action Diagram Editor Preferences page.Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-60075880927011631862018-11-02T01:00:00.000+00:002018-11-05T11:45:59.735+00:00TODO markers<br />
<div class="MsoNormal">
In the new Studio Developer action diagram editor, if a NOTE statement contains the keyword “TODO” then the
locator bar will indicate their presence with blue marker.<br />
<a name='more'></a></div>
<div class="MsoNormal">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYzGkDUsVIM__hg3tnr1lsLxjmzseaFIgNnKNbGkT4-NA1lVIO9Vh5zfPBW8UQT9orUNk8Ea79rmrCaQot3IAtFlOBGI0L_TIQyYIG7WFRBEv1bZSOTS2i4AxdLrt5O4mWBK797a-wsxFu/s1600/pic1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="133" data-original-width="529" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYzGkDUsVIM__hg3tnr1lsLxjmzseaFIgNnKNbGkT4-NA1lVIO9Vh5zfPBW8UQT9orUNk8Ea79rmrCaQot3IAtFlOBGI0L_TIQyYIG7WFRBEv1bZSOTS2i4AxdLrt5O4mWBK797a-wsxFu/s640/pic1.png" width="640" /></a></div>
<div class="MsoNormal">
You can leave these TODO notes in the action diagram to remind you of work to be completed and when you open the action diagram, the indicator in the locator bar will remind you.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The previous post discussed the model-wide search tool, so you can also search the NOTE statements in all of the modle or subset's action diagrams for the keyword TODO.</div>
Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-22248364212649264182018-11-01T01:00:00.000+00:002018-11-05T11:45:49.414+00:00Model wide search and replaceHaving concluded the series of 10 cool new features in Studio Developer, I thought why stop there? There are a lot more great new features in the tool, so these posts will continue to showcase them in no particular order.<br />
<br />
Studio Developer contains a model-wide Search and Replace tool accessed from the Model
Explorer menu which allows you to<br />
<a name='more'></a> search the model for text strings in literals,
notes and descriptions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6wrek6pOnxQqZGWajGhaCtsYRuTW4vGMOJwzmEWOob8NKxZezxi9xMIc2k8xInf7HypL_AcRcg9rMuHxBA_Prupi3C0DSAR7EXQHMcicDgQQfH0wrMMbSHmRc467XRAlnboiHwCNZmAE4/s1600/pic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="251" data-original-width="952" height="168" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6wrek6pOnxQqZGWajGhaCtsYRuTW4vGMOJwzmEWOob8NKxZezxi9xMIc2k8xInf7HypL_AcRcg9rMuHxBA_Prupi3C0DSAR7EXQHMcicDgQQfH0wrMMbSHmRc467XRAlnboiHwCNZmAE4/s640/pic.png" width="640" /></a></div>
<br />
Having found the objects that contain the string, you can replace the string with another value, for example changing all occurrences of "ABC" with "DEF".<br />
<br />
You can also directly open the editor for an object from the results list.<br />
<br />
<div class="MsoNormal">
<o:p></o:p></div>
<br />
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0tag:blogger.com,1999:blog-4904519489200243928.post-65923491462820156912018-10-31T01:00:00.000+00:002018-11-05T11:45:34.085+00:00Studio Developer Cool New Feature #1 - UndoTo conclude our countdown of 10 cool new features of Studio Developer, at #1 it has to be the single most requested enhancement to CA Gen over the past 30 years - Undo (and Redo)!<br />
<br />
When editing action diagrams, UI designs or Block Mode screens, you can<br />
<a name='more'></a> undo changes back to the last save of the diagram, and then redo forward again to your last change if you decide you did want the changes.<br />
<br />
At IET we have been using Studio Developer for our own development work for the last two years and the ability to undo unwanted changes has been much appreciated and a big time saver.<br />
<br />
You can see Undo/Redo in action in the short tour of Studio Developer below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/U2v3xhiJ5ZM/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/U2v3xhiJ5ZM?feature=player_embedded" width="320"></iframe></div>
<br />
Please continue to visit this blog since we will adding more insights into Studio Developer and other IET products. You can subscribe to the blog to receive email updates when new posts are published.<br />
<br />Darius Panahyhttp://www.blogger.com/profile/14896501744199671721noreply@blogger.com0