How-to Build Card Layout Responses from Custom Components

Size: px
Start display at page:

Download "How-to Build Card Layout Responses from Custom Components"

Transcription

1 Oracle Intelligent Bots TechExchange Article. How-to Build Card Layout Responses from Custom Components Frank Nimphius, June 2018 Using the Common Response component (CR component) in Oracle Intelligent Bots, bot conversation designers can build arbitrary complex bot responses declaratively. A very popular bot response is the card layout that displays multiple cards in a vertical or horizontal order with each card displaying a title, a description, an imagen an optional URL and one or more action items for the user to tap on. While the recommended conversation design strategy is to use the CR component whenever possible, there exist use cases in which a custom component must render its own UI. Still displaying data in cards remains a popular layout. In this article I explain how to display a card layout from a custom component and how you handle post back actions (buttons on a card) and user text entries. Note: If you are new to custom components in Oracle Intelligent Bots, then please have a look at this previously written TechExchange article first: 1 Oracle Intelligent Bots TechExchange

2 Table of Contents About the Conversation Message Model (CMM)... 3 About MessageModel.js in the Custom Component SDK... 3 Building Card Layouts... 3 Defining a card... 3 Defining a Postback Action... 4 A Complete Example... 5 The custom component metadata function... 5 The custom component invoke function... 6 Handling Postback Actions... 9 Bot dialog flow Runtime View Appendix: Sample Data Provider

3 About the Conversation Message Model (CMM) No magic happens without a reason. The magic behind the CR component rich layout capabilities is the underlying message model, the conversation message model (CMM). For each response type, like text and attachment, the CMM provides a conversation message object that components use to compose and return rich bot responses. One of the available conversation message objects is and you may have guessed it for building card layouts. About MessageModel.js in the Custom Component SDK The custom component MessageModel.js class in the bot custom component service SDK contains helper functions that make it easy for custom component developers to work with the conversion message model. When building custom components, you access the SDK s MessageModel instance through the SDK reference, which usually is passed to the custom component as the conversation argument. invoke: (conversation, done) => { var messagemodel = conversation.messagemodel() Building Card Layouts The MessageModel.js class contains the CardConversationMessage object definition, that you use to build a response object for card layouts. The CardConversationMessage object abstracts the metadata structure that is used internally by the CMM to define and deliver bot responses to multiple different messenger channels. To simplify the creation of the various conversation messages supported by the CMM from custom components, the MessageModel SDK class does provide static helper functions. For the CardConversationMessage, you find the following helper function defined var cardmessage = conversation.messagemodel().cardconversationmessage (layout,cards,actions); The function expects the following arguments layout: vertical or horizontal string value to determine the direction of the cards. In the horizontal setting the individual cards are rendered in a carousel for scrolling cards: An array of card objects. Each card in the array has a title, a description, a URL and an array of local actions (various types), which are rendered as buttons on an individual card. actions: (optional) global actions rendered on the cars layout level Defining a card To define a card to be rendered on the card layout, you use the static cardobject() function exposed on the MessageModel class. The cardobject() function creates a card instance that you then add to an array for 3

4 display through the cardconversationmessage( ) function. The cardobject( ) function takes the following arguments: title: The title of the card description: A description that can have multiple lines of text imageurl: The URL of the image to be displayed on the card. Images must be publicly accessible url: A hyperlink that is displayed on the card actions: An array of actions, e.g. postback, location or phone, to be added as a command button to the card Example: let cardobj = conversation.messagemodel().cardobject('pizza Supreme', 'Pizza with the best of season topics', ' ' [action1, action2, ]); Defining a Postback Action The conversation message model supports different action types including location, call, url and postback. For this article I will explain how to create and use postback actions. Note: Other action types may become subject of separate Oracle TechExchange articles. However, I suggest you read the source code of the MessageModel.js file for details on each of the available action types. Just search for "ActionObject" to find each of the types in the form of <type name>actionobject( parameters ) The postback action function requires at least 2 parameters to build and return an action object that you then can add to an array of actions that eventually is added to a card response message. Arguments: label: The label of the command item (button) displayed on a card image: optional, the URL reference of an image to display on a button postback: JSON object or a simple string to be send back to the bot when a user presses the action command (button) on a card. A JSON object allows you to set multiple variables in response to a user action. let action = conversation.messagemodel().postbackactionobject("place Order", null, { propertyname1: 'value1', propertyname2: 'value2', ); 4

5 The code snippet above creates an action that renders a command item with a label "Place Order". The image argument is set to null, so the command item renders with a label only. The last argument is a JSON object that defines attributes and values to work with when a user clicked the command item. A Complete Example If you are familiar with the Oracle Intelligent Bots samples, then you should know the CRC pizza sample that renders pizza types in cards for a user to order the pizza by tapping a command item. The code source below does the same in that it reads the pizza menu from a JavaScript object referenced as "datasource". It then iterates over all the pizza menu items (an array of JavaScript objects) to create a card for each of the pizza types. The custom component allows bot designers to define a variable name of a context variable that gets updated with the name of the pizza when selected. The custom component skeleton looks like shown below "use strict"; //reference the local JS class containing the pizza menu data var datasource = require('./../utilities/sampledataprovider'); module.exports = { metadata: () => ({ ), invoke: (conversation, done) => { ; Note: If you are new to custom components in Oracle Intelligent Bots, then please have a look at this previously written TechExchange article: The custom component metadata function The custom component metadata function describes the component to the Oracle Intelligent Bot chatbot instance. It tells the bot about the component name, mandatory and optional input parameters, as well as about returned action strings that allow bot designers to make a sensitive decision of where to navigate next. metadata: () => ({ "name": "cmm.card.sample", "properties": { "variable": { "type": "string", "required": true "cardlayout": { "type": "string", "required": false "keepturn": { 5

6 "type": "boolean", "required": false "supportedactions": ['textreceived'] ), The component definition defines a single required parameter for the context variable that should be updated with the content of a postback action payload when the user taps on an action item. Two more optional parameters are defined to define the orientation in which cards are rendered in the messenger ('vertical' or 'horizontal') and to define whether user input is required after the user taps the action item (keepturn). If, after selecting the action item the bot only prints a message then keepturn should be set to true. If the conversation is not complete, then keepturn should be set to false (default). Note: You can read up about on what keepturn does when set on a component in the following TechExchange article: The supported action string is set to "textreceived" and is returned when a user types text into the messenger instead of selecting an action from a card. The custom component invoke function The invoke function manages a variable to track the component internal state. If the tracking variable is not set or set to 'false' then the card layout is rendered. After the card layout is rendered, the tracking variable is set to true and the custom component returns the turn to the user to select a card action. The component does not transition to a next state so that the custom component also handles the next user interaction. This is how you handle postback actions similar to how the CR component does. The code below contains highlighted comments that explain the implementation invoke: (conversation, done) => { //read input parameters or set their default values var cardlayout = conversation.properties().cardlayout? conversation.properties().cardlayout : "vertical"; var keepturn = conversation.properties().keepturn? conversation.properties().keepturn : false; var variablename = conversation.properties().variable; //read variable that tracks the component state. If the component is called the first //time, then render the card layout. Else handle the user selection (postback) or user //text message (if the user used the keyboard to type a message instead of selecting a //value 6

7 var statetracker = (conversation.variable(' cardcomp_state ') == 'true')? 'true' : 'false'; //check for and handle postback response if the component previously rendered the //card layout if (conversation.postback() && statetracker == 'true') { //reset state tracker so that next time the card layout renders again conversation.variable(' cardcomp_state ', 'false'); //get the postback message object let postbackpayload = conversation.postback(); //read the key/value pair in the postback message and update the variable with the value //note that in the sample, as you will see further below, the postback action payload //object has the key name set to the variable name to receive the value update conversation.variable(variablename, postbackpayload[variablename]); // when the user selected an action from a card, then this job of the custom component //is done and transition goes to a next state. If the next state does not require user //interaction, then the bot designer should have set the keepturn input parameter to //false conversation.keepturn(keepturn); conversation.transition(); done(); //handle text response by returning the textreceived action string if the //component has rendered the card layout before else if(conversation.text() && statetracker == 'true'){ //reset state tracker conversation.variable(' cardcomp_state ', 'false'); //the user entered text, so we return 'textreceived'. Note that you can use //this custom component to also access to the user text string and e.g. save it //for later. For the example in this article, I simply return the action string //for the bot designer to do the right thing conversation.transition('textreceived'); //navigate to the next state with no further user input required conversationkeepturn(true); done(); else { //set state tracker indcating that card has been rendered conversation.variable(' cardcomp_state ', 'true'); //No message sent. So, it's safe to assume that the card layout should be rendered 7

8 //read the data array from the local file. Note that the local file could be replaced //with a remote service call to query data from a remote system. var dataarray = datasource.data(); //define a card array var cards = []; //iterate over all pizza menu items in the data array to create the card definition and //the postback action for (let i = 0; i < dataarray.length; i++) { //define the action object. Each action has a label saying "Order <pizza name>". //the postback payload that is sent to the bot when a user clicks on an action //in the card is set such that the JSON object attribute name is the same name //as the context variable passed as a parameter to the component. The value of the //payload is the name of the pizza to order let action = conversation.messagemodel().postbackactionobject( "Order " + dataarray[i].name, null, { //define which variable to update when postback action is used [variablename]: dataarray[i].name ); //build the card using information from the data source for the pizza to render. The //action array only has a single action item in it let cardobj = conversation.messagemodel().cardobject( dataarray[i].name, dataarray[i].description, dataarray[i].image, null, [action]); //add the card to the cards array cards.push(cardobj); //build the card layout response to send back to the bot to render in the messenger. //the cardlayout variable holds a value of 'vertical' or 'horizontal' as provided //by the bot designer var cardresponsemessage = conversation.messagemodel().cardconversationmessage(cardlayout, cards); //render the card layout conversation.reply(cardresponsemessage); //pass the handle back to the user to select an option. //BUT don't transition to a next state in the conversation. The custom component stays //in focus so it can handle the next user action done(); 8

9 The component invoke function above renders a card layout with one action item on each card. When the user taps on a button, the context variable that is referenced in the custom component variable property is updated with the value read from the payload. Note: If you are interested in how to call remote services from a custom component to query data, please read the following Oracle TechExchange article Handling Postback Actions Building "custom components" is another way of saying "on your own". Though the code sample in the previous section already explained how to handle user messages in response to a previous card layout rendering, it is important to make it clear that you, the custom component designer, must handle the user response too. This means that whatever you want to happen when a user selects an action from a card, you need to build it. Many bot designers get confused by the functionality that exists in the CR component and assume this to magically happen for card layouts rendered by custom components as well. For a custom component to handle the postback action, you need to implement it in your component code as shown in the example code in this article. In the example code provided in this article a postback action is added to each card in the card layout to select a pizza to order and to save the selected pizza name in a context variable. To handle this in a custom component you need to do the following: - Determine whether the component input message is a postback message or not - Read values from the payload - Access the context variable for update with content from the postback message The code below is from the sample code in the previous section. It shows how, at the beginning of the invoke function, your custom component needs to check for incoming messages to determine whether or not it should render the card layout. //check for and handle postback response if (conversation.postback() && statetracker == 'true') { //reset state tracker conversation.variable(' cardcomp_state ', 'false'); //get the postback message object let postbackpayload = conversation.postback(); 9

10 //read the key/value pair in the postback message and update the variable with the value //note that in the sample, as you will see further below, the postback action payload //object has the key name set to the variable name to receive the value update conversation.variable(variablename, postbackpayload[variablename]); // when the user selected an action from a card, then this job of the custom component //is done and transition goes to a next state. If the next state does not require user //interaction, then the bot designer should have set the keepturn input parameter to //false conversation.keepturn(keepturn); conversation.transition(); done(); //handle text response returning textreceived action as CRC component does else if(conversation.text() && statetracker == 'true'){ //reset state tracker conversation.variable(' cardcomp_state ', 'false'); //the user entered text, so we return 'textreceived'. Note that you can use //this custom component to also access to the user text string and e.g. save it //for later. For the example in this article, I simply return the action string //for the bot designer to do the right thing conversation.transition('textreceived'); //navigate to the next state with no further user input required conversationkeepturn(true); done(); else { render the card menu 10

11 Bot dialog flow After registering the custom component service with the bot, you can use the custom component in the dialog flow. An example is shown below for the code sample provided in this article Line 12 defines the state that references the custom component that renders the card layout. The component variable property references the pizzaname context variable defined in line 10 for the component to update it with the pizza name selected by the user. Line handle the component navigation when the user selects a pizza by pressing the postback button or when the user typed text (in which case this sample cancels the pizza order process). When the user types text instead of selecting a choice from the menu, then the custom component returns the "textreceived" action. The textreceived action is mapped to the "cancel" state. If the user selects a pizza by pressing the order button then navigation happens to the "printconfirmation" state as indicated by the "next" transition directive. 11

12 Runtime View At runtime, the user may start the bot conversation with "hi". The dialog flow invokes the custom component, which then renders the vertical card layout displaying the pizza options. Each pizza option in the menu has a button that can be used to order a pizza. The command button sends a postback message to the bot containing the JSON object with the information for updating the pizzaname variable. 12

13 In response to the user selecting an action button, the custom component updates the pizzaname variable and triggers navigation to the printconfirmation page. If the user does not select from the pizza menu buttons but types a text, then the custom component navigates to the state mapped to the textreceived action, which in the sample is the cancel state. 13

14 Appendix: Sample Data Provider For those wondering how the data source file looks that is used in the sample code for this article. Below is the complete file content of the SampleDataProvider.js file. var data; data = [{ name: "CHEESE", 14

15 description: "Classic marinara sauce topped with whole milk mozzarella cheese.", image: " 340.jpg" { name: "PEPPERONI", description: "Classic marinara sauce with authentic old-world style pepperoni.", image: " 340.jpg" { name: "MEAT LOVER", description: "Classic marinara sauce, authentic old-world pepperoni, all-natural Italian sausage, slow-roasted ham, hardwood smoked bacon, seasoned pork and beef.", image: " 340.jpg" { name: "SUPREME", description: "Classic marinara sauce, authentic old-world pepperoni, seasoned pork, beef, fresh mushrooms, fresh green bell peppers and fresh red onions.", image: " 340.jpg" { name: "PREMIUM GARDEN VEGGIE", description: "Premium crushed tomato sauce topped with green peppers, red onions, mushrooms, Roma tomatoes and roasted spinach with our Hut Favorite on the crust.", image: " 340.jpg" { name: "ULTIMATE CHEESE LOVER", description: "Garlic Parmesan sauce topped with 50% more mozzarella cheese with a toasted Parmesan crust.", image: " 340.jpg" { 15

16 name: "HAWAIIAN CHICKEN", description: "Grilled chicken, ham, pineapple and green bell peppers.", image: " 340.jpg" { name: "BACON SPINACH ALFREDO", description: "Garlic Parmesan sauce topped with bacon, mushrooms and roasted spinach ' with a salted pretzel crust.", image: " 340.jpg" ]; //expose this data a module module.exports = { ; // return data array data: () => (data) 16

Oracle Digital Assistant: Strategies for Escaping the Validation Loop

Oracle Digital Assistant: Strategies for Escaping the Validation Loop Oracle Digital Assistant TechExchange Article. Oracle Digital Assistant: Strategies for Escaping the Validation Loop Frank Nimphius, February 2019 Dialog flows in Oracle Digital Assistant intelligently

More information

Oracle Bots Nodes.js SDK: Controlling Smart Homes Using IFTTT Applets with Oracle Digital Assistant

Oracle Bots Nodes.js SDK: Controlling Smart Homes Using IFTTT Applets with Oracle Digital Assistant Oracle Digital Assistant TechExchange Article. Oracle Bots Nodes.js SDK: Controlling Smart Homes Using IFTTT Applets with Oracle Digital Assistant Stefan Wörmcke, February 2019 Digital assistants like

More information

Running and Debugging Custom Components Locally

Running and Debugging Custom Components Locally Oracle Intelligent Bots TechExchange Sample. Running and Debugging Custom Components Locally Martin Deh, May 2018 With Oracle Intelligent Bots, each state in the dialog flow invokes a component to perform

More information

Article. Building Single Base-Language Bots. Oracle Intelligent Bots TechExchange. Frank Nimphius, Marcelo Jabali - April 2018

Article. Building Single Base-Language Bots. Oracle Intelligent Bots TechExchange. Frank Nimphius, Marcelo Jabali - April 2018 Oracle Intelligent Bots TechExchange Article. Building Single Base-Language Bots Frank Nimphius, Marcelo Jabali - April 2018 Contributors: Grant Ronald, Dan Nguyen, Martin Cookson, Tamer Qumhieh, Linus

More information

Merging Data From Spreadsheets to or Documents

Merging Data From Spreadsheets to  or Documents Merging Data From Spreadsheets to E-mail or Documents Sometimes you have a list of data such as addresses that you want to be able to format in a document without having to reformat or retype the data

More information

ADF Code Corner Implementing auto suggest functionality in ADF Faces. Abstract:

ADF Code Corner Implementing auto suggest functionality in ADF Faces. Abstract: ADF Code Corner 004. Implementing auto suggest functionality in ADF Faces Abstract: No component represents Ajax and the Web 2.0 idea more than the auto suggest component. Auto suggest, or auto complete

More information

Lab 3 - Pizza. Purpose. Assignment

Lab 3 - Pizza. Purpose. Assignment Lab 3 - Pizza Purpose To assess your ability to apply the knowledge and skills developed in weeks 1 through 9. Emphasis will be placed on the following learning outcomes: 1. Create syntactically correct

More information

ADF Mobile Code Corner

ADF Mobile Code Corner ADF Mobile Code Corner m03. Abstract: A requirement in software development is to conditionally enable/disable or show/hide UI. Usually, to accomplish this, you dynamically look-up a UI component to change

More information

ADF Code Corner How-to bind custom declarative components to ADF. Abstract: twitter.com/adfcodecorner

ADF Code Corner How-to bind custom declarative components to ADF. Abstract: twitter.com/adfcodecorner ADF Code Corner 005. How-to bind custom declarative components to ADF Abstract: Declarative components are reusable UI components that are declarative composites of existing ADF Faces Rich Client components.

More information

ADF Mobile Code Corner

ADF Mobile Code Corner ADF Mobile Code Corner m03. Abstract: Dependent lists is a common functional requirement for web, desktop and also mobile applications. You can build dependent lists from dependent, nested, and from independent,

More information

ADF Mobile Code Corner

ADF Mobile Code Corner ADF Mobile Code Corner m07. Abstract: A common user interaction with an edit form is to cancel data changes so the original data are reset and displayed. With ADF Mobile and the POJO data control this

More information

Using Apache FreeMarker Template Language in BotML

Using Apache FreeMarker Template Language in BotML Oracle Intelligent Bots TechExchange Article. Using Apache FreeMarker Template Language in BotML Frank Nimphius, January 2018 As a bot designer, how do you deal with the problem of users providing a "Yes"

More information

Oracle APEX 18.1 New Features

Oracle APEX 18.1 New Features Oracle APEX 18.1 New Features May, 2018 Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated

More information

ADF Code Corner How-to launch a popup upon rendering of a page fragment in a region using JSF 2. Abstract: twitter.

ADF Code Corner How-to launch a popup upon rendering of a page fragment in a region using JSF 2. Abstract: twitter. ADF Code Corner 108. How-to launch a popup upon rendering of a page Abstract: A common requirement in Oracle ADF is to launch a popup dialog when a page fragment is rendered in a region. In JDeveloper

More information

Instructions for Using the DAILY COOK'S SUBSTITUTE MENU

Instructions for Using the DAILY COOK'S SUBSTITUTE MENU Instructions for Using the DAILY COOK'S SUBSTITUTE MENU Revised September, 2006 Several additional menu items have been developed for the three meals. These Daily Cook's Substitute Menus allow you to quickly

More information

Laboratorio di Tecnologie dell'informazione. Ing. Marco Bertini

Laboratorio di Tecnologie dell'informazione. Ing. Marco Bertini Laboratorio di Tecnologie dell'informazione Ing. Marco Bertini bertini@dsi.unifi.it http://www.dsi.unifi.it/~bertini/ Design pattern Factory Some motivations Consider a user interface toolkit to support

More information

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved.

1 Copyright 2011, Oracle and/or its affiliates. All rights reserved. 1 Copyright 2011, Oracle and/or its affiliates. All rights reserved. Fast, but not Furious - ADF Task Flow in 60 Minutes Frank Nimphius, Senior Principal Product Manager Oracle Application Development

More information

ADF Mobile Code Corner

ADF Mobile Code Corner ADF Mobile Code Corner m05. Caching WS queried data local for create, read, update with refresh from DB and offline capabilities Abstract: The current version of ADF Mobile supports three ADF data controls:

More information

News in RSA-RTE CP1

News in RSA-RTE CP1 IBM Software Group News in RSA-RTE 8.5.1 CP1 Mattias Mohlin, April 2013 2013 IBM Corporation Build A C++ External Library TC can now generate the make file to use for building the library from a CDT project

More information

ADF Code Corner. 048-How-to build XML Menu Model based site menus and how to protect them with ADF Security and JAAS. Abstract:

ADF Code Corner. 048-How-to build XML Menu Model based site menus and how to protect them with ADF Security and JAAS. Abstract: ADF Code Corner 048-How-to build XML Menu Model based site menus and Abstract: There are different types of menus you can use within an application: breadcrumbs, to navigate a process within unbounded

More information

ADF Code Corner. 97. How-to defer train-stop navigation for custom form validation or other developer interaction. Abstract: twitter.

ADF Code Corner. 97. How-to defer train-stop navigation for custom form validation or other developer interaction. Abstract: twitter. ADF Code Corner 97. How-to defer train-stop navigation for custom form Abstract: ADF developers can declaratively define a bounded task fow to expose a train model for users to navigate between views.

More information

MASTER-DETAIL FORMS. In this Chapter, you will learn about: Master-Detail Forms Page 108

MASTER-DETAIL FORMS. In this Chapter, you will learn about: Master-Detail Forms Page 108 CHAPTER 4 MASTER-DETAIL FORMS CHAPTER OBJECTIVES In this Chapter, you will learn about: Master-Detail Forms Page 108 In the previous Chapters, you created and worked with forms that had only one base-table

More information

Using SQL Developer. Oracle University and Egabi Solutions use only

Using SQL Developer. Oracle University and Egabi Solutions use only Using SQL Developer Objectives After completing this appendix, you should be able to do the following: List the key features of Oracle SQL Developer Identify menu items of Oracle SQL Developer Create a

More information

Language Basics. /* The NUMBER GAME - User tries to guess a number between 1 and 10 */ /* Generate a random number between 1 and 10 */

Language Basics. /* The NUMBER GAME - User tries to guess a number between 1 and 10 */ /* Generate a random number between 1 and 10 */ Overview Language Basics This chapter describes the basic elements of Rexx. It discusses the simple components that make up the language. These include script structure, elements of the language, operators,

More information

Task #1 The if Statement, Comparing Strings, and Flags

Task #1 The if Statement, Comparing Strings, and Flags Chapter 3 Lab Selection Control Structures Lab Objectives Be able to construct boolean expressions to evaluate a given condition Be able to compare Strings Be able to use a flag Be able to construct if

More information

SCRIPT REFERENCE. UBot Studio Version 4. The UI Commands

SCRIPT REFERENCE. UBot Studio Version 4. The UI Commands SCRIPT REFERENCE UBot Studio Version 4 The UI Commands UI Text Box This command creates a field in the UI area at the top of the browser. Drag the command from the toolbox into the scripting area. In the

More information

QuickStart Guide 4 - Merge

QuickStart Guide 4 - Merge QuickStart Guide 4 - Merge Document Version: v1.0 Product Version: v2.x Date: 13 th May 2017 This document provides an overview and Step-by-Step implementation instructions for the clearmdm Merge MDM operation.

More information

MyEclipse ER-Designer Quickstart

MyEclipse ER-Designer Quickstart MyEclipse ER-Designer Quickstart Last Revision: Outline 1. Preface 2. Requirements 3. Introduction 4. Creating an ER Diagram from a Database 5. Working with an Entity-Relationship Diagram 1. Notation and

More information

TRAINING GUIDE. ArcGIS Online and Lucity

TRAINING GUIDE. ArcGIS Online and Lucity TRAINING GUIDE ArcGIS Online and Lucity ArcGIS Online and Lucity This covers some basic functionality we feel you will need to be successful with Lucity with ArcGIS Online or Portal for ArcGIS Enterprise.

More information

GeneXus for Smart Devices course - Architecture of Smart Device Applications

GeneXus for Smart Devices course - Architecture of Smart Device Applications GeneXus for Smart Devices course - Architecture of Smart Device Applications The problem to solve is the construction of a backend for a real estate office, with a web section and another section for smart

More information

CANVASES AND WINDOWS

CANVASES AND WINDOWS CHAPTER 8 CANVASES AND WINDOWS CHAPTER OBJECTIVES In this Chapter, you will learn about: Canvas and Window Concepts Page 262 Content Canvases and Windows Page 277 Stacked Canvases Page 287 Toolbar Canvases

More information

Creating a REST API which exposes an existing SOAP Service with IBM API Management

Creating a REST API which exposes an existing SOAP Service with IBM API Management Creating a REST API which exposes an existing SOAP Service with IBM API Management 4.0.0.0 2015 Copyright IBM Corporation Page 1 of 33 TABLE OF CONTENTS OBJECTIVE...3 PREREQUISITES...3 CASE STUDY...4 USER

More information

Rich Web UI made simple Building Data Dashboards without Code

Rich Web UI made simple Building Data Dashboards without Code Rich Web UI made simple Building Data Dashboards without Code Dana Singleterry http://blogs.oracle.com/dana Product Manager Oracle JDeveloper and Oracle ADF 2 Copyright 2012, Oracle and/or its affiliates.

More information

Chapter 3 Lab Decision Structures

Chapter 3 Lab Decision Structures Chapter 3 Lab Decision Structures Lab Objectives Be able to construct boolean expressions to evaluate a given condition Be able to compare String objects Be able to use a flag Be able to construct if and

More information

Chatbot Framework. Overview. Installation. Getting Started

Chatbot Framework. Overview. Installation. Getting Started Chatbot Framework Overview Chatbot framework is available as a gadget in Business Console. It is a new framework for building a user interface that is conversational, and which uses the machine learning

More information

SEO According to Google

SEO According to Google SEO According to Google An On-Page Optimization Presentation By Rachel Halfhill Lead Copywriter at CDI Agenda Overview Keywords Page Titles URLs Descriptions Heading Tags Anchor Text Alt Text Resources

More information

(Refer Slide Time: 01:40)

(Refer Slide Time: 01:40) Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #25 Javascript Part I Today will be talking about a language

More information

Navigating and Managing Files and Folders in Windows XP

Navigating and Managing Files and Folders in Windows XP Part 1 Navigating and Managing Files and Folders in Windows XP In the first part of this book, you ll become familiar with the Windows XP Home Edition interface and learn how to view and manage files,

More information

OALCF Tasks for the Apprenticeship Goal Path: Prepared for the Project,

OALCF Tasks for the Apprenticeship Goal Path: Prepared for the Project, Learner Name: OALCF Task Cover Sheet Date Started: Date Completed: Successful Completion: Yes No Goal Path: Employment Apprenticeship Secondary School Post Secondary Independence Task Description: Use

More information

Manipulating Database Objects

Manipulating Database Objects Manipulating Database Objects Purpose This tutorial shows you how to manipulate database objects using Oracle Application Express. Time to Complete Approximately 30 minutes. Topics This tutorial covers

More information

Chapter 9. Web Applications The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill

Chapter 9. Web Applications The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Chapter 9 Web Applications McGraw-Hill 2010 The McGraw-Hill Companies, Inc. All rights reserved. Chapter Objectives - 1 Explain the functions of the server and the client in Web programming Create a Web

More information

NetAdvantage for ASP.NET Release Notes

NetAdvantage for ASP.NET Release Notes NetAdvantage for ASP.NET 2013.1 Release Notes Accelerate your application development with ASP.NET AJAX controls built on the Aikido Framework to be the fastest, lightest and most complete toolset for

More information

PHP Syntax. PHP is a great example of a commonly-used modern programming language.

PHP Syntax. PHP is a great example of a commonly-used modern programming language. PHP is a great example of a commonly-used modern programming language. C was first released in 1972, PHP in 1995. PHP is an excellent language choice for software that requires an easy way to do things

More information

Oracle BPM 10g R3 Programming 1 Essentials

Oracle BPM 10g R3 Programming 1 Essentials Oracle BPM 10g R3 Programming 1 Essentials Volume I Student Guide D55633GC10 Edition 1.0 March 2009 D58927 Authors Jill Moritz Kenny Somerville Technical Contributors and Reviewers Fernando Dobladez Carolina

More information

Reference Guide Novell Vibe Cloud Wave Gadgets API Reference Guide

Reference Guide Novell Vibe Cloud Wave Gadgets API Reference Guide Reference Guide www.novell.com Novell Vibe Cloud Wave Gadgets API Reference Guide W a v e G a d g e t s A P I R e f e r e n c e Novell Vibe supports the Wave Gadgets API. This is the reference for the

More information

UWP Working with Navigation

UWP Working with Navigation UWP-019 - Working with Navigation Up until now we've only created apps with a single Page, the MainPage.XAML, and while that's fine for simple apps. However, it s likely that you will need to add additional

More information

The NoPlsql and Thick Database Paradigms

The NoPlsql and Thick Database Paradigms The NoPlsql and Thick Database Paradigms Part 2: Adopting ThickDB Toon Koppelaars Real-World Performance Oracle Server Technologies Bryn Llewellyn Distinguished Product Manager Oracle Server Technologies

More information

User's Guide c-treeace SQL Explorer

User's Guide c-treeace SQL Explorer User's Guide c-treeace SQL Explorer Contents 1. c-treeace SQL Explorer... 4 1.1 Database Operations... 5 Add Existing Database... 6 Change Database... 7 Create User... 7 New Database... 8 Refresh... 8

More information

Report Designer Report Types Table Report Multi-Column Report Label Report Parameterized Report Cross-Tab Report Drill-Down Report Chart with Static

Report Designer Report Types Table Report Multi-Column Report Label Report Parameterized Report Cross-Tab Report Drill-Down Report Chart with Static Table of Contents Report Designer Report Types Table Report Multi-Column Report Label Report Parameterized Report Cross-Tab Report Drill-Down Report Chart with Static Series Chart with Dynamic Series Master-Detail

More information

Oracle WebCenter Suite Integrating Secure Enterprise Search

Oracle WebCenter Suite Integrating Secure Enterprise Search Oracle WebCenter Suite Integrating Secure Enterprise Search An Oracle White Paper January 2007 Oracle WebCenter Suite Integrating Secure Enterprise Search INTRODUCTION As organizations continually reinvent

More information

<Insert Picture Here> Advanced ADF Faces. Frank Nimphius Principal Product Manager

<Insert Picture Here> Advanced ADF Faces. Frank Nimphius Principal Product Manager Advanced ADF Faces Frank Nimphius Principal Product Manager 1 Agenda "Must See" Introduction ADF Faces Table and Tree Active Data Services JavaScript Drag and Drop Declarative s Agenda "Must See" Introduction

More information

USER GUIDE MADCAP FLARE WebHelp

USER GUIDE MADCAP FLARE WebHelp USER GUIDE MADCAP FLARE 2018 WebHelp Copyright 2018 MadCap Software. All rights reserved. Information in this document is subject to change without notice. The software described in this document is furnished

More information

ADF OAF Who Cares? You Do! Oracle Applications Framework / Application Development Framework - Which way do I go?

ADF OAF Who Cares? You Do! Oracle Applications Framework / Application Development Framework - Which way do I go? ADF OAF Who Cares? You Do! Oracle Applications Framework / Application Development Framework - Which way do I go? 2 Introductions Who am I and why am I here? Audience: Development Management OAF Developers

More information

EMARSYS FOR MAGENTO 2

EMARSYS FOR MAGENTO 2 EMARSYS FOR MAGENTO 2 Integration Manual July 2017 Important Note: This PDF was uploaded in July, 2017 and will not be maintained. For the latest version of this manual, please visit our online help portal:

More information

Highlight the s address (example: and go to the top of the page and click on Insert

Highlight the  s address (example: and go to the top of the page and click on Insert Contents Linking an email address... 2 LINK AN IMAGE... 2 TO LINK TO A DOCUMENT... 3 How to update the Quick Links.... 6 Changing out a Quick link.... 9 LINKS Linking an email address Highlight the emails

More information

INF5750. Introduction to JavaScript and Node.js

INF5750. Introduction to JavaScript and Node.js INF5750 Introduction to JavaScript and Node.js Outline Introduction to JavaScript Language basics Introduction to Node.js Tips and tools for working with JS and Node.js What is JavaScript? Built as scripting

More information

MadCap Software. WebHelp Guide. Flare 2017 r2

MadCap Software. WebHelp Guide. Flare 2017 r2 MadCap Software WebHelp Guide Flare 2017 r2 Copyright 2017 MadCap Software. All rights reserved. Information in this document is subject to change without notice. The software described in this document

More information

IN PRACTICE. Daniele Bochicchio Stefano Mostarda Marco De Sanctis. Includes 106 practical techniques MANNING

IN PRACTICE. Daniele Bochicchio Stefano Mostarda Marco De Sanctis. Includes 106 practical techniques MANNING IN PRACTICE Daniele Bochicchio Stefano Mostarda Marco De Sanctis Includes 106 practical techniques MANNING contents preface xv acknowledgments xvii about this book xix about the authors xxiii about the

More information

Premium POS Pizza Order Entry Module. Introduction and Tutorial

Premium POS Pizza Order Entry Module. Introduction and Tutorial Premium POS Pizza Order Entry Module Introduction and Tutorial Overview The premium POS Pizza module is a replacement for the standard order-entry module. The standard module will still continue to be

More information

ADF Code Corner How-to enforce LOV Query Filtering. Abstract: twitter.com/adfcodecorner

ADF Code Corner How-to enforce LOV Query Filtering. Abstract: twitter.com/adfcodecorner ADF Code Corner 107. How-to enforce LOV Query Filtering Abstract: A question on OTN was about how-to restrict queries in a LOV dialog to avoid unfiltered and expensive queries. For this at least one of

More information

08/10/2018. Istanbul Now Platform User Interface

08/10/2018. Istanbul Now Platform User Interface 08/10/2018 Contents Contents...5 UI16... 9 Comparison of UI16 and UI15 styles... 11 Activate UI16... 15 Switch between UI16 and UI15...15 UI16 application navigator... 16 System settings for the user

More information

Oracle Fusion Middleware 11g: Build Applications with ADF Accel

Oracle Fusion Middleware 11g: Build Applications with ADF Accel Oracle University Contact Us: +352.4911.3329 Oracle Fusion Middleware 11g: Build Applications with ADF Accel Duration: 5 Days What you will learn This is a bundled course comprising of Oracle Fusion Middleware

More information

ECM Extensions xcp 2.2 xcelerator Abstract

ECM Extensions xcp 2.2 xcelerator Abstract ECM Extensions xcp 2.2 xcelerator Abstract These release notes outline how to install and use the ECM Extensions xcelerator. October 2015 Version 1.0 Copyright 2015 EMC Corporation. All Rights Reserved.

More information

ADF Code Corner. 71. How-to integrate Java Applets with Oracle ADF Faces. Abstract: twitter.com/adfcodecorner

ADF Code Corner. 71. How-to integrate Java Applets with Oracle ADF Faces. Abstract: twitter.com/adfcodecorner ADF Code Corner 71. How-to integrate Java Applets with Oracle ADF Faces Abstract: Oracle ADF Faces contains a JavaScript client framework that developers can use to integrate 3 rd party technologies like

More information

Oracle Developer Day

Oracle Developer Day Oracle Developer Day Sponsored by: J2EE Track: Session #3 Developing JavaServer Faces Applications Name Title Agenda Introduction to JavaServer Faces What is JavaServer Faces Goals Architecture Request

More information

ADF Hands-On. Understanding Task Flow Activities / 2011 ADF Internal Enterprise 2.0 Training. Abstract:

ADF Hands-On. Understanding Task Flow Activities / 2011 ADF Internal Enterprise 2.0 Training. Abstract: ADF Hands-On Understanding Task Flow Activities Abstract: In this hands-on you create a bounded task flows to run as an ADF Region in an ADF Faces page. Within this hands-on you create and use the following

More information

R12.x Oracle E-Business Suite Personalizations

R12.x Oracle E-Business Suite Personalizations Oracle University Contact Us: +966 12 739 894 Ð R12.x Oracle E-Business Suite Personalizations Duration: 5 Days What you will learn In this course you will learn how to personalize the rich and upgradable

More information

Implementing a Numerical Data Access Service

Implementing a Numerical Data Access Service Implementing a Numerical Data Access Service Andrew Cooke October 2008 Abstract This paper describes the implementation of a J2EE Web Server that presents numerical data, stored in a database, in various

More information

Creating Buttons and Pop-up Menus

Creating Buttons and Pop-up Menus Using Fireworks CHAPTER 12 Creating Buttons and Pop-up Menus 12 In Macromedia Fireworks 8 you can create a variety of JavaScript buttons and CSS or JavaScript pop-up menus, even if you know nothing about

More information

Remote Tracker Documentation

Remote Tracker Documentation Remote Tracker Documentation Table of Contents Design... 2 Directory Structure... 2 Deploying the Application... 3 Editing the Remote Tracker web.config File... 6 Editing the Tracker.Net web.config File...

More information

Configure App Service Authentication for Your Azure Web App

Configure App Service Authentication for Your Azure Web App Azure Web App Security Labs Page 1 of 12 Configure App Service Authentication for Your Azure Web App Introduction This lab is part of a series. This second lab will show you how to set up Azure App Service

More information

GSA QMAC. Transportation Service Provider (TSP) TransPort Integrator User Guide. TransPort Integrator Service. Version 3.0

GSA QMAC. Transportation Service Provider (TSP) TransPort Integrator User Guide. TransPort Integrator Service. Version 3.0 GSA QMAC TransPort Integrator Service Transportation Service Provider (TSP) TransPort Integrator User Guide Version 3.0 Change Log Version # Date of Change Section Description of Change Changed By 1.0

More information

USER GUIDE MADCAP FLARE Accessibility

USER GUIDE MADCAP FLARE Accessibility USER GUIDE MADCAP FLARE 2018 Accessibility Copyright 2018 MadCap Software. All rights reserved. Information in this document is subject to change without notice. The software described in this document

More information

Nintex Forms 2010 Help

Nintex Forms 2010 Help Nintex Forms 2010 Help Last updated: Monday, April 20, 2015 1 Administration and Configuration 1.1 Licensing settings 1.2 Activating Nintex Forms 1.3 Web Application activation settings 1.4 Manage device

More information

ADF Code Corner How-to show a glasspane and splash screen for long running queries. Abstract: twitter.com/adfcodecorner

ADF Code Corner How-to show a glasspane and splash screen for long running queries. Abstract: twitter.com/adfcodecorner ADF Code Corner 027. How-to show a glasspane and splash screen for long Abstract: Application users are known to be impatient when waiting for a task to be completed. To avoid users pressing a command

More information

JScript Reference. Contents

JScript Reference. Contents JScript Reference Contents Exploring the JScript Language JScript Example Altium Designer and Borland Delphi Run Time Libraries Server Processes JScript Source Files PRJSCR, JS and DFM files About JScript

More information

QuickStart Guide 2 - Normalisation

QuickStart Guide 2 - Normalisation QuickStart Guide 2 - Normalisation Document Version: v1.4 Product Version: v2.26 Date: 14 th April 2018 This document provides an overview and Step-by-Step implementation instructions for the clearmdm

More information

Rio Maining Dining Hall menu

Rio Maining Dining Hall menu Rotation Day Fruit juice NB. Juice as per Coca Cola Milk Whole Fat Milk x x x x x x x x Fat Free Milk x x x x x x x x Soy Milk x x x x x x x x Rice Milk x x x x x x x x Teas Mate tea x x x x x x x x Green

More information

Cannot Create Index On View 'test' Because

Cannot Create Index On View 'test' Because Cannot Create Index On View 'test' Because The View Is Not Schema Bound Cannot create index on view AdventureWorks2012.dbo.viewTestIndexedView because it uses a LEFT, RIGHT, or FULL OUTER join, and no

More information

allergen Main menu Starters & Salads HOUSE PICKLES TEAR & SHARE PRETZEL BREAD POPCORN SQUID GLAZED SPARE RIBS CORN CHIPS & SPIN DIP

allergen Main menu Starters & Salads HOUSE PICKLES TEAR & SHARE PRETZEL BREAD POPCORN SQUID GLAZED SPARE RIBS CORN CHIPS & SPIN DIP Starters & Salads OUSE PICKLES TEAR & SARE PRETZEL BREAD POPCORN SQUID GLAZED SPARE RIBS E Mus SO2 Alc in Gar Oni Glt Milk Egg Mus Alc Gar Milk Egg Mol SO2 in Gar Glt Fish Soy SO2 Alc in Gar Oni CORN CIPS

More information

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting Slide 1: Cover Welcome to lesson 3 of the db2 on Campus lecture series. Today we're going to talk about tools and scripting, and this is part 1 of 2

More information

BCI.com Sitecore Publishing Guide. November 2017

BCI.com Sitecore Publishing Guide. November 2017 BCI.com Sitecore Publishing Guide November 2017 Table of contents 3 Introduction 63 Search 4 Sitecore terms 66 Change your personal settings 5 Publishing basics 5 Log in to Sitecore Editing 69 BCI.com

More information

ADF Code Corner. 65. Active Data Service Sample Twitter Client. Abstract: twitter.com/adfcodecorner

ADF Code Corner. 65. Active Data Service Sample Twitter Client. Abstract: twitter.com/adfcodecorner ADF Code Corner 65. Active Data Service Sample Twitter Client Abstract: Active Data Service is a push event framework in Oracle ADF Faces that allows developers to implement real time server to client

More information

CLIL-6-PHP-6. Arrays - part 1. So far we've looked at the basic variables types such as strings and integers, as

CLIL-6-PHP-6. Arrays - part 1. So far we've looked at the basic variables types such as strings and integers, as Arrays - part 1 Introduction So far we've looked at the basic variables types such as strings and integers, as well as a variety of functions you can use to manipulate these data types. Beyond the basic

More information

Figaro s Italian Pizza Presents A Quick Reference Guide on How-To in MENU DESIGNER

Figaro s Italian Pizza Presents A Quick Reference Guide on How-To in MENU DESIGNER Figaro s Italian Pizza Presents A Quick Reference Guide on How-To in MENU DESIGNER FOREWORD This guide is not intended to be an exclusive manual on how to learn or how to use Speedline Menu Designer. The

More information

Introduction to JavaScript p. 1 JavaScript Myths p. 2 Versions of JavaScript p. 2 Client-Side JavaScript p. 3 JavaScript in Other Contexts p.

Introduction to JavaScript p. 1 JavaScript Myths p. 2 Versions of JavaScript p. 2 Client-Side JavaScript p. 3 JavaScript in Other Contexts p. Preface p. xiii Introduction to JavaScript p. 1 JavaScript Myths p. 2 Versions of JavaScript p. 2 Client-Side JavaScript p. 3 JavaScript in Other Contexts p. 5 Client-Side JavaScript: Executable Content

More information

JavaScript: More Syntax

JavaScript: More Syntax JavaScript: More Syntax CISC 282 October 23, 2018 null and undefined What s the difference? null is synonymous with nothing i.e., no value, nothing there undefined is synonymous with the unknown i.e.,

More information

Creating a REST API which exposes an existing SOAP Service with IBM API Management

Creating a REST API which exposes an existing SOAP Service with IBM API Management Creating a REST API which exposes an existing SOAP Service with IBM API Management 3.0.0.1 Page 1 of 29 TABLE OF CONTENTS OBJECTIVE...3 PREREQUISITES...3 CASE STUDY...3 USER ROLES...4 BEFORE YOU BEGIN...4

More information

Preface 7. 1 Introduction to OpenUI5 9

Preface 7. 1 Introduction to OpenUI5 9 TABLE OF CONTENTS Table of Contents Preface 7 1 Introduction to OpenUI5 9 2 OpenUI5 Getting started 13 2.1 Libraries in OpenUI5 13 2.2 OpenUI5 development environment 14 2.3 Eclipse installation 15 2.4

More information

Tableau Automation Starter Kit:

Tableau Automation Starter Kit: Tableau Automation Starter Kit: Leveraging Tableau s Webhooks to automate and integrate your data across your SaaS apps Hello Data Rockstars! The purpose of this guide is to help you set up Webhooks with

More information

Oracle User Productivity Kit Content Player

Oracle User Productivity Kit Content Player Oracle User Productivity Kit Content Player Oracle User Productivity Kit Content Player Copyright 1998, 2012, Oracle and/or its affiliates. All rights reserved. Oracle and Java are registered trademarks

More information

Concept - first iteration DAM 2.0 & CMIS

Concept - first iteration DAM 2.0 & CMIS Concept - first iteration DAM 2.0 & CMIS CAUTION: this page simply describes the ideas and discussion of the first iteration of the DAM 2.0 & CMIS implementation effort. Some things are still up to date

More information

Ignite UI Release Notes

Ignite UI Release Notes Ignite UI 2013.1 Release Notes Create the best Web experiences in browsers and devices with our user interface controls designed expressly for jquery, ASP.NET MVC, HTML 5 and CSS 3. You ll be building

More information

Oracle. Engagement Cloud Using Service Request Management. Release 12

Oracle. Engagement Cloud Using Service Request Management. Release 12 Oracle Engagement Cloud Release 12 Oracle Engagement Cloud Part Number E73284-05 Copyright 2011-2017, Oracle and/or its affiliates. All rights reserved. Author: Joseph Kolb This software and related documentation

More information

ORIGINAL FAMOUS RAY S HELL BURGER

ORIGINAL FAMOUS RAY S HELL BURGER OUR SPECIAL COMBOS LITTLE DEVIL/ BIG DEVIL Bacon, Swiss Cheese, Sautéed Mushrooms, and Grilled Onions American Cheese, Beefsteak Tomato, Lettuce, Pickle, and Red Onion Au Poivre Burger, Aged Danish Bleu

More information

Oracle Adapter for Salesforce Lightning Winter 18. What s New

Oracle Adapter for Salesforce Lightning Winter 18. What s New Oracle Adapter for Salesforce Lightning Winter 18 What s New TABLE OF CONTENTS REVISION HISTORY... 3 OVERVIEW... 4 RELEASE FEATURE SUMMARY... 5 PRE-UPGRADE CONSIDERATIONS... 6 POST-UPGRADE REQUIREMENTS...

More information

CREATING A REPORT TEMPLATE TO USE IN MAGICDRAW user guide

CREATING A REPORT TEMPLATE TO USE IN MAGICDRAW user guide CREATING A REPORT TEMPLATE TO USE IN MAGICDRAW 18.2 user guide No Magic, Inc. 2015 All material contained herein is considered proprietary information owned by No Magic, Inc. and is not to be shared, copied,

More information

OnCrawl Metrics. What SEO indicators do we analyze for you? Dig into our board of metrics to find the one you are looking for.

OnCrawl Metrics. What SEO indicators do we analyze for you? Dig into our board of metrics to find the one you are looking for. 1 OnCrawl Metrics What SEO indicators do we analyze for you? Dig into our board of metrics to find the one you are looking for. UNLEASH YOUR SEO POTENTIAL Table of content 01 Crawl Analysis 02 Logs Monitoring

More information

Advanced Input Help - The Object Value Selector (OVS)

Advanced Input Help - The Object Value Selector (OVS) Advanced Input Help - The Object Value Selector (OVS) SAP NetWeaver 04 Copyright Copyright 2004 SAP AG. All rights reserved. No part of this publication may be reproduced or transmitted in any form or

More information

12/05/2017. Geneva ServiceNow Custom Application Development

12/05/2017. Geneva ServiceNow Custom Application Development 12/05/2017 Contents...3 Applications...3 Creating applications... 3 Parts of an application...22 Contextual development environment... 48 Application management... 56 Studio... 64 Service Creator...87

More information