How-to Build Card Layout Responses from Custom Components
|
|
- Stephanie Holland
- 5 years ago
- Views:
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 TechExchange Article. Oracle Digital Assistant: Strategies for Escaping the Validation Loop Frank Nimphius, February 2019 Dialog flows in Oracle Digital Assistant intelligently
More informationOracle 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 informationRunning 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 informationArticle. 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 informationMerging 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 informationADF 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 informationLab 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 informationADF 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 informationADF 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 informationADF 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 informationADF 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 informationUsing 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 informationOracle 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 informationADF 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 informationInstructions 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 informationLaboratorio 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 information1 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 informationADF 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 informationNews 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 informationADF 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 informationADF 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 informationMASTER-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 informationUsing 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 informationLanguage 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 informationTask #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 informationSCRIPT 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 informationQuickStart 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 informationMyEclipse 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 informationTRAINING 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 informationGeneXus 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 informationCANVASES 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 informationCreating 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 informationRich 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 informationChapter 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 informationChatbot 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 informationSEO 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)
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 informationNavigating 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 informationOALCF 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 informationManipulating 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 informationChapter 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 informationNetAdvantage 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 informationPHP 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 informationOracle 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 informationReference 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 informationUWP 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 informationThe 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 informationUser'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 informationReport 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 informationOracle 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
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 informationUSER 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 informationADF 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 informationEMARSYS 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 informationHighlight 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 informationINF5750. 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 informationMadCap 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 informationIN 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 informationPremium 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 informationADF 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 information08/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 informationOracle 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 informationECM 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 informationADF 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 informationOracle 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 informationADF 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 informationR12.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 informationImplementing 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 informationCreating 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 informationRemote 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 informationConfigure 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 informationGSA 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 informationUSER 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 informationNintex 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 informationADF 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 informationJScript 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 informationQuickStart 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 informationRio 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 informationCannot 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 informationallergen 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 informationLesson 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 informationBCI.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 informationADF 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 informationCLIL-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 informationFigaro 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 informationIntroduction 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 informationJavaScript: 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 informationCreating 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 informationPreface 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 informationTableau 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 informationOracle 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 informationConcept - 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 informationIgnite 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 informationOracle. 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 informationORIGINAL 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 informationOracle 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 informationCREATING 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 informationOnCrawl 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 informationAdvanced 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 information12/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