Converting from directives to JavaServer Page tags
Pega Platform provides automated conversion facilities that translate most directives into equivalent JSP tags.
Use of JSP tags rather than directives is recommended for new applications and upgraded older applications. Use of JSP tags is required for applications which are to be localized.
Benefits
Use of JSP tags rather than directives offers these benefits:
- Processing is more efficient.
- Developers familiar with JSP technology are immediately productive
- Your application can incorporate JSP tag libraries (taglibs) already developed or acquired from other parties.
- Properties and pages named in the XML or HTML code are validated as you save the rule.
- The Referencing Rules display for properties includes the JSP-style stream rules that reference the property. (In contrast, such information is less complete for directive-based stream rules.)
To simplify this transition, your application can use directives in some stream rule instances and JSP tags in others. (Don't attempt to use both forms in a single rule.)
In many cases, you can use the automated conversion described here to convert directives to the equivalent JSP tag forms. If you can save the JSP-converted form of the rule without errors, the updated rule operates identically to the original directive-based version.
Procedure
These instructions apply to these rule types, which are derived from the Rule-Stream class:
- Rule-HTML-Fragment
- Rule-Obj-HTML
- Rule-Obj-XML
To update a rule containing directives to contain equivalent JSP tags:
- Open the rule.
- Use the Save As toolbar button to make a new copy in another RuleSet, or in the same RuleSet with a higher version number.
-
Confirm that the
Generate As
field is set to
HTML
. - The Convert to JSP button appears. Click the button.
-
The
Pega Platform
parses the HTML or XML text and automatically
replaces the directives with equivalent JavaServer Page tags. It changes the
Generate As
field value to
JSP
. -
Click the Save toolbar button. The
Pega Platform
checks the rule for
these conditions:
- Basic syntax, such as matching quotes, matching parentheses and matching <> pairs
- Pages referenced in the text also appear on the Pages & Classes tab
- Properties referenced in the text are defined
- Other stream rules referenced in the text are defined
- JSP tags are well-formed XML elements, with quotes around all attribute values.
- Respond to any errors reported by updating the Pages & Classes tab, information on other tabs, or the HTML or XML source code as appropriate, and save again.
Restrictions and notes
Certain constructs and Version 02-02 PublicAPI calls are not permitted in stream rules that depend on JavaServer Page tags. These conditions are detected and reported as errors when you attempt to save the rule.
- A JSP tag cannot reference a rule that does not yet exist or is in a RuleSet or Version not on your RuleSet list. (You can reference a rule that exists but is marked as unavailable.)
- Page names appearing in the HTML or XML text must also appear on the Pages & Classes tab.
-
Some Version 02-02 PublicAPI methods including the following are not supported. These
are rare.
- thisRefPush()
- thisRef() — use tools.getActive()
- targetPush()
- inputPermitted()
- getOpposit()
- getIdent()
- forEachPageInList()
- basePagePush()
- basePage()
- appendLookup()
-
In the attributes of the <pega:when > tag, you cannot reference both a JavaScript
and another when tag option (such as a when condition rule or the
$mode-input
option). Also, complex expressions that use the two Java operators||
and&&
may fail to convert or operate correctly at runtime. - A circumstance-qualified or time-qualified rule derived from the Rule-Stream class (for example, control rules) and the corresponding base rule must both use JSP tags, or both use directives. If you convert a rule that is a base rule for qualified rules, convert all the qualified rules also.