Welcome to the OPA Hub!


Blog

Most Popular Downloads on this Site

Most Popular Downloads on this Site

We used to say that anything with “Google Maps” in the title was a sure-fire winner when it came to people downloading examples – after all Google Maps used to be so easy to get into, and so many people just “get” why a map is useful, that it was absolutely the go-to example. But is it still the case? Google APIs now need a Billing Account, and an API key, which in turn needs to have domain restrictions, and other administrative elements. It’s not quite as easy as it used to be.

So we set out to look at the different examples that have been downloaded on this site. And here are the results. Interesting. Under the graph, some comments and remarks which might explain some of the data.

Most Popular Downloads

Custom Google Maps JavaScript Label Extension Example 21

Custom Dynamic Options JavaScript Extension Example 21

Didn’t expect that one to be in there at all!

Custom JSON Search JavaScript Extension Example 19

Same for this one. Maybe Search is the new Map?

Custom Entity Container Extension Example  17

Google Maps as Custom Input Control Extension 15

Ah, see, the combined score is going to be huge.

Custom JavaScript Extensions Map with Google Places and Custom Options List  12

Told you. Google Maps reigns supreme!

Custom Header as a Timer JavaScript Extension 12

Custom Year Picker JavaScript Input Extension Example 9

JavaScript Extension Entity Collect Control 7

JavaScript Entity Collect Extension Excel Data Load 6

Custom Signature Extension Example 6

Wow. This one isn’t even really an extension!

JavaScript Extension Search Examples – Airlines, Great Circle Mapping, Airports 6

Everyone loves planes. I get that.

Embed Website in Interview Label Extension 5

JavaScript Extensions with a Live Entity-based Chart with D3 5

Everyone hates D3. I get that.

JavaScript Extension Search Example – Railways 5

Not as much fun as airplanes.

Loader Image in Entity Instances Search Extension 4

JavaScript Extension fullCustomInput Example 4

JavaScript Extension Custom Label Detail Pop-up 4

Calendar Input Extension Blackout Dates 3

JavaScript Extension Search Example – Siebel REST API 3

JavaScript Extension Relationship Control 2

JavaScript Label Extension Leaflet JS Map 2

Wow. This is the free alternative to Google Maps. I would have imagined this to be more popular.

Force PDF Click Button Extension and Label  1

As you can see from the Chart, Google Maps is hanging on – but only just! It’s ex aequo with the Search Extension. However if you pool together all the Google Maps stuff, it completely wipes the floor with the competition. Definitely the most popular downloads.

Want even more downloads?

If you are interested in even more examples (including a complete Entity Collect, a Carousel, Breadcrumbs, lots of Inputs and more, then you will be interested in our new book, JavaScript Extensions for Oracle Policy Modeling.

JavaScript Extensions for Oracle Policy Modeling

JavaScript Extensions for Oracle Policy Modeling

It’s almost ready. The perfect Christmas gift (yeah, right, in bizarro-world) or New Year workout kit. The new book is due out in a few weeks, and you have the chance to win a free copy ahead of everyone else by entering our prize Survey (30 seconds) right now.

The book comes with 50 examples. You get them as Zip Files as well when you buy the book. The book covers all the different types of JavaScript Extensions that are currently available, with examples of each of them (sometimes many different examples) using easily-understandable business scenarios as the starting point, and using example projects from Oracle Policy Modeling – so you don’t need to install a Hub, or do anything special – which let’s you get started straight away.

  • Label Extensions
  • Input Extensions
  • Search Extensions
  • Options Extensions
  • Entity Collect Extensions
  • Entity Container Extensions
  • Button Extensions
  • Event Extensions
  • Navigation, Header and Footer Extensions

The OPA Hub Website Community has also stepped up and I am delighted to say that 8 examples (with credits) came from readers of this website. I am very grateful to them and encourage all of you to submit your ideas and code snippets for the next version.

Hopefully this book will appeal to non-technical people too – I wrote it in the same style as the others (Getting Started with OPA, Getting Started with OSvC) and tried to make it as accessible as possible to everyone.

Here, in avant-premiere, is the cover. And no, I’m not sure what those things are either. But they sure look exotic and tasty. I wanted a parsnip on the cover but these were available and they look good. These are important questions that you worry about late at night. The publisher’s website has been updated, watch this space for the launch date!

 

JavaScript Extensions

Whats New in Oracle Policy Automation 19D?

Whats New in Oracle Policy Automation 19D?

Another quarter rolls by and the Oracle Policy Automation team have released their latest version. This is the final one for 2019, and who knows what 2020 will bring us? Judging by the conversations at the different Focus Groups this year, I would say “lots of things”! So here is our traditional roundup of Whats New in Oracle Policy Automation 19D!

Don’t forget to reach out to the Oracle Policy Automation Blog team and hassle them to publish the 2020 Oracle Policy Automation Focus Group calendar, so you can start convincing your boss that you need to go there. And believe me, you need to go there. It’s by far the best way to get facetime with the great and the good of the community, both from Oracle and from the customer side. And it’s all in the spirit of sharing and collaboration. No selling!

Whilst I’m on this subject, don’t forget the Early Bird prices for Modern CX 2020 in Chicago run out soon. We’ll be there, so I look forward to meeting as many people as possible!

Back to the subject at hand – what’s new in Oracle Policy Automation 19D? Well, here is the list:

New Hub User Interface in Oracle Policy Automation 19D

There have been mutterings about this for a while so it’s with pleasure that I see the new UI has grown more responsive and more in line with the other Oracle applications in the Cloud:

Whats New in Oracle Policy Automation 19D? 1
You might think that was a bit of a disappointment since it’s pretty similar to the last one, but digging a bit reveals more news:

Whats New in Oracle Policy Automation 19D? 2
The fonts have changed. And…
Whats New in Oracle Policy Automation 19D? 3

So have the role names! And the deployment pages get a refresh too. Someone has been downloading icon sets I think!
Whats New in Oracle Policy Automation 19D? 4
And the detail pages get a wash and brush-up too. I find the metrics very small however:Whats New in Oracle Policy Automation 19D? 5
Drilling down on one of the metrics, shows the updated screen shown below. Still no visibility on metric for Web Services,or any other channel (sigh).
19d - Project Metrics
But there’s more. Wandering around in there, we can notice that the “collection” idea has been renamed the rather more sexy “Workspace”:

Whats New in Oracle Policy Automation 19D Workspace
This all seems to smack of “clearing the way for a bunch of new stuff” but hey, what do I know?

Entity Level Forms

So now if you have a household with 3 individuals applying for something, you can run off Forms for the individual members of the household.

Entity Level FormsResubmit Interview Data

Interview designers can now allow Screens to resubmit data. This is only available for Interviews using the Connector Framework.

Resubmit Data in Connector

Pass a cookie parameter in the OAUTH header for embedded interviews

For a web service connection, there is now the ability to name a cookie which will be passed through in the parameters of any Load, Save, GetCheckpoint or SaveCheckpoint request made. This enables customers that authenticate users of their interviews via an OAUTH token passed in a cookie to have that same token passed when the data adaptor is invoked during an interview.

Refresh Seed Data

This is a very interesting one. Suppose you need to refresh the seed data in the course of the Interview. I mean, reissue the load and pull in mapped data like you did at the start? An intriguing prospect, with lots of side effects, for example in the case of mapped entities (and this taken from the online help) :

This means that when seed data is reloaded:

  • any instance that currently exists in the session but not in the seed data will be deleted,
  • any instance that exists in the seed data but not the session will be created in the session, and
  • any instance that exists in both the session and the seed data will be left alone.

Well, that started out looking like a modest release but in fact there are lots of things that are going in Oracle Policy Automation and Modeling. Thanks as always to the whole team for another cracking release!

New JavaScript Extensions Book – Win!

New JavaScript Extensions Book – Win!

We’re pleased to say that our new Oracle Policy Automation JavaScript Extensions book is almost finished. Designed to be useful for anyone looking to understand how to extend their interviews with JavaScript Extensions. It comes with 50 worked examples and Zip Archives to download. It was written to help non-programming Oracle Policy Automation professionals understand what is possible. Professional Programmers can use the examples and extend them / adapt them according to their needs.

Win a Free Copy!

The new book is part of our program of providing useful resources and assistance to the community. Help the OPA Hub Website by filling in the survey below and enter to win a copy of the book and the free goodies we mentioned. We’re attempting to broaden our offerings to include various forms of training and assistance, and your feedback helps us a great deal. We want to serve the community in the best way possible and this is part of that process, learning about your needs.

If you enter the very short survey below and complete the last question, you will be entered into the draw – one person will be drawn at random and will win a copy of the book as soon as it is published (in the New Year 2020) and a bunch of other goodies – a baseball cap, a tee-shirt, a pen and a mug! So what are you waiting for? If for whatever reason, the embedded survey below does not work, you can also access it here.

Enter the Survey to win!

Create your own user feedback survey

Job

A New Job?

A New Job?

I’m always surprised by the buoyancy of the Oracle Policy Automation job market. The product has come on leaps and bounds in terms of market penetration and acceptance, and Oracle Policy Automation skills are very much in demand. Most of the jobs listed below are in the United States of America, but I also know that the markets in Canada, Europe and Asia-Pacific are all very positive.

Multiples Jobs?

I do know that whenever a job is posted, there are about 4 different versions that are immediately posted afterwards, with each one being posted by a different recruitment agency, so you need to select the best one – or sometimes work out who the customer really is and contact them directly (I probably shouldn’t say that given the number of agencies that post here).

A Mystery Job

What surprises me (and no doubt, many of you) is that Oracle Policy Automation is often mentioned in the same phrase as “Oracle Fusion Middleware Developer”, or “Oracle Java Programmer”. It’s clear that there is still a large degree of confusion as to what Oracle Policy Automation is, and what it does. So it is our job, so to speak, to evangelize and communicate what Oracle Policy Automation actually is.

Tell us about your Job

With that in mind, we’re happy to hear from anyone who has a good story to tell about how they have used Oracle Policy Automation in their company or organization. As always, there will be a prize or two for the best story. Screenshots, Videos, interviews – they are all welcome and we hope that they will help the wider world understand what we do, and what we do it with!







Don’t hesitate to look at the complete list of jobs on the OPA Hub Website, which you can find at the usual web address. Or visit our job source website.

Have a nice day!

Table Headers Tabular Layout Trick 7

Table Headers : Tabular Layout Trick

Table Headers : Tabular Layout Trick

There is always much discussion when users first discover the Interview tab. Let’s be honest – not all of the comments are exactly positive. It all feels a bit, well, basic.

There are a number of things that catch you out at first (and indeed, later). So let’s take a moment to study tabular layouts and a common issue.

For this example I’m going to use the same project (Credit and Visa Cards) as the previous post, since that gives us two entities to work with.

Tabular Layout

Let’s consider that you want to display both entities using tabular layout. You create a Screen and set them both to tabular display. But let’s assume that you want to display the Visa Card with a couple of specifics. You want to include the provider of the credit card. So let’s set that up as a Value List and use an attribute on the Credit Card, and infer it on the Visa Card:

Table Headers Tabular Layout Trick 1So, with that now done, we want to display the Visa Card provider in the Entity Collect (as it is an inferred entity, we cannot use an Entity Collect). But we want to display it as a label as you can see in this screenshot (we added a name to the attribute as you saw in step one so we can reference it in our Screen:

Table Headers Tabular Layout Trick 2Notice how we added a label and used that to display the text of the provider? Using a label ensures three things

  1. It is read-only
  2. If the user is tabbing from input to input, the cursor will not get stuck in that field
  3. It doesn’t look like a read-only input, just a label (which is what we want).

But the downside is that the label does not have a table header in that column, since the Interview designer only adds those for Inputs:

Table Headers Tabular Layout Trick 4

I find it a shame that we cannot put table headers in this “tabular” column, since in HTML a table should have column headers. In fact if we take a moment to inspect this table in the browser, we note that annoying, there is a table header in the table:

Table Headers Tabular Layout Trick 5

So, we need to get that table header populated with our chosen text. But how shall we do it? We don’t want to create an Entity Container extension, since that would mean we have to do the whole thing from top to bottom. So we only want a little tiny change. We have a couple of choices.

  1. Create a Style Extension for the Entity Collect
  2. Create a Label Extension for stealth modification

Let’s try the first option, since it reveals some interesting facts about Styling Extensions. Firstly, get ready by doing the following; change the text associated with your entity in the Interview by double-clicking where the rectangle is, and entering whatever text you would like to display in the missing header.

Then add a compound Styling Extension to your Project. Tabular Containers allow for nested styling, like this:

OraclePolicyAutomation.AddExtension({
style: {
tabularContainer: function (control) {
if (control.getProperty("name") === "xContainer") {
style: {
headerRow:
YOUR STUFF GOES HERE
 
}
}
}
 
}
});

Notice the “headerRow” is a child of “tabularContainer”. And notice the line that says YOUR STUFF GOES HERE. Now for an interesting fact about Styling Extensions. They behave, to a reasonable degree, just like Control Extensions. They are really one and the same thing – the main difference of course is the handlers that are exposed in Control and Interview Extensions.

Drop jQuery into your resources folder, and then replace YOUR STUFF GOES HERE with the following line:

$("#opaCtl4th0").text(control.getCaption());

Of course, the jQuery selector may be different for you but it is easy to find the “header” I illustrated in the previous screenshots. Open your Project in a real Browser (Ctrl+F5) for debugging and take a look at the results:

Final Header Result

Our Styling Extension has added the text to the header, drawing it from the Interview Screen Entity Container definition, and we have it where we want it. Of course, you could style it as well.

But it goes to show that Styling Extensions are really not very different to Control Extensions!

InferInstanceFor Debug Screen Final

Back to Basics : InferInstanceFor

Back to Basics : InferInstanceFor

It’s one of those functions that people often ask questions about. At first glance InferInstanceFor appears to be “just another one of those Instance functions”. But it actually hides something very interesting. The ability to create copies, to a certain degree.

So copies of instances, huh? Why would I want to do that? Well there are many reasons. But before we look at reasons, let’s look at how it works. Starting with a simple data model – consider the credit card as an entity. And the visa card as well. Let’s say that (logically enough) the visa card will be hosting instances of the credit card that are Visa cards.

So if we wanted to actually infer the existence of these Visa cards (as opposed to inferring membership of a relationship) then InferInstanceFor is going to come in very handy.

What we need, in order to be able to do this, is to establish an inferred associative relationship. We need to connect the credit and Visa cards with a relationship, so that we can use that in our upcoming rules.

InferInstanceFor 1

Suppose we enter into the Debugger 3 credit cards. Note that the Visa card is an inferred entity – you are about to add the rules to infer them. Here is the rule to begin the Word document:

InferInstanceFor Rule

And so, let’s tidy up the Interview and make a nice Screen layout with the two entities on the Screen – the credit card as a New Input and the Visa card as a new Control > Entity Container. I’ve added some labelling and put it into Tabbed layout for clarity:

InerInstanceFor Screen Layout

So now let’s run the Debugger and see the result, with 3 cards entered:

InferInstanceFor Debug 1

Hmm, that’s seriously underwhelming – what’s with the unknown?! The reason is, InferInstanceFor simply creates the “copy” instance. It does not in any way clone the attribute values. So right now you have a Visa card, but there is no information at all in the instance.

That’s why, whenever you see an InferInstanceFor, you are highly likely to see another rule right after it, making sure that some of the data is actually populated. A useful function in this context would be For(), since it is designed for cross-entity reasoning – which you are now doing since you have two entities. A sample rule might look like this:

InferInstanceFor Rule For

Note that this rule assumes that your credit card entity has an attribute called the credit card number. I renamed the attribute the credit card to the credit card number in my project. And of course, the separator “,” might be different in your region.

After a bit more tidying up it looks like this. Nice!

Debug Screen Final

Job done. So InferInstanceFor is useful for creating mirror copies of instances, but you will need to leverage other functions and rules to actually populate the instances you create.

If anyone wants the Zip File, just leave a comment!

Back to Basics : ForScope, For, ExistsScope and the rest

Back to Basics : ForScope, For, ExistsScope and the rest

Back to Basics : ForScope, For, ExistsScope : If there is one error message guaranteed to strike fear into the heart of an Oracle Policy Automation rulesmith learning their craft, it’s the “My Thing is not available here. You may need an alias…” error that pops up just as things start getting interesting when you are learning about Entities and Relationships.

It doesn’t help that the error is a bit opaque. But at heart this error is trying to tell you some good news – you’ve gotten your Entities off the ground!

Let’s start with some ideas to get back on track:

Firstly a picture. Its nearly Halloween and here in my office they’ve been decorating so I’ve been forced to follow their lead:

 

Back to Basics : ForScope, For, ExistsScope and the rest 1
Imagine you are walking through the graveyard late at night. It’s dark and stormy and you find your way to the first tomb. A big, crumbling Gothic one. And inside are some graves. And in each grave there are maybe some ghosts.

Alright, you get the idea. But trying to write a rule like this (assuming you have changed the relationship texts from “all instances of…” into something more useful:

the person walking at night is frightened if

InstanceCount(the ghosts in the grave) > 4

…and you will get the magic error:

Back to Basics : ForScope, For, ExistsScope and the rest 2

Think of it like this. Walking through the graveyard with your flickering torch, you can hardly see your way forward. Your “vision” of the ghosts that await is dependent on your ability, first of all, to focus on a grave ( since ghosts live in a grave) and seeing a grave means you first have to focus on a tomb. That’s the way our model is built.

Now consider the following:

Back to Basics : ForScope, For, ExistsScope and the rest 3

You can see that the rule document mirrors our nervous walk in the graveyard at night..find the tombs, then find the graves in the tombs, and peep inside each grave to look for ghosts. I can handle up to three ghosts per grave.

The basic idea should make sense – you need to give the correct “scope” to your conditions. This whole idea is all about scoping.

Once you’ve gotten your head around that concept, the next step is to be clear on what you are actually trying to achieve. The above example might be written like this instead:

Back to Basics : ForScope, For, ExistsScope and the rest 3

Did you really mean that you are only frightened if every tomb has graves, and all of the graves have more than three ghosts? Wow! I’m impressed. I’m way more likely to want to write:

Back to Basics : ForScope, For, ExistsScope and the rest 4

Or, in longer form:

Back to Basics : ForScope, For, ExistsScope and the rest 5

That’s right, some of these scoping functions have filters so that you can quickly define “all of them” or “at least one of them” kind of conditions.

So far so good. But what’s the difference between these two?

Back to Basics : ForScope, For, ExistsScope and the rest 7

Back to Basics : ForScope, For, ExistsScope and the rest 8

Aside from the obvious visual difference, they are the same. Let’s review the help text:

Exists(<relationship><condition>)

Used to refer from one entity to another entity in a relationship, when you need to determine whether any members of the target entity group need to satisfy the rule. This form is used when there is only one condition in the rule.

ExistsScope(<relationship>)

Used to refer from one entity to another entity in a relationship, when you need to determine whether any members of the target entity group need to satisfy the rule. This form is used when there are one or more conditions in the rule. This function is not supported in Microsoft Excel rules.

I’ve highlighted the difference. Using “Exists” limits you to one element after the relationship name. If you want to have more than one, you need to use ExistsScope, you can’t stick them in the “shorter” version.

Ghoulish Result 2

Don’t worry, there’s more 🙂 but that’s a good start. We’ll dig into some details next.

Extensions : A First Style Extension

Extensions : A First Style Extension

To better understand the process of creating, testing and delivering a style extension, and how it relates to the Interview experience, let’s start with a skeleton example. You have been tasked with creating a text input for the Interview, which has a different behavior to the normal one. For this short example, you could simply create a new Project by selecting the Project tab and clicking New Project.

1. Before doing anything, check that the behavior you are looking to implement is not already configurable using the Styles dialog on the Interview tab. For example, there are a number of options on this page, that allow us to change the font, color and so on:

Style Extension - What to do

2. Click the Custom Files button

3. Notice the warning. If you are developing for a public sector organization or for an organization that needs to meet certain accessibility standards, you should review the warning and check that any extension you create meets the standard Web Content Accessibility Guidelines (WCAG) mentioned. You can find out more here: https://www.w3.org/WAI/standards-guidelines/wcag/.

4.In the screenshot above, the Project is called Style Extension. Notice that the folder is called interview-theme/resources. This folder can contain your Extension files, but it also can contain other resources for your Project, notably images (and a folder is already present with that name).

Adding a file is as simple as adding a new file to this folder. You can choose to add a new file manually, or you can use a code generator such as the one available from https://theopahub.com which can help you quickly create standard files to work on.

In this, our first example, let’s create a new Text File and rename it example.js. Even though it is concerned with styling rules, all extensions are always driven by a JavaScript file. But before you add the file, a word about the file structure.

Custom Style Extension Template

Most Extension creators like to use template files, since all extensions have a similar structure. You might use this sample styling template as a general starting point for self-study purposes. Over the following pages, you will implement several examples of Custom Styling Extensions; each time you will construct a file based on a template similar to this.

OraclePolicyAutomation.AddExtension({
style: {
objecttype: {
className: "css class name",
errorclassName: "error css class",
propertyname: "property value"
}
 
}
});

In the template shown above, there are four main areas that may be modified:

Object Type
The Object Type identifies the element you are trying to restyle. This could be the Interview content, the “Next” button, or a specific type of element such as a Calendar input Control.
Class Name
The style details (color, background, or indeed any Cascading Style Sheet content) are in most cases based on a standard CSS file with different classes.
Error Class Name
The style details to use when a control is in an error state (for example, a user has entered an invalid date).
Property Name
In simple cases, where only one aspect is changed, in certain controls it is possible to change the value without a separate style sheet. For example, in order to change only the background color of an element, it is not required to create a style sheet, you may reference the property directly as you will see in a moment.

In the case of this first walk-through, you will construct a Style Extension that changes the look of one or more text input areas in your Project.

Using the code below as your guide, add text to your blank example.js file.

OraclePolicyAutomation.AddExtension({
style: {
textInput: {
 
style: {
color: "darkblue",
backgroundColor: "lightgrey",
fontSize: "14px",
fontWeight: "bolder"
}
 
}
}
});

Notice the following key points:
1. The Oracle Policy Automation AddExtension object allows us to pass details of an extension to normal behaviour, to “register your extension”
2. The style key indicates that it is a styling extension, and you will change text color, background color, font size and weight properties in your extension
3. The textInput key tells Oracle Policy Automation that you wish to extend textInput styling
4. The entire code of your extension is a JavaScript object

Build a First Example Style Extension Project

In order to test your work, you will need to add some content to your Oracle Policy Automation Project. In the Data tab, create three attributes according to the example below (note there are two text attributes and one number attribute).

Style Extension - Attributes for Example

Make the following changes to the Interview tab of your Project

  1. Click New Screen on the Interview Tab
  2. Drag the New Screen so that it is the first in the vertical list
  3. Double -click the title and change it to “Customer Management”
  4. Click New Input
  5. Double-click each attribute until they are all visible on your Screen

Once these simple steps are finished, your Interview should look like the one below. Use the bullet points in the screenshot to make sure you have the same result.

Style Extension Interview

So you are ready to test your Style Extension. Start a new Debug session by clicking Debug in the top right hand corner of Oracle Policy Modeling. If you have followed the steps, you should see the following:

Style Extension - result

You are perhaps surprised at the result as to why both of the first two inputs are styled. That’s because the underlying HTML tags are the same. In a later example you will find out how to style numbers differently to text, and so on. There are many more options available to style developers.

But that’s it – you now have a functioning Style Extension. Enjoy, until next time!

Back to Basics : Extensions #2

Back to Basics : Extensions #2

Following on from the previous post, we delve more deeply into the JavaScript Extensions world.

Interview Execution in a Browser

So how does an Interview Extension work? Let’s begin with some basic information about how your Oracle Policy Automation Interview runs in your Browser. If you happened to be viewing an Interview right now, and you were to open the Console (F12 in Google Chrome, or Microsoft Edge. Check your Browser documentation for the equivalent key or menu option), you might be able to view something like the following screenshot. Check the steps under the image as you may need to refer to them in your own case.

Extensions

In this screenshot I have launched a Project using the Debugger. Remember that if you hold down F5 while clicking the Debug button, you will open the Interview in the Debugger and in your default Browser.

  1. Your web server may of course be a different address.
  2. The web-determinations folder will not have the same numeric suffix as in this screenshot, indeed will most likely not have a suffix at all. This is a feature of the Debugging session.
  3. The js file is most likely in the staticresource folder, however if you are in a more integrated environment it may be in a different subfolder, or a different folder altogether. But it will be present.
  4. The contents of the js file can be read more easily by selecting (in Google Chrome in this case) the option to pretty print the code.

Interviews.js

This file is the foundation of the Interview experience provided by Oracle Policy Automation. It contains all the code necessary to make the user experience function correctly. Inside this file, however, there is a built-in capacity to accept extensions that change the behaviour of the Interview.

In your Console, search in the file for the following text – “customLabel:” (without the quotation marks, but with the colon). You should find one instance of that text, as shown in the screenshot below.

Extensions

  1. Search for the text
  2. Find the text in the file.

Take a moment to perform a second search in the same file, for the text shown below. Use the screenshot as your guide.

  1. Ensure you are looking at interviews.js
  2. Search for this text
  3. View the style definition for textInputStyle.

Accepted Extension Types

Notice in the first example, that customLabel is only one of a series of items in the first list. These are the recognized types of Control extension that we, as Oracle Policy Automation Project workers, are permitted to develop.

In the second search you found that there was a style defined for controls called textInputs. Although not quite as obvious perhaps as the first example, an Oracle Policy Automation Project might want to override the Style(s) used in a Project, in order to comply with corporate guidelines for example: and this system will help us do just that. Style Extensions use keywords in the same way to indicate which elements you wish to style.

About Extensions

It is not important at this stage to understand how these extensions are created or used. It is, however fundamentally important to understand that you will be extending Oracle Policy Automation Interviews by adding one or more of these acceptable extensions, and that they will be run in the browser in the same way as the standard JavaScript is already. These interviews can then be better adapted to your IT environment. As an example, read how Styling Extensions enable integration visually with Oracle Content & Experience Cloud.

More on this subject, with some worked examples, shortly.