AMIS publishes Extensions for the JHeadstart Application Generator

1

Today AMIS announces the immediate availability of the AMIS JHeadstart Application Generator Extensions. A free set of enhancements for JHeadstart 10g (9.0.5.x) that will allow you to generate much more functionality into your applications. Among the functional enhancements in this set are:

  • Generation of radiobuttons
  • JavaScript event hooks at item level (onFocus, onBlur, onChange, onClick, onDblClick)
  • Distinct prompts for Form, Find and Table-pages
  • Distinct displayType for Form, Find and Table-pages
  • Support for item-level bubble help (balloon text)
  • CSS Styles per page, region or item and distinct for Form, Find and Table-pages
  • Support for JSTL
  • Regions can be generated side by side and stacked
  • Support for Uppercase/lowercase/initcap
  • New display type textInputHyperlink that allows direct navigation to a website
  • Display multiple attributes in a List of Values
  • Return multiple display values from a List of Values
  • Support for Autoquery and Tablerange in List of Values
  • Display LOV base items as boilerplate instead of disabled text-input
  • Support for onSubmitFind, onSubmitTabe and onSubmitForm JavaScript events

Origin of AMIS JAG Extensions

In 2003, AMIS started the AMIS JHeadstart Cookbook. The Cookbook contains a collection of best practices, examples, guidelines etc. for improving and extended JHeadstart applications. All recipes describe a number of steps you have to take in making – typically small – changes in generated application components, usually the JSPs and struts-config.xml file.

As it turns out, most of these recipes are fairly commonly desired. They are also very structured: applying the changes described in the recipes is a task that can easily be automated. Of course when steps are automated they can be taken more quickly and far less error-prone. Manually changing generated sources turns out to be a source of many programming errors. Making modifications also requires certain programming skills (JSP, HTML, JavaScript, CSS, Struts). And of course, post-generation changes need to be made again when the page is re-generated.

With this in mind, it is a small step towards an attempt to automate the recipes. And the easiest, most logical way to do that is by extending the JHeadstart Application Generator and the JHeadstart property editors with some properties and enhanced generation functionality. So the JAG extensions are the automation of the AMIS JHeadstart Cookbook recipes. Instead of applying the recipes manually – which takes time, is error-prone and must be repeated after regeneration – you can now achieve the same results through generation.

Technical Implementation

The extensions published by AMIS have two components: a runtime and a design time component.

The runtime component consists of a number of jsp-files (in webcommon). Some or modified versions of the standard JHeadstart JSPs and some are new. These JSPs are included into JSPs generated by the JAG Extensions, There is also a small change in the jspStyles.css (two new styles). The Javascript library form.js is modified and a new images is shipped (hyperlink.gif). Furthermore, a JHeadstart application to be enhanced by the AMIS JAG Extensions must be JSTL enabled.

The design-time component of the JAG Extensions is included in the jar-files that you install in the JDEVlibext directory. It consists of a number of modified property-files (that drive the JHeadstart property editors) and a bunch of modified XSLT-files – that implement the JAG itself.

Note: no Java code has been added or modified, all changes to base JHeadstart code are made in text-files. All changes have been clearly marked.
Note: at the present, the AMIS JAG Extensions only work for JSP generation! No UIX enhancements have been implemented. Also note that the supported Controller is only Struts. Finally, the AMIS JAG Extensions are based on JHeadstart 9.0.5.1 – the current 10g Evaluation Copy on OTN.

Position of Oracle on upgrades

Of course AMIS discussed the JAG extensions with the Oracle JHeadstart team. It turns out that some of the functionality generated by the AMIS JAG Extensions is also on the list of the JHeadstart team, some of it is not (yet). However, the focus of the Oracle JHeadstart team is very clearly the ADF JHeadstart release. They will continue to support the non-ADF release(s) 9.0.5.x for JDeveloper 10g and 9.0.4.x for JDeveloper 9i, but only through patches. The current plan does not include functional enhancements for the pre-ADF version of JHeadstart. So while they found some of the enhancements we produced interesting and useful, they will not be incorporated into JHeadstart 10g pre-ADF.

It was decided then that AMIS would release the Generator extensions – with a clear description of the situation:. There is no upgrade path for the functionality provided by the JAG Extensions. That means: to benefit from the new generation capabilities of the JAG Extensions, we make changes to the ViewObject Attribute properties and to the Application Structure file. We can migrate these files to ADF JHeadstart and regenerate the application. All the functionality provided by the base JHeadstart generator will be generated by the ADF JHeadstart generator. However, none of the JAG Extension-based functionality will be available from ADF JHeadstart. There is no upgrade path for the design-time JAG Extension properties.

Having said that, we need to bring some nuance into the discussion:

  • A substantial portion of what the JAG Extensions add to JHeadstart 9.0.5.x will also be available from ADF JHeadstart. It is likely that similar properties in the VO Attributes and Application Structure file, though probably with slightly different names, will be used to drive that functionality in ADF JHeadstart. Upgrading from JAG Extensions in JHeadstart 9.0.5.x to ADF JHeadstart for those pieces of functionality is probably nothing more than changing the names of a few properties, either through a global search and replace (ANT-task perhaps) or a simple XSLT transformation on the BC4J xml-files and the Application Structure file. It seems likely that AMIS will publish an upgrade utility for these properties.
  • Of course there is also no upgrade path for any manual, post-generation changes in the application. If you were to decide to apply some of the AMIS JHeadstart recipes by hand to add functionality to the generated application, these changes are not automatically upgraded to ADF JHeadstart. If you have a choice between making changes manually or making them using the AMIS JAG Extensions, the upgrade situation does not need to influence that decision, since it is the same for both choices.

Why does AMIS publish this extension-set?

AMIS started the JHeadstart Cookbook to achieve a couple of things. We want to show off. We want to demonstrate how well we know JHeadstart. We hope to attract people to JHeadstart in general – strengthen as it were the worldwide JHeadstart community, improve the JHeadstart product and also build a profile for AMIS and its technical experts. In the end of course we hope to attract business: get hired by companies for our advanced JHeadstart skills and experience. To aid on site with JHeadstart based application development, to teach workshops or to assist remotely.

It is important to us that JHeadstart thrives and people have a successful experience with it. Through our recipes and the JAG Extensions we hope to add to the success of developers around the world.

We hope that from this set of general Generator Extensions it is clear to you that AMIS is capable of building your specific generator functionality as well. If you have specific requirements for your organization or specific project, you can ask us to help you out.

Of course we very much would appreciate your feedback on what we are doing!

Status of the AMIS JHeadstart Extensions

We make our work available for free. We do not expect anything in return, apart perhaps from some feedback. At the same time, we do not provide free support on top of the JAG Extensions. You can use the code –or not. If you use it and encounter problems, please let us know. We will probably not start a discussion to help you sort out the problem though. We will make use of your feedback to correct issues, fix bugs and further improve the JAG Extensions – when we have time. You can use the code, but at your own risk!

We currently intent to publish additional releases of the JAG Extension set, but there are no guarantees.

Note that removing the JAG Extensions can be done at any time. You do not get hooked into the JAG Extensions with your application. The only consequence of abandoning the JAG Extensions after some time is that when you re-generate the application any functionality you may have gotten from it will be lost.

How to Get going with the AMIS JHeadstart Generator Extensions

We produced a number of documents and files that will help you to get going. A general introduction to the functionality of the extensions is found in Overview of AMIS JHeadstart Application Generator Extensions.

See this document for installation instructions: Installation Instructions for AMIS JHeadstart Application Generator Extensions.

We have also created an application that demonstrates most features of the JAG Extensions. You can install the JDeveloper project and inspect which properties we have used to get the desired effects. Note that this is the application we used to produce the screenshots in Overview of AMIS JHeadstart Application Generator Extensions. Download the ALS GenExt Application with most of the new JAG features applied here:

Share.

About Author

Lucas Jellema, active in IT (and with Oracle) since 1994. Oracle ACE Director for Fusion Middleware. Consultant, trainer and instructor on diverse areas including Oracle Database (SQL & PLSQL), Service Oriented Architecture, BPM, ADF, Java in various shapes and forms and many other things. Author of the Oracle Press book: Oracle SOA Suite 11g Handbook. Frequent presenter on conferences such as JavaOne, Oracle OpenWorld, ODTUG Kaleidoscope, Devoxx and OBUG. Presenter for Oracle University Celebrity specials.