ODTUG Aggregator ODTUG Blogs http://localhost:8080 Tue, 12 Dec 2017 08:45:17 +0000 http://aggrssgator.com/ Interactive Grid: How to Fix Blank Toolbar DIV http://apexbyg.blogspot.com/2017/12/interactive-grid-how-to-fix-blank.html <div dir="ltr" style="text-align: left;" trbidi="on">One of the best functionalities of the Interactive Grid is declarative master-detail option. That's the reason why I like to use them also in readonly mode. Most of the time I don't need toolbar in detail regions so I turn it off (Region Attributes &gt; Toolbar &gt; Show = No).<br /><br />But, currently (in APEX 5.1.4.00.04 and less) there's little bug that I can't ignore. It's 9px blank div above report headers:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-XERoh2D2eIE/Wi-vT1WdDsI/AAAAAAAAEy4/ochQmT8ht7ITCvsMxehJziGvFoQ6UThZACLcBGAs/s1600/Screen%2BShot%2B2017-12-12%2Bat%2B11.28.09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="794" data-original-width="1600" height="317" src="https://4.bp.blogspot.com/-XERoh2D2eIE/Wi-vT1WdDsI/AAAAAAAAEy4/ochQmT8ht7ITCvsMxehJziGvFoQ6UThZACLcBGAs/s640/Screen%2BShot%2B2017-12-12%2Bat%2B11.28.09.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br />At first I thought that's easy - I'll just use <a href="https://css-tricks.com/almanac/selectors/e/empty/" target="_blank">:empty CSS pseudo selector</a> and hide DIV element with CSS class .a-IG-header: <br /><pre style="background-color: #fbfaf9; border-radius: 2px; border: 1px solid rgb(204, 204, 204); box-shadow: rgb(204, 204, 204) 0px 0px 0.5em inset; box-sizing: border-box; color: #404040; font-family: Menlo, Consolas, mono-space; line-height: 1.5; margin-bottom: 1em !important; overflow: auto; padding: 0.7em 1em; word-wrap: normal;"><code class="language-css" style="background-color: transparent; border-radius: 2px; border: none; box-shadow: none; box-sizing: border-box; color: #333333; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, monospace; line-height: 1.5;">.a-IG-header:empty{<br /> display:none<br />}</code></pre>But that breaks sticky headers when you scroll down. To fix that I had to use different CSS: <br /><pre style="background-color: #fbfaf9; border-radius: 2px; border: 1px solid rgb(204, 204, 204); box-shadow: rgb(204, 204, 204) 0px 0px 0.5em inset; box-sizing: border-box; color: #404040; font-family: Menlo, Consolas, mono-space; line-height: 1.5; margin-bottom: 1em !important; overflow: auto; padding: 0.7em 1em; word-wrap: normal;"><code class="language-css" style="background-color: transparent; border-radius: 2px; border: none; box-shadow: none; box-sizing: border-box; color: #333333; font-family: Consolas, &quot;Andale Mono WT&quot;, &quot;Andale Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Nimbus Mono L&quot;, Monaco, &quot;Courier New&quot;, monospace; line-height: 1.5;">.a-IG-header:empty{<br /> padding:0;<br /> border-bottom:0<br />}</code></pre>If you want to use other regions for master-detail pages take a look at my plugin on <a href="https://apex.world/ords/f?p=100:710:0::::P710_PLG_ID:HR.BILOG.MGORICKI.MASTERDETAIL" target="_blank">apex.world</a>.<br /><br />Demo is available <a href="https://apex.oracle.com/pls/apex/f?p=100309:43" target="_blank">here</a>.<br /><br /><i>Tested on apex.oracle.com (v5.1.4.00.04).</i><br /><br />Enjoy!</div> Marko Gorički tag:blogger.com,1999:blog-1003209687173038896.post-4761763349096247818 Tue Dec 12 2017 05:43:00 GMT-0500 (EST) OBIEE 12c (12.2.1.3) post upgrade challenges - unable to save HTML based dashboard reports http://jaffardba.blogspot.com/2017/12/obiee-12c-12213-post-upgrade-challenges.html <div dir="ltr" style="text-align: left;" trbidi="on">Very recently, an OBIEE v12.2.1.1 upgraded to v12.2.1.3 on an Exalytics machine. Though it wasn't a major upgrade, we had to do it to fix some bugs encountered in v12.2.1.1. For sure, it wasn't a easy walk in the park during the upgrade and post upgrade.<br /><br />I am here to discuss a particular issue we faced post upgrade. This should be interesting.<br /><br />Post upgrade to v12.2.1.3, we heard from the application team that all the reports working perfectly fine, except the dashboard reports with HTML tag unable to save. The below error was thrown when try to save the existing HTML reports:<br /><br />"<span style="-webkit-text-stroke-width: 0px; background-color: #fafafa; color: #003d5b; display: inline !important; float: none; font-family: Tahoma, Verdana, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">You do not currently have sufficient privileges to save a report or dashboard page that contains HTML markup"</span><br /><br />It appeared to be a very generic error, and we tried all the workarounds we found on various websites and Oracle docs. Unfortunately, none of the solution fixed the issues. One of the popular advice is the following:<br /><br /><span style="font-family: &quot;Courier New&quot;, Courier, monospace;"><span style="font-size: x-small;">you need to go and check the HTML markup privileges in Administration. <br /><br /><br />1. Login with OBIEE Admin user, <br />2. Go to Administration link - Manage Privileges, <br />3. Search for "Save Content with HTML Markup" and see if it has necessary privileges. else assign the necessary roles and re-check the issue.&nbsp;</span></span><br /><br />After giving an additional privilege we could save the existing HTML reports. However, still the issue exists when we create a new dashboard report, with HTML tag. This time the below error msg was appeared:<br /><br /><img alt="" height="142" src="data:image/png;base64,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" width="400" /><br /><br />While doing the research we also opened a SR with Oracle support. Luckily, (I mean it), the engineer who assigned this SR was good enough to catch the issue and provide the solution.<br /><br />The engineer tried to simulate the issue on his 12.2.1.3 environment and surprisingly he faced the similar problem. He then contacted the OBIEE development team and reaised the above concerns.<br /><br />A few hours later, he provided us the below workaround, which seems to be a generic solution to the first and second problem we faced. I believe this is a common issue on 12.2.1.3.<br /><br /><table border="0" cellpadding="0" cellspacing="0" style="-webkit-text-stroke-width: 0px; background-color: #fafafa; color: #003d5b; font-family: Tahoma, Verdana, Helvetica, sans-serif; font-size: 11px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; table-layout: fixed; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; width: 100%px; word-spacing: 0px;" summary=""><tbody><tr><td valign="top"><div id="pt1:r1:0:m_region:tHist:1:psl3::c" style="overflow: hidden;"><div class="x1a" id="pt1:r1:0:m_region:tHist:1:pgl12" style="height: 340px; overflow: auto; width: 1103.2px;"><div><br class="Apple-interchange-newline" />Please follow below steps ::<span></span><br /><br />Take a backup of Instanceconfig.xml file, which is located in the following location,<span>&nbsp;</span><br /><br />&lt;obiee_home&gt;/user_projects/domains/bi/config/fmwconfig/biconfig/OBIPS/instanceconfig.xml<span>&nbsp;</span><br /><br />2. Add the following entry under security.<span>&nbsp;</span><br /><br />&lt;Security&gt;<span>&nbsp;</span><br /><br />&lt;CheckUrlFreshness&gt;false&lt;/CheckUrlFreshness&gt;<span>&nbsp;</span><br />&lt;EnableSavingContentWithHTML&gt;true&lt;/EnableSavingContentWithHTML&gt;<span>&nbsp;</span><br /><br />&lt;/Security&gt;<span>&nbsp;</span><br /><br />3. Restart the presentation services with command below ::<span>&nbsp;</span><br /><br />cd /refresh/home/oracle/12c/Oracle_Home/Oracle_Config/bi/bitools/bin <br /><br />./stop.sh -i obips1<span>&nbsp;</span><br /><br />./start.sh -i obips1<span>&nbsp;</span><br /><br />4. Now you will see the "Contains HTML MARK up" in the answers , check it and try to save the report now.<span>&nbsp;</span></div></div></div></td></tr></tbody></table><br />The solution perfectly worked and all HTML dashboard reports were able to save.<br /><br />If you are on OBIEE 12.2.1.3, I strongly recommend you to test the HTML reports, and if you encounter one similar to ours, apply the workaround.<br /><br /><br /><br /></div> The Human Fly tag:blogger.com,1999:blog-19771507.post-8073589915623223147 Mon Dec 11 2017 04:18:00 GMT-0500 (EST) Multi-Cursor Editing with Sublime Text http://rimblas.com/blog/2017/12/multi-cursor-editing-with-sublime-text/ <p>This little question on Twitter prompted me to record this brief video.</p> <blockquote class="twitter-tweet" data-lang="en"> <p lang="pt" dir="ltr">&gt; “multi-cursor edit” &#8230;do tell!? <a href="https://t.co/5UsfqdsuUf">https://t.co/5UsfqdsuUf</a></p> <p>&mdash; Cary Millsap (@CaryMillsap) <a href="https://twitter.com/CaryMillsap/status/939583765919264768?ref_src=twsrc%5Etfw">December 9, 2017</a></p></blockquote> <p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p> <p><iframe width="560" height="315" src="https://www.youtube.com/embed/TzkYk4CdvBk" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe></p> <p>Some useful links:</p> <blockquote class="wp-embedded-content" data-secret="VLWiWz4LAi"><p><a href="http://wphilltech.com/sublime-text-for-oracle-apex-developers/">Sublime Text for Oracle Apex Developers</a></p></blockquote> <p><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" src="http://wphilltech.com/sublime-text-for-oracle-apex-developers/embed/#?secret=VLWiWz4LAi" data-secret="VLWiWz4LAi" width="600" height="338" title="&#8220;Sublime Text for Oracle Apex Developers&#8221; &#8212; W.P. Hill Tech" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br /> http://apextips.blogspot.com/2015/09/compiling-oracle-code-from-atom-text.html</p> Jorge Rimblas http://rimblas.com/blog/?p=934 Sun Dec 10 2017 21:57:14 GMT-0500 (EST) Oracle APEX – Das umfassende Handbuch http://feedproxy.google.com/~r/CC13com/~3/mkGGpurWkwc/ <p>Wie habe ich mich gefreut, als ich von diesem Buch erfahren habe. Die Anzahl deutschsprachiger APEX Literatur ist doch sehr überschaubar. Nachdem ich mich die letzten Wochen darin vertieft habe, schreibe ich diesen Blog mit gemischten Gefühlen.</p> <h3>Titel: <a href="https://www.rheinwerk-verlag.de/oracle-apex_4376/" target="_blank" rel="noopener" class="liexternal"><strong>Oracle APEX &#8211; Das umfassende Handbuch</strong></a><br /> Autor: <b>Jürgen Sieben</b><br /> Verlag: <strong><a href="https://www.rheinwerk-verlag.de/" class="liexternal" target="_blank" rel="noopener">Rheinwerk-Verlag</a></strong><br /> Erscheinungsdatum: <strong>2017</strong><br /> ISBN: <strong>978-3-8362-4530-2</strong><span class="s1"><br /> Seitenzahl: <strong>895</strong></span></h3> <p>Mit fast 900 Seiten handelt es sich um ein Schwergewicht und mit einem Preis von knapp 80 Euro gehört es nicht gerade zu der Literatur, die ich so im vorbeigehen mitnehmen würde. Meine Erfahrungen mit APEX kann ich als umfassend bezeichnen, schließlich habe ich in meinem letzten Job mein Geld damit verdient, Anwendungen in APEX zu entwickeln. Leider ist das schon ein paar Jahre her und die Entwicklung von Apex ist nicht stehen geblieben. Ich kann also sagen, dass ich mich sowohl als Umsteiger, als auch als fortgeschrittenen Anwender bezeichnen würde. Laut Autor soll das Buch aber genauso gut für Einsteiger geeignet sein.</p> <div id="attachment_882" style="width: 160px" class="wp-caption aligncenter"><a href="https://www.rheinwerk-verlag.de/oracle-apex_4376/" class="liimagelink"><img class="size-thumbnail wp-image-882" src="http://www.cc13.com/wordpress_21/wp-content/uploads/2017/12/9783836245302_267-150x150.png" alt="Oracle Apex - Das umfassende Handbuch" width="150" height="150" /></a><p class="wp-caption-text">Oracle APEX &#8211; Das umfassende Handbuch</p></div> <p>Und da fangen meine Zweifel an. Jemand, der noch nie mit Apex gearbeitet hat, wird den einen oder anderen Screenshot im Text vermissen, um sich orientieren zu können. Stattdessen arbeitet der Autor mit sogenannten &#8222;Treffpunkten&#8220;. Diese sollen wiederholenden Text im Buch vermeiden und werden am Ende des Buches in einem Überblick zusammengefasst. Das es auch anders und meiner Meinung nach besser geht, zeigen die PDF-Dateien, die der Autor als Download zum Buch bereitstellt. Dort ist jeder Schritt mit einem beschreibenden Screenshot aufgeführt.</p> <p>Für den Leser, der den Downloadlink zu den Beispielen und den erwähnten PDF-Dateien im Buch vermisst, er ist auf der Buch-Seite des Verlages zu finden. Weshalb nicht prominent im Buch, z.B. auf dem Außencover? Für die nächste Auflage sollte der Autor noch einmal die im Buch und in der Realität verwenden View-Namen vergleichen. Es hat sich so manche Ungleichheit eingeschlichen (z.B. Buch Seite 165: EMP_UI_HOME_EMP_COUNT, Realität: EMP_UI_HOME_COUNT). Oder ein Typo auf Seite 188 (P4_DEP_Filter). Ebenso sollte der Leser ein paar Grundkenntnisse für Oracle Datenbanken mitbringen. Der Autor geht dafür zu wenig auf evtl. auftretende Fehler oder die Einrichtung der Datenbank/Benutzer ein. Um mit dem Buch und den Beispielen arbeiten zu können, liegen im Download-Paket Skripte bereit, die auf der Datenbank ausgeführt, eine fertige Umgebung bereitstellen.</p> <p>Aber genug der Kritik. Mit dem Buch bekommt der Leser eine Lektüre an die Hand, die dazu einlädt, direkt loszulegen und erste Ergebnisse werden nicht lange auf sich warten lassen. Nebenbei erfährt man ein paar Best Practice (z.B. Namenskonventionen, reichhaltige Verwendung von Views, Code in der Datenbank) vom Autor, die auf eine lange Erfahrung zurückzuführen sind.</p> <p>Während der erste Teil &#8222;Basics&#8220; eine gute Einführung mit einer kleinen Mitarbeiteranwendung startet, der zweite Teile &#8222;APEX im Detail&#8220; den Leser Informationen zu &#8222;Anwendungsseiten, Regionen, Seitenprozessen, Berichten, Grafiken und Charts, Dynamischen Aktionen&#8220; vermittelt, geht es im dritten Teil &#8222;Fortgeschrittene APEX-Konzepte&#8220; mit &#8222;Plugins, Webservices, Mobiler Entwicklung, APEX-Administration, Sicherheit&#8220; schon sehr speziell zu.</p> <p>Zusammenfassend sei gesagt, das Buch liest man nicht mal so nebenbei. Und als Nachschlagewerk dient es eher weniger. Wenn man aber die Beispiele direkt selber ausprobiert und sich durch die Eigenheiten der &#8222;Treffpunkte&#8220; gearbeitet hat, wird es mit der Zeit flüssiger.</p> <h5><em>Disclaimer: Das Buch wurde mir vom Rheinwerk Computing Verlag kostenfrei zur Verfügung gestellt.</em></h5> <p>Der Beitrag <a rel="nofollow" href="http://www.cc13.com/wordpress_21/2017/12/10/oracle-apex-das-umfassende-handbuch/">Oracle APEX &#8211; Das umfassende Handbuch</a> erschien zuerst auf <a rel="nofollow" href="http://www.cc13.com/wordpress_21">CC13.com</a>.</p> cc13 http://www.cc13.com/wordpress_21/?p=881 Sun Dec 10 2017 11:19:37 GMT-0500 (EST) Text Area Enlarger http://apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/text-area-enlarger_529.html Anguished with too small text areas and not enough room to enlarge them? This plugin will solve your problem. The plugin adds a small button in the top right corner of a textarea, with which the action is triggered: A large jQuery-UI-Dialog is created with a textarea inside, and the original text area APEX item-content is transfered into that. The dialog is set to modal, so that no accidental page submit or something else can happenes, while the popup is open and the new content may go lost. The plugin checkes if changes are made, and when an attempt is made to cancel, the user will be prompted with a confirm message. How too: Create a dynamic action for Page Load, select this plugin and enter all text areas, that you want to be able to enlarge. &ndash; As simple as that. Plugin Attributes allow renaming of the buttons Apply and Cancel , as well as the confirm text, when the popup is closed without applying the changes. http://apex-plugin.com/oracle-apex-plugins/dynamic-action-plugin/text-area-enlarger_529.html Sun Dec 10 2017 11:19:17 GMT-0500 (EST) How do I create a responsive Rich Text Editor in Oracle APEX? http://joelkallman.blogspot.com/2017/12/how-do-i-create-responsive-rich-text.html I was in a video call this morning with a great customer from England (and by the way, this customer is in the process of <b>transforming</b> the healthcare industry across the UK).&nbsp; They asked me a very simple question:<br /><br /><div style="text-align: center;"><i>How do I create a responsive Rich Text Editor item on a page?</i></div><br />Simple question and answer, right?&nbsp; Well, you'd be wrong.&nbsp; While we pride ourselves on the responsive user interfaces that you can easily create with <a href="https://apex.oracle.com/" target="_blank">Oracle Application Express (APEX)</a>, unfortunately, the item type of Rich Text Editor is not responsive, out of the box.<br /><br />So - I did what all smart people do, and I reached out to the Oracle APEX Development team, in this case, the ever-intelligent <a href="https://twitter.com/cczarski" target="_blank">Carsten Czarski</a>.&nbsp; And in a few minutes, he showed me exactly what I needed to do.<br /><br /><ol><li>Open up Application Builder, and in Page Designer, edit the page with the Rich Text Editor item.&nbsp; In my example, my Rich Text Editor page item name is <b>P3_RESUME</b>.</li><li>Navigate to the attributes of the Rich Text Editor item, and in the Advanced section, enter the following code in the "JavaScript Initialization Code" attribute: <pre class="brush:js;toolbar:false;">function (o) {<br /> o.width = $("#P3_RESUME").closest(".t-Form-inputContainer").width() - 5;<br /> o.height = 300; // Specify your desired item height, in pixels<br /> return o;<br />}</pre>This code determines the width of the region container of the item, subtracts 5, and returns the object initialized to this size.&nbsp; This will take care of the Rich Text Editor when the page is initially displayed. But it won't handle the case when the browser is resized. To handle that case, we'll need to add a dynamic action. </li><li>Click the Dynamic Actions sub-tab in Page designer (the lightning bolt)</li><li>Select Events in the upper-left, right-click your mouse and choose "Create Dynamic Action".</li><li>In the attributes, enter "Resize" for Name, and select "Resize" for the Event.</li><li>Select the True action of the dynamic action (it should be "Show").&nbsp; Change the Action to "Execute JavaScript Code".</li><li>In the Code attribute, enter the code: <pre class="brush:js;toolbar:false;">CKEDITOR.instances.P3_RESUME.resize( $("#P3_RESUME").closest(".t-Form-inputContainer").width() - 5, 300);<br /></pre>This is an absolute reference to the Rich Text Editor item on the page, named P3_RESUME. And like the code before, this will determine what the width is of the container of the item, subtract 5 from it, and invoke the resize() method of the Rich Text Editor (<a href="https://ckeditor.com/" target="_blank">CK Editor</a>) element. </li></ol>That's all there is to it!<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-mQKdCUKEsQ4/WirqUGOes3I/AAAAAAAADl0/5u5w1YAJmEAjtpF8v7Ks1BadgodJRriawCLcBGAs/s1600/RichTextEditor.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1186" height="242" src="https://4.bp.blogspot.com/-mQKdCUKEsQ4/WirqUGOes3I/AAAAAAAADl0/5u5w1YAJmEAjtpF8v7Ks1BadgodJRriawCLcBGAs/s400/RichTextEditor.gif" width="400" /></a></div><br /><br />Obviously, this item type (like all others) should be responsive, out of the box.&nbsp; And Carsten is looking at this for the next version of APEX.&nbsp; In the meantime, if you're using Universal Theme with Oracle APEX 5.1, all it takes is a tiny amount of JavaScript to get a responsive Rich Text Editor. Joel R. Kallman tag:blogger.com,1999:blog-12214002.post-1657572742953843237 Fri Dec 08 2017 14:40:00 GMT-0500 (EST) Reverse engineer existing Oracle tables to Quick SQL http://dgielis.blogspot.com/2017/12/reverse-engineer-existing-oracle-tables.html <div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-P43wd_rB_34/WirevH6RzXI/AAAAAAAAI6Y/Gmfn_Vp64LUMMDLwrdRC1Du6S9l4nCVEQCLcBGAs/s1600/quicksql.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="410" data-original-width="422" height="194" src="https://1.bp.blogspot.com/-P43wd_rB_34/WirevH6RzXI/AAAAAAAAI6Y/Gmfn_Vp64LUMMDLwrdRC1Du6S9l4nCVEQCLcBGAs/s200/quicksql.png" width="200" /></a></div>If you didn't hear about <a href="https://apex.oracle.com/en/quicksql/">Oracle Quick SQL</a>, it's time to read about it as it's something you have without knowing (it's a packaged app in Oracle APEX) and I believe you should start using :)<br /><br /><blockquote class="tr_bq">Quick SQL enables you to rapidly design and prototype data models using a markdown-like shorthand syntax that expands to standards-based Oracle SQL.&nbsp;You can easily create master detail relationships, check constraints, and even generate sample data.</blockquote><br />In my blog post&nbsp;<a href="http://dgielis.blogspot.com/2017/08/create-oracle-database-objects.html">Create the Oracle database objects</a>&nbsp;I go over the history how I created database objects and why I think Quick SQL is great and why I use it.<br /><br />I guess most people typically use Quick SQL at the start of a new project, as it's the quickest way to create your data model and Oracle database objects. That is my primary use case too, but I started to use Quick SQL even on projects where database objects already exist.<br /><br />In the project I'm currently involved in, the datamodel was generated by another tool, but as we iterate through the project, tables change, columns get renamed and added, row version were requested, triggers need to be made Oracle APEX aware...<br /><br />Now we could do those changes manually, but I thought it made much more sense to create the data model in Quick SQL and use the features that come with Quick SQL. By clicking a checkbox we can include a Row version, Quick SQL generates the triggers automatically in an APEX aware form, we can generate as much sample data as we want by adding /insert <number data="" of="" sample=""> and we can use all the other features that come with Quick SQL. For example when you want to include a history table in the future it's just another checkbox to click.</number><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-c_WfGLOxCHs/WirjGB3o7YI/AAAAAAAAI6o/d-GAKJHqYowQYnYrHWrH6RslElhlap4wQCLcBGAs/s1600/Screen%2BShot%2B2017-12-08%2Bat%2B20.07.46.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="920" data-original-width="1600" height="368" src="https://1.bp.blogspot.com/-c_WfGLOxCHs/WirjGB3o7YI/AAAAAAAAI6o/d-GAKJHqYowQYnYrHWrH6RslElhlap4wQCLcBGAs/s640/Screen%2BShot%2B2017-12-08%2Bat%2B20.07.46.png" width="640" /></a></div><br />It's also easy to check-in the Quick SQL script into source control, together with the generated DDL.<br />If changes need to be done, we can adapt in Quick SQL and generate the DDL again and we see the changes immediately. It would be nice if Quick SQL could generate the ALTER statements too, but that's not the case yet. But it's easy enough to see the changes that were done by comparing the scripts in source control.<br /><br />If you also want to reverse engineer an existing model into Quick SQL, here's a script that gives you a head start generating the markdown style format.<br /><br /><script src="https://gist.github.com/dgielis/b838375afea7f49c1e253e7ee677b5dd.js"></script> <br />I tried the script on the Quick SQL data model itself - the result you see below:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-OpCuPGLYD2A/WirevugV1YI/AAAAAAAAI6g/xw1zmV7ac50SuJCCFlaeoSXhmwDZJaE9ACEwYBhgL/s1600/Screen%2BShot%2B2017-12-08%2Bat%2B19.24.05.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="819" data-original-width="1600" height="326" src="https://2.bp.blogspot.com/-OpCuPGLYD2A/WirevugV1YI/AAAAAAAAI6g/xw1zmV7ac50SuJCCFlaeoSXhmwDZJaE9ACEwYBhgL/s640/Screen%2BShot%2B2017-12-08%2Bat%2B19.24.05.png" width="640" /></a></div><br />Hopefully you see the benefit of using Quick SQL in existing projects too and the script helps you get there. Also Quick SQL gets frequent updates - in the upcoming release (17.3.4), which is already <a href="https://apex.oracle.com/quicksql/">online</a>, you can add a Security Group ID to every table (to make your app multi-tenant) and you can rename the audit columns to your own naming conventions. Dimitri Gielis tag:blogger.com,1999:blog-21122514.post-3682202726996744940 Fri Dec 08 2017 14:21:00 GMT-0500 (EST) Getting to Grips with the APEX Interactive Grid API http://www.explorer.uk.com/getting-grips-apex-interactive-grid-api/ <p class="p1"><span class="s1">Whilst attending Tech17 at Birmingham this year, I was pleased to see David Peake provide a short demonstration of the Oracle Interactive Grid API documentation. The documentation format/style, using JSDoc, differs from the traditional APEX documentation style we are used to. However, from the quick demo I saw, it does look great, and I cannot wait to get started with it. </span></p> <p class="p1"><span class="s1">From the little I did see, I noticed at least one IG JavaScript method I was unfamiliar with, so of course, when released with APEX 5.2 it will come shipped with all the brand new methods available for APEX 5.2. </span></p> <p class="p1"><span class="s1">In the future, therefore, any APEX 5.1 Interactive Grid developers referring to the APEX 5.2 documentation will mostly likely encounter problems where they are trying to use a documented function, hoping it may be available in APEX 5.1 &#8211; ultimately to discover it is not available in their version of APEX.</span></p> <p class="p1"><span class="s1">I am not expecting the documentation to include an APEX version number (see next paragraph); therefore your best bet in this scenario is to upgrade to APEX 5.2. Be aware though that there is also an outside chance that Oracle could have removed an IG function feature that your APEX 5.1 Grid relies on &#8211; which is always <a href="http://joelkallman.blogspot.co.uk/2015/02/some-changes-to-be-aware-of-as-oracle.html"><span class="s2">the danger when using undocumented features</span></a>. </span></p> <p class="p1"><span class="s1">In the patch sets that follow 5.2, I would ideally like to see the documentation enhanced with each release. For example, in <a href="http://hardlikesoftware.com/weblog/2017/03/31/how-to-hack-apex-interactive-grid-part-4/"><span class="s2">this blog</span></a>, John Synders mentions, “<i>the information in this article applies to APEX version 5.1.1. Some things may work in 5.1 but I’m not going to bother distinguishing which. Anyone programming Interactive Grid should move to 5.1.1 as soon as possible</i>”. Therefore I reading three things here:</span></p> <ol class="ol1"> <li class="li1"><span class="s1">New Interactive Grid functions have previously been released within patch sets, and this suggests it will continue this way; which is my point that the documentation needs to be kept up to date else more features will remain undocumented and the risk of feature removal starts over again. </span></li> <li class="li1"><span class="s1">Oracle are unlikely to distinguish version numbers on documentation.</span></li> <li class="li1"><span class="s1">Upgrade ASAP.</span></li> </ol> <p class="p1"><span class="s1">Right at this moment, given the absence of official Oracle Interactive Grid API documentation for APEX 5.1, developers are currently required to turn to alternative sources of information.</span></p> <p class="p1"><span class="s1">For me, these sources include:</span></p> <ul class="ul1"> <li class="li2"><span class="s3"><a href="http://www.explorer.uk.com/oracle-application-development/oracle-apex-training/"><span class="s4">The Explorer Interactive Grid Training Course</span></a></span></li> <li class="li2"><span class="s3"><a href="https://community.oracle.com/community/database/developer-tools/application_express"><span class="s4">Application Express Community</span></a></span></li> <li class="li1"><span class="s1">The Sample Interactive Grid Packaged Application</span></li> <li class="li2"><span class="s3"><a href="http://hardlikesoftware.com/weblog/2017/01/18/how-to-hack-apex-interactive-grid-part-1/"><span class="s4">John Synders Blogs</span></a></span><span class="s6"> &amp; <a href="http://hardlikesoftware.com/weblog/2017/07/24/apex-ig-cookbook-update/"><span class="s2">Cookbook</span></a></span></li> <li class="li2"><span class="s3"><a href="https://github.com/mgoricki/orclapex-ig-cheat-sheet"><span class="s4">Oracle APEX Interactive Grid Cookbook</span></a></span></li> </ul> <p class="p1"><span class="s1">In addition to the above, I add my own presentation “Getting to Grips with the APEX Interactive Grid API” &#8211; the video below is a recording I made in preparation for my Tech17 presentation of the same name.</span></p> <p class="p3"><iframe src="https://www.youtube.com/embed/4kJ_xUvjwo0" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p> <p class="p1"><span class="s1">In this video, I wanted to demonstrate the basics of the Interactive Grid API, which are:</span></p> <ul class="ul1"> <li class="li1"><span class="s1">How to customise the Interactive Grid</span></li> <li class="li1"><span class="s1">What is the model and associated views</span></li> <li class="li1"><span class="s1">How to loop through the model and selected records</span></li> <li class="li1"><span class="s1">How to extend functionality using your own menus, buttons and processes</span></li> </ul> <p>You can also follow the presentation by using the same APEX application <a href="http://bit.ly/APEXIGAPI_GettingToGrips">here</a></p> <p class="p1"><span class="s1">The Interactive Grid supports much more functionality, but these things are the basics &#8211; master these and the more advanced features do not seem as hard as first thought.</span></p> <p>The post <a rel="nofollow" href="http://www.explorer.uk.com/getting-grips-apex-interactive-grid-api/">Getting to Grips with the APEX Interactive Grid API</a> appeared first on <a rel="nofollow" href="http://www.explorer.uk.com">Explorer | Award Winning UK Oracle Partner</a>.</p> admin http://www.explorer.uk.com/?p=6346 Fri Dec 08 2017 06:03:20 GMT-0500 (EST) Friday Fun SQL Lesson - union all http://www.grassroots-oracle.com/2017/12/friday-fun-sql-lesson-union-all.html Our office kitchen is unavailable this Friday, so the call was put out for pub lunch.<br /><br />After a couple of replies I decided to enter my reply, in full nerd mode.<br /><pre style="brush: sql;">select * from people_coming_to_lunch;<br /><br />People<br />--------<br />Kate<br />Scott<br />Karolina<br /><br />3 rows selected.</pre>And of course one of the other SQL geeks (name redacted) replied to extend the data set.<br /><pre style="brush: sql;">select * from people_coming_to_lunch<br />union <br />select 'Shanequa'<br />from dual;</pre>And I couldn't help myself. I had to play the performance card and suggest that UNION ALL would be the appropriate usage, and should be the default you type out. Always. Until you decide otherwise.<br /><br />That's because sorts are expensive. And a UNION will need sorting to check for duplicates.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://3.bp.blogspot.com/-Ki1uzVkYWGo/Winx5w8JShI/AAAAAAAATd8/LHS0DbguxfMJWgQaVdUd6JCZ2KCNNjTuwCLcBGAs/s1600/people_lunch.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="422" data-original-width="642" src="https://3.bp.blogspot.com/-Ki1uzVkYWGo/Winx5w8JShI/AAAAAAAATd8/LHS0DbguxfMJWgQaVdUd6JCZ2KCNNjTuwCLcBGAs/s1600/people_lunch.png" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">That sort of all the rows isn't necessary</td></tr></tbody></table>And it will sort the data set even if there is a unique key on the data.<br /><pre style="brush: sql;">create table people_coming_to_lunch (people varchar2(30));<br />insert into people_coming_to_lunch values ('Scott');<br />insert into people_coming_to_lunch values ('Kate');<br />insert into people_coming_to_lunch values ('Karolina');<br /><br />create unique index lunch_people on people_coming_to_lunch(people);<br /><br />select * from people_coming_to_lunch<br />union all<br />select 'Shanequa' from dual</pre>By using UNION ALL instead of UNION, you're telling the database not to even bother sorting the set to eliminate any potential duplicates, since your advanced human brain knows there will be no duplicates.<br /><br />With only a few rows, the timing of sheer throughput is barely noticable.<br /><pre style="brush: text;">iterations:1000<br /> 0.30 secs (.0003 secs per iteration) -- UNION<br /> 0.25 secs (.00025 secs per iteration) -- UNION ALL<br /> <br />iterations:10000<br /> 1.72 secs (.000172 secs per iteration)<br /> 1.09 secs (.000109 secs per iteration)<br /> <br />iterations:50000<br /> 10.94 secs (.0002188 secs per iteration)<br /> 8.48 secs (.0001696 secs per iteration)</pre>So I turned it up a notch and added about 5000 rows to the table.<br /><pre style="brush: sql;">insert into people_coming_to_lunch<br />select table_name from all_tables;<br /> <br />5000 rows inserted</pre>Here's the explain plan without the sort.<br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://2.bp.blogspot.com/-SVHDvvvf_9Y/WinyNCo7BsI/AAAAAAAATeA/93hLLcLb6UEsNpyzn-IBklR_Cpyq6xqHwCLcBGAs/s1600/people_lunch_nosort.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="92" data-original-width="527" src="https://2.bp.blogspot.com/-SVHDvvvf_9Y/WinyNCo7BsI/AAAAAAAATeA/93hLLcLb6UEsNpyzn-IBklR_Cpyq6xqHwCLcBGAs/s1600/people_lunch_nosort.png" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">That's one less chunk of 5000 rows to process</td></tr></tbody></table><br />Now the differences in performance stand out.<br /><pre style="brush: text;">iterations:1000<br /> 6.79 secs (.00679 secs per iteration) -- UNION<br /> 2.85 secs (.00285 secs per iteration) -- UNION ALL<br /> <br />iterations:5000<br /> 42.91 secs (.008582 secs per iteration)<br /> 19.89 secs (.003978 secs per iteration)<br /> <br />iterations:5000<br /> 31.70 secs (.00634 secs per iteration)<br /> 22.83 secs (.004566 secs per iteration)<br /> <br />iterations:5000<br /> 30.75 secs (.00615 secs per iteration)<br /> 16.76 secs (.003352 secs per iteration)</pre>Upto twice as long for the same statement? <br />No thanks, not when I could just type 4 extra characters to get an easy performance win.<br /><br />Turns out this topic formed my <a href="http://www.grassroots-oracle.com/2009/07/union-all-performance-accuracy.html">first technical post</a>. Back in 2009, after almost 10 years of using SQL, that was the first thing I blogged about. How about that. Scott Wesley tag:blogger.com,1999:blog-4818542164384221282.post-4177418317197549082 Fri Dec 08 2017 01:15:00 GMT-0500 (EST) Errors when downloading a file on page submit in Oracle Application Express 5.1 or later... http://joelkallman.blogspot.com/2017/12/errors-when-downloading-file-on-page.html Recently, Sharon Kennedy from our team approached me for some help with file download in <a href="https://apex.oracle.com/" target="_blank">Oracle Application Express (APEX)</a>.&nbsp; Sharon is the primary developer of <a href="https://livesql.oracle.com/" target="_blank">Oracle Live SQL</a> (among many of her other responsibilities), and she wanted to initiate a file download in a page process, after page submission.&nbsp; Since I've done this 100 times in APEX applications, should be easy, right?<br /><br />Back in 2014, I wrote <a href="http://joelkallman.blogspot.com/2014/03/yet-another-post-how-to-link-to.html" target="_blank">a short blog post</a> showing how to generate a link to download a file from a BLOB stored in a table.&nbsp; But this problem was slightly different.&nbsp; The application flow was:<br /><br /><ol><li>In Oracle Live SQL Administration, an administrator would click the button "Download Oracle Content"</li><li>The page would then be submitted, and a PL/SQL page process would fire, which would query all of the static scripts and tutorials from Live SQL, zip them up using <a href="https://docs.oracle.com/database/apex-5.1/AEAPI/APEX_ZIP.htm#AEAPI29942" target="_blank">APEX_ZIP</a>, and initiate a file download.</li></ol><br />However, when the button was clicked, the page would be submitted, no file download would be initiated, and the following error was displayed on the page:<br /><br /><br /><div style="text-align: center;"><i>Error: SyntaxError: Unexpected token r in JSON at position 0</i></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-HNGMocmIbCM/Wiml-pgfLKI/AAAAAAAADlU/c1xQy0_x6nod4TCyoPfVEfCwFcrgxHZuQCLcBGAs/s1600/error_page_submit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="105" data-original-width="540" height="77" src="https://1.bp.blogspot.com/-HNGMocmIbCM/Wiml-pgfLKI/AAAAAAAADlU/c1xQy0_x6nod4TCyoPfVEfCwFcrgxHZuQCLcBGAs/s400/error_page_submit.png" width="400" /></a></div><br /><br />After spending more than an hour debugging the Live SQL application, I resorted to a simpler test case.&nbsp; I created a trivial application with a button on the first page, which would submit and invoke the PL/SQL page process:<br /><br /><pre class="brush:sql;toolbar:false;">declare <br /> l_file_blob blob; <br /> l_file_name apex_application_files.filename%type; <br /> l_file_mimetype apex_application_files.mime_type%type; <br />begin <br /> select blob_content, mime_type, filename into l_file_blob , l_file_mimetype , l_file_name from apex_application_files where id = 2928972027711464812; <br /> sys.owa_util.mime_header( l_file_mimetype , false ); <br /> sys.htp.p('Content-Disposition: attachment; filename="' || l_file_name ||'"'); <br /> sys.htp.p('Content-length: ' || sys.dbms_lob.getlength( l_file_blob )); <br /> sys.owa_util.http_header_close; <br /> sys.wpg_docload.download_file( l_file_blob ); <br /> -- Stop page processing <br /> apex_application.stop_apex_engine ; <br />end; <br /></pre><br /><br />With my test case, it was exactly the same error encountered, the meaningless error message of <i>"Error: SyntaxError: Unexpected token r in JSON at position 0"</i>.<br /><br />I finally gave up and contacted <a href="https://twitter.com/patrickwolf" target="_blank">Patrick Wolf</a> on the APEX product development team, who helped me solve this problem in one minute.&nbsp; Granted...Patrick was both the creator of the problem <b>and</b> the creator of the solution!<br /><br />To resolve this problem:<br /><br /><ol><li>Open the page in Page Designer in Application Builder</li><li>Edit the page attributes</li><li>In the Advanced section of the page properties on the right hand side of Page Designer, change "Reload on Submit" to "Always" (changing it from "Only for Success" to "Always")</li></ol>That's it!<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-iED2UGQNHEU/Wim17I8XNDI/AAAAAAAADlk/vEu8j7bnIZsKfrLszgoeErPaOkDMqY3QwCLcBGAs/s1600/Reload.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="80" data-original-width="282" height="113" src="https://2.bp.blogspot.com/-iED2UGQNHEU/Wim17I8XNDI/AAAAAAAADlk/vEu8j7bnIZsKfrLszgoeErPaOkDMqY3QwCLcBGAs/s400/Reload.png" width="400" /></a></div><br /><br />Setting "Reload on Submit" to "Always" will POST the page and render the result using the behavior as it was in APEX 5.0 and earlier.&nbsp; In APEX 5.1, if Reload on Submit is set "Only for Success" (the default), it will use the new optimized page submission process, and expect a specifically formatted JSON result returned from the APEX engine.&nbsp; Obviously, when I employ a page process which overrides the HTP buffer and emit binary content (instead of a well-formed JSON result), the libraries on the page don't know how to deal with that, and thus, results in this obtuse "Unexpected token r..." message. Joel R. Kallman tag:blogger.com,1999:blog-12214002.post-9124748623997272008 Thu Dec 07 2017 16:59:00 GMT-0500 (EST) ODTUG December News http://www.odtug.com/p/bl/et/blogaid=754&source=1 The ODTUG December News includes information about the abstract public voting sign-ups, ODTUG Kscope18 Community Service Day donations, Oracle Cloud Customer Connect upcoming webinars, ODTUG community news, and upcoming ODTUG webinars. ODTUG http://www.odtug.com/p/bl/et/blogaid=754&source=1 Thu Dec 07 2017 11:34:37 GMT-0500 (EST) Exporting an APEX page plus Shared Components http://www.grassroots-oracle.com/2017/12/oracle-apex-export-page-shared-components.html <div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><div>Imagine, if you will, a really large application. Perhaps it's a reporting application, and you've just created a new page (report) and an associated breadcrumb.&nbsp;</div><div><br /></div><div>Now for migration. You have a choice between exporting the entire application, or you could just export the page. But what about the associated breadcrumb? What about the LOV?</div><div><br /></div><div>This is where the <i>Component Export </i>can help.</div></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">You'll find it in the Tasks menu when you start to export your application.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-sIUDF8cfOts/Wiliw491jDI/AAAAAAAATdk/v2oqw1wPQ38VD1P8SN29_AR5aj2IvVX2ACLcBGAs/s1600/component_export_start.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="473" data-original-width="373" src="https://1.bp.blogspot.com/-sIUDF8cfOts/Wiliw491jDI/AAAAAAAATdk/v2oqw1wPQ38VD1P8SN29_AR5aj2IvVX2ACLcBGAs/s1600/component_export_start.png" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Tip: Keep an eye out for these Task menus, they can 'hide' interesting features</td></tr></tbody></table></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">From there you can find, then check the most recently modified components to your application, then press "Add to Export" to add them to what I would imagine would be an apex_collection.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody><tr><td><a href="https://2.bp.blogspot.com/-wJEVh3CbxI8/Wilixv_B9dI/AAAAAAAATds/zWGxzvYIAyMnRu_Yw4vfoHrDOgNwPaR3QCLcBGAs/s1600/component_export_choice.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1217" data-original-width="945" height="640" src="https://2.bp.blogspot.com/-wJEVh3CbxI8/Wilixv_B9dI/AAAAAAAATds/zWGxzvYIAyMnRu_Yw4vfoHrDOgNwPaR3QCLcBGAs/s640/component_export_choice.png" width="496" /></a></td></tr><tr><td class="tr-caption" style="font-size: 12.8px;">Creating this type of page would be a good learning exercise</td></tr></tbody></table></div><div class="separator" style="clear: both; text-align: center;"></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">The final confirmation, with the additional option to <a href="http://www.grassroots-oracle.com/2012/03/exporting-deleted-apex-applications.html" target="_blank">export as of</a> x minutes ago.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-5bQwUxxTlOc/WilixV0ieGI/AAAAAAAATdo/AWYyBcQ2I6EmdCfV7YYxzowINLeSFZ2tgCLcBGAs/s1600/component_export_confirm.png" imageanchor="1" style="font-size: 12.8px; margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="671" data-original-width="960" height="447" src="https://2.bp.blogspot.com/-5bQwUxxTlOc/WilixV0ieGI/AAAAAAAATdo/AWYyBcQ2I6EmdCfV7YYxzowINLeSFZ2tgCLcBGAs/s640/component_export_confirm.png" width="640" /></a></div></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div class="separator" style="clear: both; text-align: center;"></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">Upon export you'll receive a file that looks just like a normal export, just with your selected components.</div><div style="background-color: white; color: #222222; font-size: 12.8px;"><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">f102_components.sql</span></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">There are advantages to exporting only selected components. For instance, during a full application install, existing users will remove existing user sessions for the application unless you use <a href="https://docs.oracle.com/database/apex-5.1/AEAPI/SET_KEEP_SESSIONS-Procedure.htm#AEAPI-GUID-3FF4CA7A-413D-4901-8291-11EEA8141EBE" target="_blank">apex_application_install.set_<wbr></wbr>keep_sessions</a>&nbsp;on the command line.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><span style="font-size: 12.8px;">Though are a few reasons to take care.</span></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">For example, when I exported/imported the List for my left sidebar menu, the menu disappeared from my runtime view.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">I had to re-assign the list as the navigation menu.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><i>Shared Components - User Interface - Nagivation Menu - Navigation Menu List.</i></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">Exporting without the list was ok, so for all good for data driven (dynamic) menus. In that case the page should only appear in the menu when the relevant security tables say so.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">And the export may not be as granular as you need. Or perhaps you'll forget components. Or perhaps your changes overlap with others.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">Component export is fit for some purposes, and has been around forever. Give it a go.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">And wouldn't you know, turns out it was <a href="http://www.grassroots-oracle.com/2016/12/apex-component-export.html" target="_blank">a year ago <i>today</i></a><i> </i>that I also felt compelled to blog about this very topic.</div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div><div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;"><br /></div> Scott Wesley tag:blogger.com,1999:blog-4818542164384221282.post-1420370240433777051 Thu Dec 07 2017 08:19:00 GMT-0500 (EST) Szkolenie - relacja http://apex.dbe.pl/2017/12/szkolenie-relacja.html Grudzień jest najgorętszym okresem jeżeli chodzi o szkolenia. W tym roku szykuje się rekord... blisko 3 tygodnie ciągle w terenie Od wczoraj Szczecin.<br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://1.bp.blogspot.com/-UlMCSeTIAGg/Wij-V_TNLaI/AAAAAAAALSY/wtYRh6aTATISuxDMQdB6HXNeVPufjxyYwCKgBGAs/s1600/DSC_0529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1201" data-original-width="1600" height="300" src="https://1.bp.blogspot.com/-UlMCSeTIAGg/Wij-V_TNLaI/AAAAAAAALSY/wtYRh6aTATISuxDMQdB6HXNeVPufjxyYwCKgBGAs/s400/DSC_0529.JPG" width="400" /></a></div> <br /> Przyszły tydzień Rzeszów... ) tag:blogger.com,1999:blog-7531463720728239813.post-7416346904346230945 Thu Dec 07 2017 03:41:00 GMT-0500 (EST) APEX on udoo x86 (TEST 1) http://acitemreh.blogspot.com/2017/12/apex-on-udoo-x86-test-1.html Not much to add from the previous post except that over the evening I finished the first test that merges all this into one example. The code is simple turn on a light when it shows that oracle says it should be on. <iframe width="560" height="315" src="https://www.youtube.com/embed/EWz7xSFiTeM" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe> try it for yourself : <a href="https://github.com/jaughenbaugh/precision-guesswork">https://github.com/jaughenbaugh/precision-guesswork</a> Jason D. Aughenbaugh tag:blogger.com,1999:blog-21645351.post-6499822307791633571 Wed Dec 06 2017 12:42:00 GMT-0500 (EST) Exploring AJAX presentation http://www.grassroots-oracle.com/2017/12/exploring-ajax-presentation.html Wow, what a busy year. My blog archive is pretty thin this year, isn't it?<br /><br />I'm moving house next week, but I'm itching to get back into blogging about my tech journey.<br />I need to get back into learning mode, I have some Kscope ideas to foster!<br /><br />Perth had a humble but successful conference last week. It was impressive to see Oracle APEX dominating the developer track, with thanks to ACE Director <a href="http://dgielis.blogspot.com/" target="_blank">Dimitri</a> stepping up and delivering four engaging sessions in one day.<br /><br />A few months ago I drafted a session exploring the concept of AJAX, and how it fits within the world of web application development. I was aiming for a more widespread crowd, hoping to fill some gaps by doing something as non-technical as possible.<br /><br />Next minute, among what seems like many other things, I'm preparing to move house, so I came in a little underprepared.<br />Here's my slide-deck, but it's missing the passionate space-nerd adding enthusiasm to the content ;p<br /><a href="https://prezi.com/dwibb_dismt5/exploring-ajax-from-afar/">https://prezi.com/dwibb_dismt5/exploring-ajax-from-afar/</a><br /><br /><iframe allowfullscreen="" frameborder="0" height="400" id="iframe_container" mozallowfullscreen="" src="https://prezi.com/embed/dwibb_dismt5/?bgcolor=ffffff&amp;lock_to_path=1&amp;autoplay=0&amp;autohide_ctrls=0&amp;landing_data=bHVZZmNaNDBIWnNjdEVENDRhZDFNZGNIUE43MHdLNWpsdFJLb2ZHanI0NUhJdGd1WHFHNmlRajhmSnNpcWIxOEhnPT0&amp;landing_sign=sTImHXCpNHO11RowVBM8lalNikOHImXGMODuFP038s4" webkitallowfullscreen="" width="550"></iframe><br /><br />I'll probably post about certain frames that are worth a mention.<br /><br />I'll have my regular hands on a 5.1 environment soon, I've got some catching up to do before 5.2 arrives. Bring on OracleJET. Scott Wesley tag:blogger.com,1999:blog-4818542164384221282.post-2033735369531164838 Wed Dec 06 2017 09:49:00 GMT-0500 (EST) APEX IoT recipe http://acitemreh.blogspot.com/2017/12/apex-iot-recipe.html So, This happened.<br /><br /><blockquote class="twitter-tweet" data-lang="en"><div dir="ltr" lang="en">Time to slap a sticker on this one. Not because I can, because it works ( and I can ). Stay Tuned... <a href="https://twitter.com/hashtag/orclapex?src=hash&amp;ref_src=twsrc%5Etfw">#orclapex</a> <a href="https://twitter.com/hashtag/makerboard?src=hash&amp;ref_src=twsrc%5Etfw">#makerboard</a> <a href="https://t.co/Qxt5YBtXcT">pic.twitter.com/Qxt5YBtXcT</a></div>— Jason Aughenbaugh (@wileecoyote_) <a href="https://twitter.com/wileecoyote_/status/937689462410240000?ref_src=twsrc%5Etfw">December 4, 2017</a></blockquote>The History:<br />&nbsp; Over a year ago (while with <a href="http://www.insum.ca/" target="_blank">Insum</a>) there was an announcement brought to us by Danny Boivin (<a class="ProfileHeaderCard-screennameLink u-linkComplex js-nav" href="https://twitter.com/DannyBoivin" style="-webkit-text-stroke-width: 0px; background: rgb(230, 236, 240); color: #657786; font-family: &quot;Segoe UI&quot;, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 700; letter-spacing: normal; orphans: 2; outline: 0px; text-align: left; text-decoration: none !important; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"><span class="username u-dir" dir="ltr" style="direction: ltr !important; font-size: 14px; text-align: left !important; unicode-bidi: embed;">@<b class="u-linkComplex-target" style="font-weight: normal; text-decoration: underline !important;">DannyBoivin</b></span></a>), detailing a new kickstarter program for a maker board that promised a lot.&nbsp; The main promise was an x86 based maker-board, similar to Arduino or RPi but better.&nbsp; Well, they delivered.&nbsp;&nbsp;This year&nbsp;<a href="http://www.udoo.org/" target="_blank">Udoo</a>&nbsp;released their x86 line of single board computers.&nbsp; I say it is a line because there are options, and more options, but four main&nbsp;boards with a lot of extras.&nbsp; <br />&nbsp; What I saw in this and a reason to&nbsp;buy is a solution to an interesting problem (or at least a good opportunity).&nbsp; How do we get&nbsp;Application Express, and an Oracle database to interact with an IoT project. It also expands the Arduino maker side of the board with additional pinouts from the&nbsp;x86 core.<br />&nbsp; This is why I bought in.<br /><br /><br />Recipe for APEX IoT:<br /><br /><br /><ul><li>1+ udoo x86&nbsp;SBC ( I am using the Advanced Plus board for experimentation)</li><ul><li>+ is cool because apparently you can cluster these things for more fun</li></ul><li>Connect your stuff (not all required but I am testing after all)</li><ul><li>M.2 Wireless / BT4</li><li>M.2 SSD</li><li>SATA SSD</li><li>32GB eMMC (integrated on 2 of the base boards)</li><li>64GB micro SD</li></ul><li>Choose your OS</li><ul><li>Ubuntu 16 LTS and Windows 10 are recommended but not the only options by far</li><li>I'm using a hard drive for each but primarily Win 10 Pro</li></ul><li>Install Software</li><ul><li>Oracle Database 11g Express Edition 64bit</li><li>Oracle Application Express v5.1.3</li><li>Arduino IDE</li><ul><li>The maker side of this board uses an Intel Curie processor (Arduino 101)</li></ul><li>Python 2.x.x (64bit)</li><ul><li>pyserial</li><li>cx_oracle</li><li>pyfirmata</li></ul><li>Any other stuff you need (SQL Developer, Atom, etc)</li></ul></ul><div>&nbsp; That's it for the environment the next thing is the theory of operations.&nbsp; If you are already doing IoT with a regular Computer (with Apex) and an Arduino UNO then you are way ahead of me and please pipe up on what you've accomplished.</div><div><br /></div><div>&nbsp; Also if you are a newbie like me to using a lot of this stuff you can check out this book on getting started with Python for Arduino.</div><ul><li><a href="https://www.packtpub.com/application-development/python-programming-arduino" target="_blank">Python Programming for Arduino by Pratik Desai</a></li></ul><div>&nbsp; For me the approach I have is two-fold.</div><ul><li>Using a python script to reference Oracle data to make the Arduino do work&nbsp;</li><ul><li>This is my first set of test cases</li></ul><li>Oracle Initiated function : Running Python from Scheduler</li><ul><li>Maybe generating the python code prior to running it</li><li>This is the ultimate goal</li></ul></ul><div>&nbsp; So there you have it,&nbsp;the first&nbsp;maker-board that has the ability to run Oracle and APEX in the same hardware.&nbsp;Even if it is&nbsp;just consolidating the hardware side of it, it works.&nbsp; </div><div><br /><br /><br /></div><div>&nbsp; More to come as I have it to give.&nbsp; </div><div>&nbsp; </div><div>Cheers!</div><br /><br /><script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script> Jason D. Aughenbaugh tag:blogger.com,1999:blog-21645351.post-1560231446129628441 Tue Dec 05 2017 10:25:00 GMT-0500 (EST) Cómo definir las preferencias del espacio de trabajo actual en Oracle APEX 5.1 http://feedproxy.google.com/~r/DescubriendoElMundoDeOracle/~3/xTyyyaRjAvg/como-definir-las-preferencias-del.html <div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">Vamos a aprender en este artículo a conocer cómo definir y controlar las preferencias para el espacio de trabajo.</div><div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">Para definir las preferencias del espacio de trabajo debemos iniciar sesión con el usuario Administrador; es importante destacar que todas estas configuraciones afectarán todas las aplicaciones que se encuentren alojadas dentro del Espacio de Trabajo.</div><div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">1. Hacemos clic en el Menú de Administración &gt; Gestionar Servicio &gt; Definir Preferencias de Espacio de Trabajo</div><div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">2. Se abre la página de las Preferencias del Espacio de Trabajo</div><div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">3. En la sección Control de Conexión de Cuenta: Disponemos de dos opciones en Vencimiento y Bloqueo de Cuenta:</div><div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">- Activar</div><div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">- Desactivar</div><div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">Esta función proporciona seguridad de autenticación adicional para las aplicaciones. Si seleccionamos&nbsp;<b>Activar</b>, las contraseñas de la cuenta de usuario vencerán después de un período de tiempo configurable, las cuentas se bloquearán después de un número configurable de fallos de autenticación y las contraseñas de la cuenta se pueden definir para que venzan después del primer uso.</div><div style="background-color: white; color: #333333; font-family: OpenSansRegular, &quot;Myriad Pro&quot;, Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em;">Seguir Leyendo <a href="https://www.toadworld.com/platforms/oracle/b/weblog/archive/2017/12/04/c-mo-definir-las-preferencias-del-espacio-de-trabajo-actual-en-oracle-apex-5-1" target="_blank">AQUI</a></div><img src="http://feeds.feedburner.com/~r/DescubriendoElMundoDeOracle/~4/xTyyyaRjAvg" height="1" width="1" alt=""/> Clarisa J. Maman Orfali tag:blogger.com,1999:blog-1315583943401206186.post-2553789298278615126 Mon Dec 04 2017 18:38:00 GMT-0500 (EST) Database direct upgrade from 11g to 12c to Exadata X6-2 from X5-2 - RMAN DUPLICATE DATABSAE WITH NOOPEN http://jaffardba.blogspot.com/2017/12/database-direct-upgrade-from-11g-to-12c.html <div dir="ltr" style="text-align: left;" trbidi="on">At one of the customers recently, a few production databases migration from X5-2 to X6-2 with Oracle 11g upgrade to Oracle 12cR1 was successfully delivered.<br /><br />As we all knew, there are handful of methods available to migrate and upgrade an Oracle databases. Our objective was simple. Migrate Oracle 11g (11.2.0.4) database from X5-2 to Oracle 12c (12.1.0.2) on X6-2.<br /><br />Since the OS on source and target remains the same, no conversion is required.<br />There was no issue of downtime, so, doesn't required to be worried of various options.<br /><br />Considering the above, we have decided to go for a direct RMAN (duplicate command) with NOOPEN option to upgrade the database. You can also use same procedure with RMAN restore/recovery method. But, the RMAN duplicate database with <b>NOOPEN</b> simplified the procedure.<br /><br />Below is he high level procedure to upgrade an Oracle 11g database to 12cR1 using RMAN DUPLICATE command{<br /><br /><br /><ul style="text-align: left;"><li>Copy <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">preupgrd.sql &amp; utluppkg.sql</span>&nbsp;scripts from Oracle 12c&nbsp;?/rdbms/admin home to 11g to<span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"> /tmp</span> or any other location;</li><li>Run <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">preupgrd.sql</span> script on the source database (which is Oracle 11gR2 in our case);</li><li>Review <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">preupgrade.log</span> and apply any recommendations; You can also execute preupgrade_fixups script to fix the issues raised in the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">preupgrade.log;</span></li><li>Execute RMAN backup (database and archivelog) on source database;</li><li>scp the backup sets to remote host</li><li>Create a simple init file on the target with just db_name parameter;</li><li>Create a password file on the target;</li><li>Startup nomount the database on the target;</li><li>Create TNS entries for auxiliary (target) and primary database (source) on the target host;</li><li>Run the DUPLICATE DATABASE with <b><span style="color: red;">NOOPEN</span></b>&nbsp;, with all adjusted / required parameters;</li><li>After the restore and recovery, open the database with resetlogs upgrade option;</li><li>Exit from the SQL prompt and run the catupgrade (12c new command) with parallel option;</li></ul><div>on target host:</div><div></div><br /><pre class="sql" name="code" style="background-color: white; font-size: 16.5px;">nohup $ORACLE_HOME/perl/bin/perl catctl.pl -n 8 catupgrd.sql &amp;</pre><pre class="sql" name="code" style="background-color: white; font-size: 16.5px;"></pre>After completing the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">catupgrade</span>, get the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">postupgrade_fixup</span> script from resource and execute on the target database;<br />Perform the timezone upgrade;<br /><br />Gather dictionary, fixed_objects, database and system stats accordingly;<br />Run <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">ultrp.sql</span> to ensure all invalid objects are compiled;<br />Review the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">dba_registry</span> t ensure no INVALID components remain;<br /><br />Above are the high level steps. If you are looking for a step-by-step procedure, review the below url from <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">oraclepublihser.blogspot.com</span>. We must appreciate for the work done at the blogspot for a very comprehensive procedure and demonstration.<br /><br /><br />References:<br /><br /><a href="http://oraclepublisher.blogspot.com/2014/06/upgrade-database-to-12c-using-rman.html">http://oraclepublisher.blogspot.com/2014/06/upgrade-database-to-12c-using-rman.html</a><br /><br /><br /></div> The Human Fly tag:blogger.com,1999:blog-19771507.post-757900826466585385 Sun Dec 03 2017 09:45:00 GMT-0500 (EST) QuickSQL – Saves you time http://orclapextips.blogspot.com/2017/12/quicksql-saves-you-time.html <span style="background-color: white; color: #333333; font-size: 20px;"><br /></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.explorer.uk.com/wp-content/uploads/2017/08/quicksql.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="698" data-original-width="800" height="279" src="https://www.explorer.uk.com/wp-content/uploads/2017/08/quicksql.jpg" width="320" /></a></div><span style="background-color: white; color: #333333; font-size: 20px;"><br /></span><span style="background-color: white; color: #333333; font-size: 20px;"><br /></span><span style="background-color: white; color: #333333; font-size: 20px;">One of the new features of APEX 5.1 definitely changed my way of creating DDL on Oracle databases. With the Quick SQL packaged application you only need to write minimal lines of markdown text to describe tables, triggers, audit tables and many other objects. This low code development concept can save you so much time, and it is even faster than the other tools available, which specialise in this job.</span><br /><span style="background-color: white; color: #333333; font-size: 20px;"><br /></span><span style="background-color: white; color: #333333; font-size: 20px;"><a href="http://www.explorer.uk.com/quicksql-saves-time/">Read more...</a></span> Rodrigo Mesquita tag:blogger.com,1999:blog-6660100425842141906.post-1198592894767979365 Fri Dec 01 2017 04:07:00 GMT-0500 (EST) APEX and Universal theme Navigation bar list http://lschilde.blogspot.com/2017/11/apex-and-universal-theme-navigation-bar.html <div dir="ltr" style="text-align: left;" trbidi="on"><h2 class="MsoNormal" style="line-height: normal; text-align: justify;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 18.0pt;">APEX and <span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;">Universal theme Navigation bar list</span></span></b></h2><h2 class="MsoNormal" style="line-height: normal; text-align: justify;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 18.0pt;">&nbsp;</span></b></h2><h3 class="MsoNormal" style="line-height: normal; text-align: left;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 13.5pt;"><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;">Navigation bar list CSS tip</span></span></b></h3><h3 class="MsoNormal" style="line-height: normal; text-align: left;"></h3><h4 class="MsoNormal" style="line-height: normal; text-align: left;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 12.0pt;"><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;"><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;"><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;"><br /></span></span></span></span></b></h4><h4 class="MsoNormal" style="line-height: normal; text-align: left;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 12.0pt;"><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;"><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;"><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;">Menu</span> enhancement</span></span></span></b></h4><br /><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">For past few weeks I <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">worked on APEX public facing application where <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">one of the key design points was of course the need to match the existing company website</span></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"> UI (or at least as closely).</span></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Luckily all of this was possible just by lightly tweaking Universal theme adding few custom report <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">templates</span> and</span> rest was result of CSS magi<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">c.</span></span></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">To come to the poin<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">t of this <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">post<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"> - while polishing the look and feel for mobile devices <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">something we picked u<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">p that I wanted to share <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">here.&nbsp;</span></span></span></span></span></span></span></span></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">If you happen to use Navigation bar list you will notice that as you minimize your screen at some point your items turn into icons and all text only navigation bar list item disappear.&nbsp;</span></span></span></span></span></span></span></span></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></span></span></span></span></span></span></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">This is great as it shows <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">responsiveness of UT. But what if you want to keep icons and text items<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">. <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I know that havin<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">g a smaller icon is recommended <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">but in my case simply <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">client</span> did not want to use icons.&nbsp;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-s5J-vo6-VZQ/WiDJcMeRpcI/AAAAAAAALho/jx269kh5Oz4CPqc9yUBT5nTucVgc-t1SACLcBGAs/s1600/defaultNavBar.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="95" data-original-width="1293" height="47" src="https://3.bp.blogspot.com/-s5J-vo6-VZQ/WiDJcMeRpcI/AAAAAAAALho/jx269kh5Oz4CPqc9yUBT5nTucVgc-t1SACLcBGAs/s640/defaultNavBar.gif" width="640" /></a></div><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Notice how only item with icon stays on after reaching certain screen size.&nbsp;</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">To adjust this all we need is a little of CSS.&nbsp;</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br /><blockquote class="tr_bq"><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&lt;style&gt;<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">.t-NavigationBar:before{<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; cursor: pointer;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; border: 1px solid black;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; border-radius: 2px;&nbsp;&nbsp; <o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; marxin-top:-2px; <o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; padding:5px;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; content: "\e015";<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; font-size: 16px;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; font-family: apex-5-icon-font!important;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; font-style: normal!important;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; font-weight: 400!important;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; font-variant: normal!important;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; text-transform: none!important;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; speak: none;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; line-height: 1;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; -webkit-font-smoothing: antialiased;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; display: none;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">}<o:p></o:p></span></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">@media only screen and (max-width: 640px){<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; .t-Button--navBar .t-Button-label {<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display: inherit;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; font-size: 1rem;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; .t-NavigationBar{<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; position:fixed;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; z-index: 1000;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; top:5px;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; right:0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; background-color: #2578cf;&nbsp; /*#ffffff;*/<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; .t-NavigationBar li{<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text-align:left;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; .t-NavigationBar-item {<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display:none;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; .t-NavigationBar:before{<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display:inline-block;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; .t-NavigationBar:hover .t-NavigationBar-item,<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; .t-NavigationBar:focus .t-NavigationBar-item{<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; display:inherit;<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&nbsp;&nbsp;&nbsp; }<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">}<o:p></o:p></span></div><div class="MsoNormal"><br /></div><br /><div class="MsoNormal"><span style="font-family: &quot;courier new&quot;;">&lt;/style&gt;<o:p></o:p></span></div></blockquote><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"></span></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-3IhfMNXJs9c/WiDKdKeH99I/AAAAAAAALhw/Veru-D_VKo4tTP64SK2n7AgRrloqei8qwCLcBGAs/s1600/adjustedNavBar.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="202" data-original-width="939" height="137" src="https://3.bp.blogspot.com/-3IhfMNXJs9c/WiDKdKeH99I/AAAAAAAALhw/Veru-D_VKo4tTP64SK2n7AgRrloqei8qwCLcBGAs/s640/adjustedNavBar.gif" width="640" /></a></div><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">All that is left is adjust background color and icon you want to use.</span></span></span></span></span></span></span></span></span></span></span></span></span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Please note that in this example demo application uses both Navigation menu and Navigation bar.&nbsp;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><br /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Live <a href="https://apex.oracle.com/pls/apex/f?p=84111">demo</a>.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></div><div style="text-align: justify;"><br /><br /><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Happy APEXing,</span></span><br /><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Lino </span></span></div></div> SLino tag:blogger.com,1999:blog-8185384792158425670.post-3020069427011301016 Thu Nov 30 2017 22:29:00 GMT-0500 (EST) Nomeação Oracle ACE Associate http://desenvolvedorapex.blogspot.com/2017/11/nomeacao-oracle-ace-associate.html <div class="MsoNormal">Prezados,<o:p></o:p></div><div class="MsoNormal"><br /></div><div class="MsoNormal">É com grande satisfação e orgulho que informo que esta semana fui nomeado <b>Oracle ACE Associate</b>, sendo o primeiro do Brasil especialista na tecnologia Apex e único do setor público!<o:p></o:p></div><div class="MsoNormal"><br /></div><div class="MsoNormal">Atualmente apenas 20 profissionais contam com o reconhecimento de Oracle ACE no Brasil.</div><div class="MsoNormal"><o:p></o:p></div><div class="MsoNormal"><br /></div><div class="MsoNormal">Segundo a própria Oracle: “<i>o programa ACE é o reconhecimento pela excelência dentro da comunidade Oracle mundial, reconhecendo indivíduos que demonstraram tanto proficiência técnica quanto participação ativa na comunidade</i>”<o:p></o:p></div><div class="MsoNormal"><br /></div><div class="MsoNormal">Agradeço a todos os que acompanham o blog por fazerem parte desta conquista!<o:p></o:p></div><div class="MsoNormal"><br /></div><div class="MsoNormal">Segue meu perfil na lista de ACEs: <a href="https://apex.oracle.com/pls/apex/f?p=19297:4:::NO:4:P4_ID:17120">https://apex.oracle.com/pls/apex/f?p=19297:4:::NO:4:P4_ID:17120</a><o:p></o:p></div><div class="MsoNormal"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-K1R_sR-B1cg/WiB2PExXFLI/AAAAAAAAA2s/61XSTFm57rgODBfzLX0oU7pn3zu7D-UjgCLcBGAs/s1600/ACE%2Bprofile.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="776" data-original-width="762" height="400" src="https://3.bp.blogspot.com/-K1R_sR-B1cg/WiB2PExXFLI/AAAAAAAAA2s/61XSTFm57rgODBfzLX0oU7pn3zu7D-UjgCLcBGAs/s400/ACE%2Bprofile.png" width="392" /></a></div><div class="MsoNormal"><br /></div><div class="MsoNormal">Obrigado a todos!</div> Anderson Ferreira tag:blogger.com,1999:blog-5150514048465222719.post-4332118416604261951 Thu Nov 30 2017 16:22:00 GMT-0500 (EST) Upcoming December Webinars http://www.odtug.com/p/bl/et/blogaid=753&source=1 ODTUG's Online Education: Is there a topic you would like covered but do not see here? We are happy to take webinar suggestions. Email us at kgately@odtug.com. ODTUG http://www.odtug.com/p/bl/et/blogaid=753&source=1 Thu Nov 30 2017 12:19:10 GMT-0500 (EST) Oracle APEX Sessions @ Hyderabad, Chennai, and Bengaluru: December 2017 http://chaitanyain.blogspot.com/2017/11/oracle-apex-sessions-hyderabad-chennai.html <div dir="ltr" style="text-align: left;" trbidi="on"><div class="MsoNormal" style="text-align: justify;">If you are in Hyderabad, Chennai, and Bengaluru, then block your calendars to attend Oracle APEX sessions in December 2017. My colleague Shakeeb Rahman (<a href="https://twitter.com/shakeeb">@shakeeb</a>) and I are presenting in these three cities:<o:p></o:p></div><div class="MsoListParagraphCxSpFirst" style="mso-list: l2 level1 lfo1; text-align: justify; text-indent: -.25in;"></div><ul><li><span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><b><span style="text-indent: -0.25in;">Dec 8-9: AIOUG, Sangam 2017, Hyderabad. Register today: </span><a href="http://bit.ly/2imJ6ip" style="text-indent: -0.25in;">http://bit.ly/2imJ6ip</a></b></li><li><b><span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="text-indent: -0.25in;">Dec 11: orclapex Chennai Meetup: </span><span style="text-indent: -0.25in;">&nbsp;</span><a href="http://bit.ly/2zBLqFH" style="text-indent: -0.25in;">http://bit.ly/2zBLqFH</a></b></li><li><b><span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="text-indent: -0.25in;">Dec 13: orclapex Bangalore Meetup: </span><a href="http://bit.ly/2i2Uax6" style="text-indent: -0.25in;">http://bit.ly/2i2Uax6</a></b></li></ul><b>&nbsp;</b><span style="text-align: justify;">The first one is at Hyderabad, and is AIOUG's (All India Oracle Users Group) annual event, </span><a href="http://www.aioug.org/sangam17/" style="text-align: justify;">Sangam 2017</a><span style="text-align: justify;">. &nbsp;What are we doing at Sangam 2017?</span><br /><div class="MsoNormal" style="text-align: justify;"><o:p></o:p></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-6eGBbj7gxCo/Wh_g-BrEGMI/AAAAAAAALqw/1i3jCv7fNjELH9OOU0L08tplkOvi_h7CgCLcBGAs/s1600/I_m_Speaking.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="250" data-original-width="250" src="https://1.bp.blogspot.com/-6eGBbj7gxCo/Wh_g-BrEGMI/AAAAAAAALqw/1i3jCv7fNjELH9OOU0L08tplkOvi_h7CgCLcBGAs/s1600/I_m_Speaking.jpg" /></a></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo2; text-align: justify; text-indent: -.25in;"></div><ul><li><span style="text-indent: -0.25in;"><b><a href="https://t.co/7RvWCGAhaO" target="_blank">Low Code 'Data First' Development</a> by Shakeeb on Dec 8</b></span></li><li><b><span style="text-indent: -0.25in;"><a href="https://t.co/b6qnhPL0yE" target="_blank">Oracle Application Express 5.2: Preliminary Features</a> by Chaitanya Koratamaddi on Dec 8</span></b></li><li><b><span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">&nbsp;</span><span style="text-indent: -0.25in;"><a href="https://t.co/3yf5a4MtIb" target="_blank">The Centre of the Universal Theme</a>, by Shakeeb on Dec 9</span></b></li></ul><div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo2; text-align: justify; text-indent: -.25in;"><o:p></o:p></div><div class="MsoNormal" style="text-align: justify;">We would definitely love to meet customers, developers, and apeks enthusiasts at Sangam!<o:p></o:p></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;"><b>Meetup Events</b>:</div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;">The agenda for the meetup events in Chennai and Bangalore (See the links above) is the same and they are planned from 4 pm to 8 pm on Dec 11 (Chennai), and Dec 13 (Bangalore). If you want to try out a one hour hands-on Workshop, make sure you bring your own laptop with a WiFi adapter. <b><i>Note that the open spots for these two meet up events are only 50! So, if you are sure of making it , then RSVP to reserve your spot right today!</i></b><o:p></o:p></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;"><b>You should consider attending one of these sessions if</b>:<o:p></o:p></div><div class="MsoListParagraphCxSpFirst" style="mso-list: l1 level1 lfo3; text-align: justify; text-indent: -.25in;"></div><ul><li><span style="text-indent: -0.25in;">You know nothing about Oracle APEX and you want to learn what is it</span></li><li><span style="text-indent: -0.25in;">You know nothing about a low code framework and want to understand low code application<br />development with Oracle Application Express</span></li><li><span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">&nbsp;</span><span style="text-indent: -0.25in;">You are a SQL, PL/SQL developer and you want to learn how easily to build Web apps in the<br />&nbsp;cloud</span></li><li><span style="font-size: 7pt; font-stretch: normal; font-variant-numeric: normal; line-height: normal;">&nbsp;</span><span style="text-indent: -0.25in;">You are a CIO or a manager and want to understand what Oracle APEX is and how it can help&nbsp; &nbsp; you and your business&nbsp;</span></li><li><span style="text-indent: -0.25in;">You have a client/server background and want to understand what you can do with your skills but in Web development and Cloud development</span></li><li><span style="text-indent: -0.25in;">You are a university student or a fresh graduate and want to explore Oracle APEX</span></li></ul><!--[if !supportLists]--><o:p></o:p><br /><div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo3; text-align: justify; text-indent: -.25in;"><o:p></o:p></div><div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo3; text-align: justify; text-indent: -.25in;"><o:p></o:p></div><div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo3; text-align: justify; text-indent: -.25in;"><o:p></o:p></div><div class="MsoListParagraphCxSpMiddle" style="mso-list: l1 level1 lfo3; text-align: justify; text-indent: -.25in;"><o:p></o:p></div><div class="MsoListParagraphCxSpLast" style="mso-list: l1 level1 lfo3; text-align: justify; text-indent: -.25in;"><o:p></o:p></div><div class="MsoNormal" style="text-align: justify;">And above all, if you have questions on UI, Universal Theme in Oracle APEX, then this is a great opportunity for you to get help, tips, and suggestions from <b>Shakeeb</b>, who leads the design for Oracle APEX.&nbsp;</div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;">Looking forward to meeting you!<o:p></o:p></div><div class="MsoListParagraph" style="text-align: justify;"><br /></div><br /><div class="MsoNormal" style="text-align: justify;"><br /></div></div> Chaitanya tag:blogger.com,1999:blog-6363745713301858920.post-676961519277028836 Thu Nov 30 2017 05:47:00 GMT-0500 (EST) APEX & Search http://www.explorer.uk.com/apex-search/ <div> <p class="p3"><span class="s1">This year, we have been looking into the best way to deliver search capabilities in an APEX application.</span></p> <p class="p3"><span class="s1">Customers are used to searching in Google and often want the same functionality in their business application.<span class="Apple-converted-space">  </span>While we don’t have the resources and years of research that Google have, we can take some ideas from them and develop great search mechanisms in our own applications.</span></p> <p class="p3"><span class="s1">The video below is a recording of a presentation we delivered at the APEX SIG in May where we talk about:</span></p> <ul> <li class="li3"><span class="s1">What search tools are available natively in APEX.</span></li> <li class="li3"><span class="s1">How we can customise these tools to deliver a much better search.</span></li> <li class="li3"><span class="s1">How we can integrate Oracle Text into our search solution.</span></li> <li class="li3"><span class="s1">How we can integrate an ElasticSearch database with APEX to deliver a fast, full-featured search solution without having to do the hard part.</span></li> </ul> </div> <div style="text-align: center;"><iframe src="https://www.youtube.com/embed/VKvYGi0dFR4?rel=0" width="900" height="500" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div> <p class="p3" style="text-align: left;"> <p>The post <a rel="nofollow" href="http://www.explorer.uk.com/apex-search/">APEX &#038; Search</a> appeared first on <a rel="nofollow" href="http://www.explorer.uk.com">Explorer | Award Winning UK Oracle Partner</a>.</p> admin http://www.explorer.uk.com/?p=6209 Thu Nov 30 2017 04:45:44 GMT-0500 (EST) Pimp Your Forms - Post/Pre Text Icons http://apexbyg.blogspot.com/2017/11/pimp-your-forms-postpre-text-icons.html <div dir="ltr" style="text-align: left;" trbidi="on"><div dir="ltr" style="text-align: left;" trbidi="on">I saw this at the presentation from <a href="https://twitter.com/patrickwolf" target="_blank">Patrick Wolf</a> (I believe somewhere in 2016.). You may already know this but today it took me some time to remember how it works.<br /><br />There's an easy way to make your forms look nicer by using declarative option to display pre/post item property values as a part of an item (Display as Block). You can display icons, text or links there.<br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-z2dQXLRz-a8/Wh8tfbGOskI/AAAAAAAAExM/psjXgsrnSHktsuPH_DoooFrrrAYfGgi1gCLcBGAs/s1600/Screen%2BShot%2B2017-11-29%2Bat%2B22.57.58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="376" data-original-width="712" height="168" src="https://2.bp.blogspot.com/-z2dQXLRz-a8/Wh8tfbGOskI/AAAAAAAAExM/psjXgsrnSHktsuPH_DoooFrrrAYfGgi1gCLcBGAs/s320/Screen%2BShot%2B2017-11-29%2Bat%2B22.57.58.png" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><i><br /></i><br /><h3 style="text-align: left;">How To</h3>To enable this, go to the Template Options of the item and set property Item Pre/Post Text to Display as Block:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-VX8Ab5MJBIE/Wh8uGXHHpMI/AAAAAAAAExU/B0a2xhsE2FADSnvi9pEzz4NSllavDEX3QCLcBGAs/s1600/Screen%2BShot%2B2017-11-29%2Bat%2B23.00.08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="576" data-original-width="1028" height="223" src="https://4.bp.blogspot.com/-VX8Ab5MJBIE/Wh8uGXHHpMI/AAAAAAAAExU/B0a2xhsE2FADSnvi9pEzz4NSllavDEX3QCLcBGAs/s400/Screen%2BShot%2B2017-11-29%2Bat%2B23.00.08.png" width="400" /></a></div><br /><br /><br />After that, put the following HTML code in Pre/Post Text item property (in this case it displays Euro currency icon):<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-if2EIoJKeqo/Wh8wQeK7HLI/AAAAAAAAExg/eDA5jYi1adcsLUp1uVpx3L91BLiCyU4twCLcBGAs/s1600/Screen%2BShot%2B2017-11-29%2Bat%2B23.09.48.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="608" data-original-width="818" height="296" src="https://1.bp.blogspot.com/-if2EIoJKeqo/Wh8wQeK7HLI/AAAAAAAAExg/eDA5jYi1adcsLUp1uVpx3L91BLiCyU4twCLcBGAs/s400/Screen%2BShot%2B2017-11-29%2Bat%2B23.09.48.png" width="400" /></a></div><br /><br />You can use any of the icons from&nbsp;<a href="https://apex.oracle.com/pls/apex/f?p=42:4000" target="_blank">Font APEX library</a>&nbsp;there.<br /><h3 style="text-align: left;"></h3><div><br /></div><h3 style="text-align: left;">Note</h3><div style="text-align: left;">In version 5.1.3.00.5 there's a CSS bug with icon alignment. You can fix this by adding following CSS (preferable to global CSS file or Theme Roller):</div><div style="text-align: left;"><br /><i><span style="font-family: Courier New, Courier, monospace;">.t-Form-itemText .fa {</span></i><br /><i><span style="font-family: Courier New, Courier, monospace;">&nbsp; vertical-align:middle;</span></i><br /><i><span style="font-family: Courier New, Courier, monospace;">&nbsp; top:-1px;</span></i><br /><i><span style="font-family: Courier New, Courier, monospace;">}</span></i><br /><br /></div><div>Demo is available <a href="https://apex.oracle.com/pls/apex/f?p=100309:48" target="_blank">here</a>.</div><div><br /></div><div>Enjoy!</div></div><br /></div> Marko Gorički tag:blogger.com,1999:blog-1003209687173038896.post-7567553083489472871 Wed Nov 29 2017 17:26:00 GMT-0500 (EST) Convert an APEX Application to Multi-Tenant https://jeffkemponoracle.com/2017/11/convert-an-apex-application-to-multi-tenant/ <p><img src="https://jeffkemponoracle.com/wp-content/uploads/2017/11/Kids-in-Carpool-300x169.jpg" alt="" width="300" height="169" class="alignright size-medium wp-image-4888" srcset="https://jeffkemponoracle.com/wp-content/uploads/2017/11/Kids-in-Carpool-300x169.jpg 300w, https://jeffkemponoracle.com/wp-content/uploads/2017/11/Kids-in-Carpool.jpg 600w" sizes="(max-width: 300px) 100vw, 300px" />So you&#8217;ve built an APEX application to solve a problem for one client, or one department, or just yourself &#8211; and you think it might be useful for others as well. How do you make that application available for other users, departments, or companies to reuse, while ensuring each sees only their own data and cannot mess around with others&#8217; data?</p> <h2>Architecting a Multi-Tenant Application</h2> <p>To make your application multi-tenant you have a few options.</p> <p><strong>Option #1.</strong> Copy the application to another workspace/schema, another Pluggable Database (in Oracle 12c+) or another database server entirely.</p> <p><strong>Option #2.</strong> Modify your data model to allow completely independant sets of data to co-exist in the same physical tables (e.g. a <code>security_group_id</code> column that allows the database to discriminate data for each tenant).</p> <p>The desirable properties of a multi-tenant system are as follows:</p> <p><img src="https://jeffkemponoracle.com/wp-content/uploads/2017/11/Picture1-300x191.jpg" alt="" width="300" height="191" class="alignright size-medium wp-image-4890" srcset="https://jeffkemponoracle.com/wp-content/uploads/2017/11/Picture1-300x191.jpg 300w, https://jeffkemponoracle.com/wp-content/uploads/2017/11/Picture1-768x490.jpg 768w, https://jeffkemponoracle.com/wp-content/uploads/2017/11/Picture1-1024x653.jpg 1024w, https://jeffkemponoracle.com/wp-content/uploads/2017/11/Picture1-750x478.jpg 750w, https://jeffkemponoracle.com/wp-content/uploads/2017/11/Picture1.jpg 1134w" sizes="(max-width: 300px) 100vw, 300px" />a. <strong>Tenant isolation</strong> &#8211; no tenant sees data for another tenant; no tenant can affect the app&#8217;s behaviour for another tenant; protect against &#8220;noisy neighbours&#8221; (i.e. those which impact system capacity and performance).</p> <blockquote><p><em>&#8220;<a href="http://mikehadlow.blogspot.com.au/2008/11/multi-tenancy-part-2-components-and.html">Hadlow&#8217;s first law of multi-tenancy:</a> A multi-tenanted application should not look like a multi-tenanted application.&#8221;</em></p></blockquote> <p>b. <strong>Administration</strong> &#8211; ability to backup/recover all data for a single tenant; ability to give a degree of control to each tenant (self service).</p> <p>c. <strong>Maintainability</strong> &#8211; simplicity of deploying enhancements and bug fixes for all tenants, or for one tenant at a time (e.g. rolling upgrades).</p> <p>d. <strong>Scalability</strong> &#8211; ability to easily add more tenants, ability to add more capacity for more tenants.</p> <p>Some of these properties are more easily and effectively achieved with option #1 (separate servers or schemas for each tenant), such as Isolation and Administration. Other properties are more easily and effectively achieved with option #2 (discriminator column) such as Maintainability and Scalability. This is a gross generalisation of course; there are many solutions to this design problem each with many pros and cons.</p> <p>Some inspiration may be gained from examining how Oracle Application Express achieves this goal: multi-tenant has been baked into the product, via its concept of Workspaces. Each tenant can be given their own workspace in APEX and are able to build and deploy applications in isolation from other workspaces. Internally, APEX maintains a unique <code>security_group_id</code> for each workspace. This works very well &#8211; a single Oracle database instance can serve thousands or tens of thousands of workspaces.</p> <p>It should be noted that a benefit of pursuing Option #2 is that it does not necessarily preclude using Option #1 as well, should the need arise later on &#8211; for example, to provide more capacity or better performance in the presence of more demanding tenants. For this reason, plus the fact that it&#8217;s much easier to maintain and enhance an application for all users at once if they&#8217;re colocated, I prefer Option #2.<br /> <span id="more-4774"></span></p> <blockquote><p><em>Note:</em> all sample code for this article may be found <a href="https://github.com/jeffreykemp/sample/tree/master/multitenant"><strong>here [github.com/jeffreykemp/sample/tree/master/multitenant]</strong></a>.</p></blockquote> <h2>Security Data Model</h2> <p>The core element to implementing a single-schema multi-tenant application is the addition of a tenant identifier added to most tables in the data model. A common convention for this column is to be a surrogate key ID named <code>security_group_id</code>. This ID must refer to something so we need a simple data model for security groups:</p> <p><img class="size-full wp-image-4777" src="https://jeffkemponoracle.com/wp-content/uploads/2017/10/security_role_datamodel.png" alt="" width="427" height="419" srcset="https://jeffkemponoracle.com/wp-content/uploads/2017/10/security_role_datamodel.png 427w, https://jeffkemponoracle.com/wp-content/uploads/2017/10/security_role_datamodel-300x294.png 300w" sizes="(max-width: 427px) 100vw, 427px" /></p> <p>First, we need a row to represent each tenant in a table that has <code>security_group_id</code> as its primary key:</p> <pre class="brush: sql; title: ; notranslate"> create sequence security_group_id_seq; create table security_groups ( security_group_id number not null , name varchar2(100) not null , active_ind varchar2(1) default 'Y' ); </pre> <p>Next, whenever someone logs into the application it must identify what their security group ID is; in order to allow a single user to access more than one tenant (i.e. so they don&#8217;t need to create new logins for each tenant, if they work for more than one client or department) we will design a table that will allow a user to be a member of any number of security groups:</p> <pre class="brush: sql; title: ; notranslate"> create table security_group_members ( security_group_id number not null , app_user varchar2(200) not null , last_login date , active_ind varchar2(1) default 'Y' ); </pre> <p>The <code>last_login</code> will be updated whenever the user logs in; we will also use it to automatically select their most recent group when they login. The <code>active_ind</code> attribute will be used if we want to temporarily (or permanently) restrict someone from a group, without having to actually delete the record.</p> <p>After they login, we might want to assign different roles to different users &#8211; e.g. we might want an &#8220;Administrator&#8221; role who can see and update everything in the system; and we might want to give a &#8220;Readonly&#8221; or reporting role to someone who only needs to see the data but are not allowed to make any updates. To support this, we need two tables &#8211; one to represent each type of role, and one to indicate for each member what role(s) they have for a particular security group.</p> <pre class="brush: sql; title: ; notranslate"> create table security_roles ( role_code varchar2(100) not null , name varchar2(100) not null , active_ind varchar2(1) default 'Y' ); create table security_group_roles ( security_group_id number not null , app_user varchar2(200) not null , role_code varchar2(100) not null , active_ind varchar2(1) default 'Y' ); </pre> <p>The full DDL for these tables, including all the constraints, may be viewed here: <a href="https://github.com/jeffreykemp/sample/blob/master/multitenant/security_tables.sql">security_tables.sql</a>.</p> <p>We have an <code>active_ind</code> attribute on both these tables &#8211; this way we can deactivate a role for a single user, or for all users at one go.</p> <blockquote><p><em>Note:</em> optimising this data model with appropriate indexes has been left as an exercise for the reader <img src="https://s.w.org/images/core/emoji/2.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p></blockquote> <p>We can prime the tables with some basic details like this:</p> &t;pre class="brush: sql; gutter: false; title: ; notranslate"> insert into security_roles (role_code,name) values ('ADMIN','Admin'); insert into security_roles (role_code,name) values ('EDITOR','Editor'); insert into security_roles (role_code,name) values ('READONLY','Readonly'); insert into security_groups (security_group_id,name) values (security_group_id_seq.nextval,'Default'); insert into security_group_members (security_group_id,app_user) values (security_group_id_seq.currval,'JEFF'); insert into security_group_roles (security_group_id,app_user,role_code) values (security_group_id_seq.currval,'JEFF','ADMIN'); </pre> <p>We need a database package to setup an APEX session using the data in these tables.</p> <pre class="brush: sql; title: ; notranslate"> create or replace package security_pkg is procedure init (app_user in varchar2 := null ,security_group_id in number := null ,apex in boolean := true ); end security_pkg; / </pre> <p>The <code>init</code> procedure is called after a user is authenticated. If <code>app_user</code> is null it uses <code>v('APP_USER')</code>. It queries the relevant tables to determine if the user is active for the selected security group, or, if that parameter is left null, it gets the security group they most recently logged in to. The intention is that later we will give them the ability to &#8220;switch&#8221; to another security group within the app, if they have access to multiple tenants.</p> <p>The full source code for the package may be viewed here: <a href="https://github.com/jeffreykemp/sample/blob/master/multitenant/security_pkg.sql">security_pkg.sql</a>. The important procedure at this point is <code>init</code>.</p> <pre class="brush: sql; title: ; notranslate"> create or replace package body security_pkg is procedure sctx (attr in varchar2 ,val in varchar2 ,apex in boolean) is begin if apex then dbms_session.set_context (namespace =&gt; 'CTX' ,attribute =&gt; attr ,value =&gt; val ,client_id =&gt; v('APP_USER') || ':' || v('SESSION')); else dbms_session.set_context (namespace =&gt; 'CTX' ,attribute =&gt; attr ,value =&gt; val ,username =&gt; user); end if; end sctx; procedure init (app_user in varchar2 := null ,security_group_id in number := null ,apex in boolean := true ) is cursor c (security_group_id in number ,app_user in varchar2 ) is select x.* from security_group_members x join security_groups g on g.security_group_id = x.security_group_id where x.app_user = c.app_user and (x.security_group_id = c.security_group_id or c.security_group_id is null) and x.active_ind = 'Y' and g.active_ind = 'Y' order by x.last_login desc nulls last; r c%rowtype; begin open c (security_group_id =&gt; security_group_id ,app_user =&gt; coalesce(app_user, v('APP_USER')) ); fetch c into r; close c; sctx('APP_USER', r.app_user, apex); sctx('SECURITY_GROUP_ID', r.security_group_id, apex); if apex and r.app_user is not null and r.security_group_id is not null then update security_group_members m set last_login = sysdate where m.security_group_id = r.security_group_id and m.app_user = r.app_user; end if; end init; end security_pkg; / </pre> <p>This package uses a globally accessible context (created by a user with <code>CREATE ANY CONTEXT</code> system privilege):</p> <pre class="brush: sql; gutter: false; title: ; notranslate"> create context ctx using myschema.security_pkg accessed globally; </pre> <p>Since we set the <code>client_id</code> in the call to <code>dbms_session.set_context</code> that matches that set by APEX for each session, the context values will be automatically loaded for each database call from a valid APEX session. We can then use very efficient calls to <code>sys_context('CTX','xyz')</code> throughout the application&#8217;s PL/SQL and SQL, including views.</p> <p>If we need to run code directly on the database, we can set up the security context for the session by calling <code>security_pkg.init</code> with <code>apex=&gt;false</code>. This uses the <code>username</code> parameter of <code>dbms_session.set_context</code> instead of <code>client_id</code> (<a href="https://docs.oracle.com/database/121/DBSEG/app_context.htm#DBSEG77432">reference</a>).</p> <blockquote><p><em>Side note:</em> in APEX 5+ you might consider using APEX&#8217;s context to get <code>APP_USER</code>; however, this has the disadvantage that all database procedures that need to interact with the data must first set up an APEX session before they can work. The method I&#8217;ve used here allows batch jobs, for example, to simply call <code>security_pkg.init</code> with the user and security group ID directly.</p></blockquote> <h2>APEX Authentication Scheme</h2> <p>We need to get APEX to set up the user&#8217;s context after they login; to do this we simply add the following call to the <strong>Post-Authentication Procedure Name</strong> attribute of the application&#8217;s current authentication scheme:</p> <pre class="brush: sql; gutter: false; title: ; notranslate"> schemaname.security_pkg.init </pre> <p><img src="https://jeffkemponoracle.com/wp-content/uploads/2017/10/authenticationscheme.png" alt="" width="731" height="237" class="alignnone size-full wp-image-4817" srcset="https://jeffkemponoracle.com/wp-content/uploads/2017/10/authenticationscheme.png 731w, https://jeffkemponoracle.com/wp-content/uploads/2017/10/authenticationscheme-300x97.png 300w" sizes="(max-width: 731px) 100vw, 731px" /></p> <p>For more details on how Oracle application contexts work within APEX, refer to my earlier article, <a href="https://jeffkemponoracle.com/2013/02/apex-and-application-contexts/">&#8220;APEX and Application Contexts&#8221;</a>.</p> <h2>APEX Authorization Schemes</h2> <p>This step is not strictly part of the multi-tenant feature; I&#8217;ve included this step here as part of the implementation of the role-based security system we have created.</p> <p>We can allow/disallow access to features of the APEX application according to the user&#8217;s roles in our security model, by creating Authorization Schemes. For example, we can create one to restrict features to Administrators only with a scheme like this:</p> <p><strong>Scheme Type</strong> = PL/SQL Function Returning Boolean<br /> <strong>PL/SQL Function Body</strong> = <code>return security_pkg.user_has_role('ADMIN');</code></p> <p><img src="https://jeffkemponoracle.com/wp-content/uploads/2017/10/authorizationscheme.png" alt="" width="778" height="417" class="alignnone size-full wp-image-4818" srcset="https://jeffkemponoracle.com/wp-content/uploads/2017/10/authorizationscheme.png 778w, https://jeffkemponoracle.com/wp-content/uploads/2017/10/authorizationscheme-300x161.png 300w, https://jeffkemponoracle.com/wp-content/uploads/2017/10/authorizationscheme-768x412.png 768w, https://jeffkemponoracle.com/wp-content/uploads/2017/10/authorizationscheme-750x402.png 750w" sizes="(max-width: 778px) 100vw, 778px" /></p> <p>I will typically create authorization schemes for each role; sometimes I&#8217;ll create a scheme that combines conditions on multiple roles (e.g. if a feature needs to be visible to more than one role).</p> <p>The source code for the <code>user_has_role</code> function may be found in <a href="https://github.com/jeffreykemp/sample/blob/master/multitenant/security_pkg.sql">security_pkg.sql</a>.</p> <h2>Discriminator Column</h2> <p>Now that the security data model is in place, we shall add the <code>security_group_id</code> column to all the tables in the application&#8217;s data model. In some cases you might decide to just add the column to the core tables of the data model; however, it&#8217;s more convenient to standardise and add it to all tables. You will find, however, that it is a requirement for any tables with any natural keys (i.e. non-surrogate primary keys, or unique constraints on user-entered data) because these will need to have the discriminator column added later on.</p> <p><strong>1. Set up a session</strong></p> <pre class="brush: sql; gutter: false; title: ; notranslate"> exec security_pkg.init('JEFF',apex=&gt;false); </pre> <p><strong>2. Add <code>security_group_id</code> column to the table</strong></p> <pre class="brush: sql; gutter: false; title: ; notranslate"> alter table mytable add security_group_id integer default sys_context('CTX','SECURITY_GROUP_ID') not null; alter table mytable add constraint mytable$secfk foreign key (security_group_id) references security_group (security_group_id); </pre> <p>In my security package I have defined a simple VPD policy that will apply to all my tables. It returns a single, static string which will be added to any queries on the tables, to ensure that each user will only see rows for their security group.</p> <pre class="brush: sql; title: ; notranslate"> function vpd_policy (object_schema in varchar2 ,object_name in varchar2 ) return varchar2 is begin return q'[ security_group_id = sys_context('CTX','SECURITY_GROUP_ID') ]'; end vpd_policy; </pre> <p>Call <code>dbms_rls.add_policy</code> for each table:</p> <pre class="brush: sql; gutter: false; title: ; notranslate"> begin dbms_rls.add_policy (object_name =&gt; 'MYTABLE' ,policy_name =&gt; 'vpd_policy' ,policy_function =&gt; 'security_pkg.vpd_policy' ,update_check =&gt; true ,static_policy =&gt; true); end; </pre> <p>I set <code>update_check</code> to <code>true</code> to ensure that users cannot try to override the security group ID with any insert or update. Since the policy function returns the same string regardless of which user or session is executing it, I&#8217;ve also set <code>static_policy</code> to <code>true</code> which may give a small performance benefit.</p> <h2>Poor Man&#8217;s VPD</h2> <p>If you don&#8217;t have the Enterprise Edition of Oracle you might need to consider an alternative method &#8211; <a href="http://www.talkapex.com/2010/07/poor-mans-vpd-in-apex-and-oracle-xe/"><strong>&#8220;Poor Man&#8217;s VPD&#8221;</strong></a>. This generally entails restricting access to all base tables (e.g. moving them to another schema) and only allowing queries and DML via a view for each table which incorporates the necessary predicate on <code>security_group_id</code>.</p> <p>I&#8217;ve used the following procedure to convert a table to a view; it renames the table to add a suffix (<code>$B</code>) and creates a view (minus the <code>security_group_id</code>) on the same table, along with the necessary predicate, plus the <code>with check option</code> for good measure.</p> <pre class="brush: sql; title: ; notranslate"> procedure table2view (table_name in varchar2) is l_table_name varchar2(30); l_columns varchar2(32767); begin l_table_name := upper(substr(table_name,1,30-length('$B')) || '$B'); begin execute immediate 'alter table ' || table_name || ' rename to ' || l_table_name; exception when others then -- if the table doesn't exist, it was probably -- already converted; so we don't error out -- and recreate the view if sqlcode!=-942 then raise; end if; end; for r in (select column_name from user_tab_columns where table_name = table2view.l_table_name and column_name != 'SECURITY_GROUP_ID' order by column_id) loop if l_columns is not null then l_columns := l_columns || ','; end if; l_columns := l_columns || 'x.' || lower(r.column_name); end loop; execute immediate replace(replace(replace(q'[ create or replace force view #VIEW# as select #COLUMNS# from #TABLE# x where x.security_group_id = sys_context('CTX','SECURITY_GROUP_ID') with check option ]','#VIEW#',table_name) ,'#COLUMNS#',l_columns) ,'#TABLE#',l_table_name); end table2view; </pre> <p>Source: <a href="https://github.com/jeffreykemp/sample/blob/master/multitenant/table2view.sql">table2view.sql</a></p> <p>To stop users from inserting or updating the <code>security_group_id</code> column, I&#8217;ve used a trigger that checks the before and after values on each insert, update and delete:</p> <pre class="brush: sql; title: ; notranslate"> create trigger MYTABLE$TRG before insert or update or delete on MYTABLE for each row begin if updating or deleting then security_pkg.validate (security_group_id =&gt; :old.security_group_id); end if; if inserting then :new.security_group_id := sys_context('CTX','SECURITY_GROUP_ID'); end if; if inserting or updating then security_pkg.validate (security_group_id =&gt; :new.security_group_id); end if; end MYTABLE$TRG; </pre> <p>I wrote a simple procedure to generate this trigger for each table, after adding the <code>security_group_id</code> column. Source: <a href="https://github.com/jeffreykemp/sample/blob/master/multitenant/convert2multitenant.sql">convert2multitenant.sql</a></p> <h2>Unique Constraints</h2> <p>There is one more hurdle to jump for this solution to work: uniqueness constraints. If one tenant tries to insert or update a row that collides with a value already committed for a different tenant, the uniqueness constraint will trap them. Therefore, we need to add <code>security_group_id</code> to all unique constraints (and any unique indexes as well, if any were created independently of any constraint). We would probably make an exception for surrogate keys, since these should already be generated by a globally unique method and should not be updatable by users. These could still cause a problem in the case that a tenant needs to import data from a different database instance, if any keys happen to collide; this may be a good argument for using GUIDs for generating surrogate keys instead of a sequence.</p> <p>To convert the unique constraints to include <code>security_group_id</code> I&#8217;ve used the following procedure. If it is called with just the table name, it will attempt to convert all Unique constraints on the table. If it is called with the name of a particular constraint, it will attempt to convert just that one constraint (I use this for primary key constraints that need to be converted).</p> <pre class="brush: sql; title: ; notranslate"> procedure fix_unique_constraint (table_name in varchar2 ,constraint_name in varchar2 := null) is l_ddl varchar2(32767); begin for r in ( select c.table_name, c.constraint_name ,decode(c.constraint_type ,'U','unique' ,'P','primary key') as constraint_type ,(select listagg('&quot;'||cc.column_name||'&quot;',',') within group (order by position) from user_cons_columns cc where cc.constraint_name = c.constraint_name and cc.table_name = c.table_name and cc.column_name != 'SECURITY_GROUP_ID' ) as column_list from user_constraints c where c.table_name = fix_unique_constraint.table_name and ((fix_unique_constraint.constraint_name is null and c.constraint_type = 'U') or c.constraint_name = fix_unique_constraint.constraint_name) ) loop -- drop the constraint l_ddl := 'alter table &quot;' || r.table_name || '&quot; drop constraint &quot;' || r.constraint_name || '&quot;'; dbms_output.put_line(l_ddl); execute immediate l_ddl; -- recreate the constraint l_ddl := 'alter table &quot;' || r.table_name || '&quot; add constraint &quot;' || r.constraint_name || '&quot; ' || r.constraint_type || ' (security_group_id,' || r.column_list || ')'; dbms_output.put_line(l_ddl); execute immediate l_ddl; end loop; end fix_unique_constraint; </pre> <p>Source: <a href="https://github.com/jeffreykemp/sample/blob/master/multitenant/fix_unique_constraint.sql">fix_unique_constraint.sql</a></p> <p>Note: one scenario this procedure fails to cover is where the constraint is based on an index of the same name that was created prior to the constraint; in that case, the constraint will not drop the index, causing the <code>add constraint</code> to fail when it tries to recreate the index.</p> <h2>Referential Constraints</h2> <p>In my case, the data model is replete with surrogate keys based on sequences, so we don&#8217;t need to worry about adding <code>security_group_id</code> to the primary key constraints. In cases where we do, we would also need to consider referential constraints. If a foreign key refers to a constraint to which we have just added <code>security_group_id</code>, we need to update the foreign key constraint to include it as well.</p> <p>Writing this as an automated procedure is left as an exercise for the reader. This process would entail dropping all foreign key constraints that refer to the table, dropping the primary key constraint, recreating the primary key constraint with the addition of <code>security_group_id</code>, and then recreating the foreign keys, adding <code>security_group_id</code> to each.</p> <h2>Summary</h2> <p>This article describes a simple method to take an existing data model in an Oracle schema supporting an Oracle Application Express application and convert it to one that supports multiple tenants. It does this by adding a discriminator column (<code>security_group_id</code>) to each table in the data model, with a referential constraint to a simple user security data model.</p> <p>We use triggers and Virtual Private Database (either Oracle&#8217;s builtin Row Level Security feature, or by rolling our own by hiding the tables behind views) to ensure tenant isolation for queries, inserts, updates and deletes. Only minor changes to the existing codebase and APEX application were required for all of this to work.</p> <p>I hope this was an interesting read. Your comments or constructive criticism are (as always) welcome.</p> <h2>Further Reading</h2> <ul> <li><a href="https://jeffkemponoracle.com/2013/02/apex-and-application-contexts/">&#8220;APEX and Application Contexts&#8221;</a></li> <li><a href="https://docs.oracle.com/database/121/DBSEG/vpd.htm">Oracle 12c Database Security Guide: Virtual Private Database</a></li> <li><a href="https://docs.oracle.com/database/121/ARPLS/d_rls.htm">Oracle 12c Documentation: DBMS_RLS</a></li> <li><a href="https://docs.oracle.com/database/121/ARPLS/d_sessio.htm">Oracle 12c Documentation: DBMS_SESSION</a></li> <li><a href="https://docs.oracle.com/database/122/CNCPT/overview-of-the-multitenant-architecture.htm#CNCPT-GUID-8F8979E3-9B81-4293-B3CF-ACCF42A0B2D6">Oracle 12.2 Documentation: &#8220;Overview of the Multitenant Architecture&#8221;</a></li> <li><a href="https://oracle-base.com/articles/12c/multitenant-overview-container-database-cdb-12cr1">Tim Hall, Oracle-Base: &#8220;Multitenant: Overview of Container Databases (CDB) and Pluggable Databases (PDB)&#8221;</a></li> <li><a href="http://www.talkapex.com/2010/07/poor-mans-vpd-in-apex-and-oracle-xe/">Martin Giffy D&#8217;Souza: &#8220;Poor Man&#8217;s VPD in APEX and Oracle XE&#8221;</a></li> <li><a href="https://docs.microsoft.com/en-us/azure/sql-database/sql-database-design-patterns-multi-tenancy-saas-applications">Microsoft: &#8220;Design Patterns for Multi-tenant SaaS Applications and Azure SQL Database&#8221;</a></li> <li><a href="https://softwareengineering.stackexchange.com/questions/340531/do-multi-tenant-dbs-have-multiple-databases-or-shared-tables">Software Engineering Stack Exchange: &#8220;Do multi-tenant DBs have multiple databases or shared tables?&#8221;</a></li> <li><a href="https://softwareengineering.stackexchange.com/questions/141261/multi-tenancy-single-database-vs-multiple-database">Software Engineering Stack Exchange: &#8220;Multi-tenancy &#8211; single database vs multiple database&#8221;</a></li> <li><a href="http://discuss.joelonsoftware.com/default.asp?design.4.319460.16">Joel on Software: &#8220;Multi-tenant database design&#8221;</a></li> <li><a href="http://mikehadlow.blogspot.com.au/2008/11/multi-tenancy-part-1-strategy.html">Mike Hadlow: &#8220;Multi-tenancy part 1: Strategy&#8221;</a></li> <li><a href="http://mikehadlow.blogspot.com.au/2008/11/multi-tenancy-part-2-components-and.html">Mike Hadlow: &#8220;Multi-tenancy part 2: Components and Context&#8221;</a></li> </ul> <h2>Related Slide Deck</h2> <p><strong><a href="https://www.slideshare.net/JeffreyKemp1/one-app-many-clients-converting-an-apex-application-to-multitenant" target="_blank" rel="noopener">One App, Many Clients: Converting an APEX Application to Multi-Tenant</a></strong> (presented at the AUSOUG Connect conference, November 2017)</p> <iframe src="https://www.slideshare.net/slideshow/embed_code/82970654" width="400" height="337" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/> Jeffrey Kemp https://jeffkemponoracle.com/?p=4774 Tue Nov 28 2017 22:50:53 GMT-0500 (EST) Orlando From the Eyes of a Local http://www.odtug.com/p/bl/et/blogaid=752&source=1 With ODTUG Kscope18 just over 6 months away, we're getting very excited about all the activities and attractions that Orlando has to offer! Here's a list of a few "hot spots" that we encourage you to check out during your stay in Orlando. ODTUG http://www.odtug.com/p/bl/et/blogaid=752&source=1 Tue Nov 28 2017 09:45:44 GMT-0500 (EST) DATE, TIMESTAMP und Formatmasken https://blogs.oracle.com/apexcommunity_deutsch/date-timestamp-und-formatmasken <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Mit DATE oder TIMESTAMP Datentypen wird st&auml;ndig gearbeitet; sie kommen in jedem Datenmodell vor und folglich muss jede APEX-Anwendung damit umgehen k&ouml;nnen. Dieser Tipp enth&auml;lt einige Informationen zum Umgang mit diesen Datentypen - und worauf man als APEX-Entwickler achten sollte.</p> <p class="parahead2" style="font-family: Arial, Helvetica, sans-serif; font-size: 16pt; font-weight: bold; color: rgb(102, 102, 102);">DATE oder TIMESTAMP?</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Die Oracle-Datenbank bietet vier Datentypen zum Speichern von Zeitstempeln an:</p> <ul style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 16px;"> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">DATE</span>&nbsp;ist der &auml;lteste Datentyp zum Speichern von Zeitstempeln in der Datenbank. Anders als der Name nahelegt, speichert DATE immer sowohl das Datum&nbsp;<span class="italicbodycopy" style="font-size: 12pt; line-height: 16pt; font-style: italic;">als auch die Uhrzeit</span>&nbsp;ab. Intern werden ganz konkrete Werte f&uuml;r Jahr, Monat, Tag, Stunde, Minute und Sekunde abgelegt. Die SQL-Funktion&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">SYSDATE</span>&nbsp;gibt den aktuellen Zeitstempel zur&uuml;ck. SQL&gt; alter session set nls_date_format=&#39;YYYY-MM-DD HH24:MI:SS&#39;; Session ge&auml;ndert. SQL&gt; select sysdate, dump(sysdate) as date_bytes from dual; SYSDATE DATE_BYTES -------------------- ----------------------------------- 2017-11-23 23:41:08 Typ=13 Len=8: 225,7,11,23,23,41,8,0 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP</span>&nbsp;erweitert den DATE-Datentypen um Sekundenbruchteile. Das interne Speicherformat f&uuml;r den TIMESTAMP sieht auch die Zeitzone vor, um diese aktiv nutzen zu k&ouml;nnen, braucht es jedoch die nachfolgend erl&auml;uterten Datentypen TIMESTAMP WITH TIME ZONE und TIMESTAMP WITH LOCAL TIME ZONE. Wie man am folgenden Beispiel sehen kann, liefert&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">LOCALTIMESTAMP</span>&nbsp;den aktuellen Zeitstempel als TIMESTAMP-Datentyp zur&uuml;ck. SQL&gt; alter session set nls_timestamp_format=&#39;YYYY-MM-DD HH24:MI:SS.FF6&#39;; Session ge&auml;ndert. SQL&gt; select localtimestamp, dump(localtimestamp) ts_bytes from dual; LOCALTIMESTAMP TS_BYTES --------------------------- --------------------------------------------------------------------- 2017-11-24 08:45:41.434175 Typ=187 Len=20: 225,7,11,24,8,45,41,0,24,252,224,25,1,0,3,0,127,1,0,0 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP WITH TIME ZONE</span>&nbsp;unterst&uuml;tzt die Zeitzone, und zwar explizit. Die Zeitzonen-Information wird beim Erzeugen einer Instanz explizit &uuml;bergeben und in der Ausgabe sollte sie stets enthalten sein (richtige Formatmaske verwenden). Gibt man einen TIMESTAMP WITH TIME ZONE ohne Zeitzonen-Information aus, so ist die Information unvollst&auml;ndig.<br /> Es finden keine implizite Umrechnungen zwischen Zeitzonen statt; dem Entwickler stehen SQL-Funktionen daf&uuml;r zur Verf&uuml;gung. Instanz. Um den aktuellen Zeitstempel zu bekommen, verwendet man die SQL-Funktionen&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">SYSTIMESTAMP</span>&nbsp;oder<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">CURRENT_TIMESTAMP</span>. Ersterer liefert die Systemzeit in der Datenbank-Zeitzone, letzterer in der Session Zeitzone zur&uuml;ck. Im folgenden ein Beispiel f&uuml;r SYSTIMESTAMP. SQL&gt; alter session set nls_timestamp_tz_format=&#39;YYYY-MM-DD HH24:MI:SS.FF6 TZR&#39;; Session ge&auml;ndert. SQL&gt; select systimestamp from dual; SYSTIMESTAMP ---------------------------------- 2017-11-23 23:57:04.609608 -08:00 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP WITH LOCAL TIME ZONE</span>&nbsp;unterst&uuml;tzt die Zeitzone implizit. Eine Instanz wird ohne Angabe einer Zeitzone erzeugt; es wird die Session-Zeitzone angenommen; die Ausgabe erfolgt ebenfalls in der Session Zeitzone. Oracle-Intern werden die Instanzen auf die Datenbank-Zeitzone normalisiert.&nbsp;<br /> Das folgende Beispiel zeigt, wie TIMESTAMP WITH LOCAL TIME ZONE funktioniert. Zuerst wird eine Tabelle erzeugt und darin der aktuelle Zeitstempel gespeichert. SYSTIMESTAMP liefert zwar einen TIMESTAMP WITH TIME ZONE zur&uuml;ck, dieser wird aber automatisch auf TIMESTAMP WITH LOCAL TIME ZONE konviertiert. Wird die Tabelle danach selektiert, so wird stets auf die aktuelle Session-Zeitzone umgerechnet. SQL&gt; create table zeitstempel( ts timestamp with local time zone ); Table created. SQL&gt; insert into zeitstempel values ( systimestamp ); 1 row created. SQL&gt; alter session set time_zone=&#39;<strong style="color: red;">Europe/Berlin</strong>&#39;; Session altered. SQL&gt; select * from zeitstempel; TS --------------------------------------------------------------------------- 2017-11-24 <strong style="color: red;">12</strong>:55:39.761283 SQL&gt; alter session set time_zone=&#39;<strong style="color: red;">EST</strong>&#39;; Session altered. SQL&gt; select * from zeitstempel; TS --------------------------------------------------------------------------- 2017-11-24 <strong style="color: red;">06</strong>:55:39.761283 </li> </ul> <p class="parahead2" style="font-family: Arial, Helvetica, sans-serif; font-size: 16pt; font-weight: bold; color: rgb(102, 102, 102);">Formatmasken</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Ob man mit einer Anwendung oder einem Werkzeug wie SQL Developer oder SQLPlus arbeitet; jede Ausgabe einer DATE- oder TIMESTAMP Instanz ist eine Konvertierung nach VARCHAR2. Die macht man entweder mit&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TO_CHAR</span>&nbsp;explizit - oder die Datenbank macht es implizit. Und hierf&uuml;r sind die NLS-Datumsformatmasken wichtig. F&uuml;r die verschiedenen Datentypen gibt es verschiedene NLS-Parameter f&uuml;r die Default-Formatmaske.</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;"><a href="https://apex.oracle.com/pls/apex/germancommunities/apexcommunity/tipp/6381/index.html" target="_blank">Weiterlesen ...</a></p> Carsten Czarski https://blogs.oracle.com/apexcommunity_deutsch/date-timestamp-und-formatmasken Fri Nov 24 2017 08:48:00 GMT-0500 (EST) DATE, TIMESTAMP and Format Masks ... https://blogs.oracle.com/apex/date%2C-timestamp-and-format-masks <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Developers are working with DATE or TIMESTAMP data types more or less all the time; they&#39;re being used in allmost all APEX applications. This posting contains some information about the differences between DATE and TIMESTAMP and about format masks and how they work in Application Express.</p> <p class="parahead2" style="font-family: Arial, Helvetica, sans-serif; font-size: 16pt; font-weight: bold; color: rgb(102, 102, 102);">DATE or TIMESTAMP?</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Actually, there is not one, not two but four data types for datetime values in the Oracle database:</p> <ul style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 16px;"> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">DATE</span>&nbsp;is the oldest and most widely used data type. Though the name is &quot;DATE&quot;, it stores also information about the time. Internally, DATE stores year, month, day, hour, minute and second as explicit values. To get the current timestamp as an instance of DATE, use the&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">SYSDATE</span>&nbsp;SQL function. SQL&gt; alter session set nls_date_format=&#39;YYYY-MM-DD HH24:MI:SS&#39;; Session altered. SQL&gt; select sysdate, dump(sysdate) as date_bytes from dual; SYSDATE DATE_BYTES -------------------- ----------------------------------- 2017-11-23 23:41:08 Typ=13 Len=8: 225,7,11,23,23,41,8,0 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP</span>&nbsp;extends DATE by fractional seconds. Internally, time zone information is also contained, but in order to work with time zones, one of the other two data types, TIMESTAMP WITH TIME ZONE or TIMESTAMP WITH LOCAL TIME ZONE must be used. To get the current timestamp as a TIMESTAMP instance, use the&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">LOCALTIMESTAMP</span>&nbsp;SQL function. As the DUMP result below shows, TIMESTAMP stores year, month, day, hour, minute and second similar to DATE. The other bytes are there for fractional seconds and time zone information. TIMESTAMP instances consume more space on disk than DATE instances, which is natural - they contain more information. SQL&gt; alter session set nls_timestamp_format=&#39;YYYY-MM-DD HH24:MI:SS.FF6&#39;; Session altered. SQL&gt; select localtimestamp, dump(localtimestamp) ts_bytes from dual; LOCALTIMESTAMP TS_BYTES --------------------------- --------------------------------------------------------------------- 2017-11-24 08:45:41.434175 Typ=187 Len=20: 225,7,11,24,8,45,41,0,24,252,224,25,1,0,3,0,127,1,0,0 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP WITH TIME ZONE</span>&nbsp;allows to explicitly work with time zone information. A time zone can be used to create a TIMESTAMP WITH TIME ZONE instance and it is explicitly contained in the output (use the right format mask). When the output of a TIMESTAMP WITH TIME ZONE value does not contain a time zone, you have incomplete data.<br /> Oracle does not implicitly convert instances of this data type between time zones; this can be done explicitly with the AT TIME ZONE clause. To get the current time as a TIMESTAMP WITH TIME ZONE instance, we can use two functions:&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">SYSTIMESTAMP</span>&nbsp;returns the current time in the database time zone and&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">CURRENT_TIMESTAMP</span>&nbsp;returns it in the current session time zone. The following example uses SYSTIMESTAMP. SQL&gt; alter session set nls_timestamp_tz_format=&#39;YYYY-MM-DD HH24:MI:SS.FF6 TZR&#39;; Session altered. SQL&gt; select systimestamp as ts_bytes from dual; SYSTIMESTAMP ---------------------------------- 2017-11-23 23:57:04.609608 -08:00 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP WITH LOCAL TIME ZONE</span>&nbsp;does not expose the time zone information (to the application, it looks like a TIMESTAMP), but it uses tome zones implicitly: An instance is created without time zone information, the session time zone is assumed. Stored instances are normalized to the database time zone. When the data is retrieved, users see it (again) in the session time zone.&nbsp;<br /> The following example illustrates how TIMESTAMP WITH LOCAL TIME ZONE works: First, a table is created. Then the current time is retrieved and stored into the table ( SYSTIMESTAMP returns TIMESTAMP WITH TIME ZONE, but this is automatically converted to TIMESTAMP WITH LOCAL TIME ZONE ). When the table is then being selected, the returned data changes with the session time zone. SQL&gt; create table mytimestamps( ts timestamp with local time zone ); Table created. SQL&gt; insert into mytimestamps values ( systimestamp ); 1 row created. SQL&gt; alter session set time_zone=&#39;<strong style="color: red;">Europe/Berlin</strong>&#39;; Session altered. SQL&gt; select * from mytimestamps; TS --------------------------------------------------------------------------- 2017-11-24 <strong style="color: red;">12</strong>:55:39.761283 SQL&gt; alter session set time_zone=&#39;<strong style="color: red;">EST</strong>&#39;; Session altered. SQL&gt; select * from mytimestamps; TS --------------------------------------------------------------------------- 2017-11-24 <strong style="color: red;">06</strong>:55:39.761283 </li> </ul> <p class="parahead2" style="font-family: Arial, Helvetica, sans-serif; font-size: 16pt; font-weight: bold; color: rgb(102, 102, 102);">Format Masks</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Whether we work within an application or a tool like SQL Plus or SQL Developer; whenever we output a DATE or TIMESTAMP instance, we&#39;re converting it to VARCHAR2. We can do this explicitly using TO_CHAR or Oracle will do it implcitly. And now NLS format masks kick in - the format mask decides how a DATE is converted to a VARCHAR2 and back. The are defaults for NLS format masks at the database level, we can set them at the session level or we can pass a format mask to the individual TO_CHAR call.</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;"><a href="https://apex.oracle.com/pls/apex/germancommunities/apexcommunity/tipp/6381/index-en.html" target="_blank">Continue reading ...&nbsp;</a></p> Carsten Czarski https://blogs.oracle.com/apex/date%2C-timestamp-and-format-masks Fri Nov 24 2017 08:45:05 GMT-0500 (EST) DATE, TIMESTAMP and Format Masks ... https://blogs.oracle.com/apex/date%2C-timestamp-and-format-masks <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Developers are working with DATE or TIMESTAMP data types more or less all the time; they&#39;re being used in allmost all APEX applications. This posting contains some information about the differences between DATE and TIMESTAMP and about format masks and how they work in Application Express.</p> <p class="parahead2" style="font-family: Arial, Helvetica, sans-serif; font-size: 16pt; font-weight: bold; color: rgb(102, 102, 102);">DATE or TIMESTAMP?</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Actually, there is not one, not two but four data types for datetime values in the Oracle database:</p> <ul style="color: rgb(0, 0, 0); font-family: Arial, Helvetica, sans-serif; font-size: 16px;"> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">DATE</span>&nbsp;is the oldest and most widely used data type. Though the name is &quot;DATE&quot;, it stores also information about the time. Internally, DATE stores year, month, day, hour, minute and second as explicit values. To get the current timestamp as an instance of DATE, use the&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">SYSDATE</span>&nbsp;SQL function. SQL&gt; alter session set nls_date_format=&#39;YYYY-MM-DD HH24:MI:SS&#39;; Session altered. SQL&gt; select sysdate, dump(sysdate) as date_bytes from dual; SYSDATE DATE_BYTES -------------------- ----------------------------------- 2017-11-23 23:41:08 Typ=13 Len=8: 225,7,11,23,23,41,8,0 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP</span>&nbsp;extends DATE by fractional seconds. Internally, time zone information is also contained, but in order to work with time zones, one of the other two data types, TIMESTAMP WITH TIME ZONE or TIMESTAMP WITH LOCAL TIME ZONE must be used. To get the current timestamp as a TIMESTAMP instance, use the&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">LOCALTIMESTAMP</span>&nbsp;SQL function. As the DUMP result below shows, TIMESTAMP stores year, month, day, hour, minute and second similar to DATE. The other bytes are there for fractional seconds and time zone information. TIMESTAMP instances consume more space on disk than DATE instances, which is natural - they contain more information. SQL&gt; alter session set nls_timestamp_format=&#39;YYYY-MM-DD HH24:MI:SS.FF6&#39;; Session altered. SQL&gt; select localtimestamp, dump(localtimestamp) ts_bytes from dual; LOCALTIMESTAMP TS_BYTES --------------------------- --------------------------------------------------------------------- 2017-11-24 08:45:41.434175 Typ=187 Len=20: 225,7,11,24,8,45,41,0,24,252,224,25,1,0,3,0,127,1,0,0 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP WITH TIME ZONE</span>&nbsp;allows to explicitly work with time zone information. A time zone can be used to create a TIMESTAMP WITH TIME ZONE instance and it is explicitly contained in the output (use the right format mask). When the output of a TIMESTAMP WITH TIME ZONE value does not contain a time zone, you have incomplete data.<br /> Oracle does not implicitly convert instances of this data type between time zones; this can be done explicitly with the AT TIME ZONE clause. To get the current time as a TIMESTAMP WITH TIME ZONE instance, we can use two functions:&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">SYSTIMESTAMP</span>&nbsp;returns the current time in the database time zone and&nbsp;<span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">CURRENT_TIMESTAMP</span>&nbsp;returns it in the current session time zone. The following example uses SYSTIMESTAMP. SQL&gt; alter session set nls_timestamp_tz_format=&#39;YYYY-MM-DD HH24:MI:SS.FF6 TZR&#39;; Session altered. SQL&gt; select systimestamp as ts_bytes from dual; SYSTIMESTAMP ---------------------------------- 2017-11-23 23:57:04.609608 -08:00 </li> <li><span class="boldbodycopy" style="font-size: 12pt; line-height: 16pt; font-weight: bold;">TIMESTAMP WITH LOCAL TIME ZONE</span>&nbsp;does not expose the time zone information (to the application, it looks like a TIMESTAMP), but it uses tome zones implicitly: An instance is created without time zone information, the session time zone is assumed. Stored instances are normalized to the database time zone. When the data is retrieved, users see it (again) in the session time zone.&nbsp;<br /> The following example illustrates how TIMESTAMP WITH LOCAL TIME ZONE works: First, a table is created. Then the current time is retrieved and stored into the table ( SYSTIMESTAMP returns TIMESTAMP WITH TIME ZONE, but this is automatically converted to TIMESTAMP WITH LOCAL TIME ZONE ). When the table is then being selected, the returned data changes with the session time zone. SQL&gt; create table mytimestamps( ts timestamp with local time zone ); Table created. SQL&gt; insert into mytimestamps values ( systimestamp ); 1 row created. SQL&gt; alter session set time_zone=&#39;<strong style="color: red;">Europe/Berlin</strong>&#39;; Session altered. SQL&gt; select * from mytimestamps; TS --------------------------------------------------------------------------- 2017-11-24 <strong style="color: red;">12</strong>:55:39.761283 SQL&gt; alter session set time_zone=&#39;<strong style="color: red;">EST</strong>&#39;; Session altered. SQL&gt; select * from mytimestamps; TS --------------------------------------------------------------------------- 2017-11-24 <strong style="color: red;">06</strong>:55:39.761283 </li> </ul> <p class="parahead2" style="font-family: Arial, Helvetica, sans-serif; font-size: 16pt; font-weight: bold; color: rgb(102, 102, 102);">Format Masks</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;">Whether we work within an application or a tool like SQL Plus or SQL Developer; whenever we output a DATE or TIMESTAMP instance, we&#39;re converting it to VARCHAR2. We can do this explicitly using TO_CHAR or Oracle will do it implcitly. And now NLS format masks kick in - the format mask decides how a DATE is converted to a VARCHAR2 and back. The are defaults for NLS format masks at the database level, we can set them at the session level or we can pass a format mask to the individual TO_CHAR call.</p> <p class="bodycopy" style="color: rgb(0, 0, 0); font-size: 16px; font-family: Arial, Helvetica, sans-serif; line-height: 16pt; margin-top: 5mm;"><a href="https://apex.oracle.com/pls/apex/germancommunities/apexcommunity/tipp/6381/index-en.html" target="_blank">Continue reading ...&nbsp;</a></p> Carsten Czarski https://blogs.oracle.com/apex/date%2C-timestamp-and-format-masks Fri Nov 24 2017 08:45:05 GMT-0500 (EST) DOAG 2017: APEX APIs – Slides and Demo https://blog.danielhochleitner.de/2017/11/24/doag-2017-apex-apis-slides-and-demo/ <p>Thus my presentation was to 90% demo and I think demos should always be available, so attendees can reproduce what they saw, here´s a link to an online version of it:<br /> <a href="https://orclapex.io/ords/f?p=APEXAPI" rel="noopener" target="_blank">https://orclapex.io/ords/f?p=APEXAPI</a><br /> Use <em>demo / demo</em> to login&#8230;</p> <p>If you´re interested in an export file you can download it <a href="https://blogdanielhochleitner.files.wordpress.com/2017/11/f119_apex_api_demo.zip">here</a> to import it into your own workspace&#8230;</p> <p>The complete presentation (in german) can be found on my homepage:<br /> <a href="https://danielhochleitner.de/ords/web/slides/" rel="noopener" target="_blank">https://danielhochleitner.de/ords/web/slides/</a></p> <p>Thanks for attending &amp; see you at the next conference!</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/blogdanielhochleitner.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/blogdanielhochleitner.wordpress.com/245/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=blog.danielhochleitner.de&#038;blog=133858636&#038;post=245&#038;subd=blogdanielhochleitner&#038;ref=&#038;feed=1" width="1" height="1" /> Daniel Hochleitner http://blog.danielhochleitner.de/?p=245 Fri Nov 24 2017 05:36:26 GMT-0500 (EST) APEX Development on a Raspberry Pi http://www.explorer.uk.com/apex-development-on-a-raspberry-pi/ <p><strong>Before you get excited, I’ll start off by saying that there’s no way you’re going to get an Oracle database running properly on a Raspberry Pi at the moment. However, the Raspberry Pi can be more useful than it initially looks for APEX development because of the tools available.</strong></p> <p>I’ve been using a Raspberry Pi recently to integrate with Oracle APEX in my upcoming Tech17 presentation: APEX and the Internet of Things. The Pi 3 has come a long way since the early versions that I’m familiar with, so I thought it might be interesting to see if I could do my job from it yet. This blog is a short account of how things went, detailing what works and what doesn’t.</p> <h3><strong>Day 1<br /> </strong></h3> <p>So, first thing’s first, I need to start writing this blog. I installed the latest version of Libre Office with no problems, which will give me the word processing functionality needed.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/11/office.png" rel="lightbox[6198]"><img class="aligncenter size-full wp-image-6199" src="http://www.explorer.uk.com/wp-content/uploads/2017/11/office.png" alt="" width="1200" height="675" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/11/office.png 1200w, http://www.explorer.uk.com/wp-content/uploads/2017/11/office-300x169.png 300w, http://www.explorer.uk.com/wp-content/uploads/2017/11/office-768x432.png 768w, http://www.explorer.uk.com/wp-content/uploads/2017/11/office-1024x576.png 1024w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p> <p>I wanted to save this file to my network drive so the next thing I did was install the smb client onto the Raspberry Pi. I can then easily navigate to my shared folders just like I would from my work PC as long as I am connected to our internal network.</p> <p>So far, so good. I now have network access and can get to all the same files that I normally work with. I also have a word processing tool to allow me to write this blog, along with a screenshot tool to grab images.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/11/screenshot-of-the-network.png" rel="lightbox[6198]"><img class="aligncenter size-full wp-image-6200" src="http://www.explorer.uk.com/wp-content/uploads/2017/11/screenshot-of-the-network.png" alt="" width="1200" height="675" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/11/screenshot-of-the-network.png 1200w, http://www.explorer.uk.com/wp-content/uploads/2017/11/screenshot-of-the-network-300x169.png 300w, http://www.explorer.uk.com/wp-content/uploads/2017/11/screenshot-of-the-network-768x432.png 768w, http://www.explorer.uk.com/wp-content/uploads/2017/11/screenshot-of-the-network-1024x576.png 1024w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p> <p>The next step is to make sure I can develop. Luckily, APEX uses a browser based development environment and the Raspberry Pi operating system comes with the Chromium browser. Connecting to one of our internal environments was as easy as typing the address into the address bar and the speed was great when creating and logging in to a new workspace.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/11/Create-Workspace.png" rel="lightbox[6198]"><img class="aligncenter size-full wp-image-6201" src="http://www.explorer.uk.com/wp-content/uploads/2017/11/Create-Workspace.png" alt="" width="1200" height="675" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/11/Create-Workspace.png 1200w, http://www.explorer.uk.com/wp-content/uploads/2017/11/Create-Workspace-300x169.png 300w, http://www.explorer.uk.com/wp-content/uploads/2017/11/Create-Workspace-768x432.png 768w, http://www.explorer.uk.com/wp-content/uploads/2017/11/Create-Workspace-1024x576.png 1024w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p> <h3><strong>Day 2<br /> </strong></h3> <p>So far, development has been pretty hassle free due to the fully browser based development environment available in APEX, though the speed of Chromium loading up some pages can be a little slow and it can become noticeable. Chromium isn’t a supported browser for APEX so I could run into issues at some point, but it seems to work in general. If you were going to do this properly then it would be worth installing a supported browser.</p> <p>I needed to connect to the database to run some SQL today, and again the integrated SQL workshop in APEX allowed me to do this without attempting to install any extra software on the raspberry Pi.</p> <h3><strong>Day 3<br /> </strong></h3> <p>At one point today I had to flash my SD card to install the latest version of the operating system and had to move over to my laptop. This was because of work I was doing on the Pi at the time which had nothing to do with APEX development. If I was using the Pi solely for APEX, I wouldn’t have had this problem, but you can’t reliably work simultaneously on the Pi itself and also use it for your day to day tasks such as APEX development.</p> <p>One thing you can do though is quickly switch between different SD cards, so you could create an environment with everything you need for your APEX development and keep this on a dedicated SD card for you to swap in when you need it.</p> <h3><strong>Day 4<br /> </strong></h3> <p>Core APEX development is still going well on the Raspberry Pi but there are a few pieces of windows software I’m missing. Today I needed to use some software we have installed on a Windows server on our network which led me to install some remote desktop software on the Pi. This allowed me to connect to any machine on the network and use the windows desktop and applications, although this suffered from a small amount of slowdown.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/11/remote.png" rel="lightbox[6198]"><img class="aligncenter size-full wp-image-6202" src="http://www.explorer.uk.com/wp-content/uploads/2017/11/remote.png" alt="" width="1200" height="675" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/11/remote.png 1200w, http://www.explorer.uk.com/wp-content/uploads/2017/11/remote-300x169.png 300w, http://www.explorer.uk.com/wp-content/uploads/2017/11/remote-768x432.png 768w, http://www.explorer.uk.com/wp-content/uploads/2017/11/remote-1024x576.png 1024w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></p> <h3><strong>Conclusion<br /> </strong></h3> <p>I wrote this blog on the side while I was working with a Raspberry Pi for my Tech17 presentation, and while I wouldn’t recommend anyone throw away their Mac Book just yet, it did highlight how great a browser based development environment can be. APEX comes with everything you need to develop great web applications and build the underlying database, and you can access the tools from absolutely anywhere using a browser. Whether you have on-premise databases or a Cloud based set up, the APEX builder is always available. I could have written a similar blog from a tablet or any web enabled device with a decent screen, which shows just how flexible the development environment is.</p> <p>The post <a rel="nofollow" href="http://www.explorer.uk.com/apex-development-on-a-raspberry-pi/">APEX Development on a Raspberry Pi</a> appeared first on <a rel="nofollow" href="http://www.explorer.uk.com">Explorer | Award Winning UK Oracle Partner</a>.</p> admin http://www.explorer.uk.com/?p=6198 Thu Nov 23 2017 05:14:54 GMT-0500 (EST) Animate your APEX application http://vmorneau.me/animapex/ <div class="kg-card-markdown"><img src="http://vmorneau.me/content/images/2017/11/preview.gif" alt="Animate your APEX application"><p>A few weeks ago I released a very simple dynamic action plugin: <a href="https://animapex.com/">AnimAPEX</a>.</p> <p>It consists of 75+ animations that you can apply to <strong>any</strong> APEX component.</p> <p>Want to shake an input when the password is wrong?<br> Want to flash a report that has been refreshed?<br> Want to spin a button when it has been clicked?</p> <p>AnimAPEX is easy to use and it will bring life to a boring app.</p> <p>It's open source and free.</p> <p>Links:</p> <ul> <li><a href="https://animapex.com/">Demo</a></li> <li><a href="https://apex.world/ords/f?p=100:710:823454481487::::P710_PLG_ID:ME.VMORNEAU.ANIMAPEX">apex.world page</a></li> <li><a href="https://github.com/vincentmorneau/animapex">Source code</a></li> </ul> <hr> <p>Inspired by Animate.css</p> </div> Vincent Morneau 5a14fe588d2e13179544bdad Wed Nov 22 2017 07:45:21 GMT-0500 (EST) Utilizando comentários de coluna como texto de ajuda no Default de UI http://desenvolvedorapex.blogspot.com/2017/11/utilizando-comentarios-de-coluna-como.html Olá pessoal,<br /><br />em diversas instituições as colunas de tabelas já possuem comentários que informam o significado delas.<br /><br />Por que não utilizar esses comentários no texto de ajuda de itens?<br /><br />A melhor prática diz que devemos criar primeiro os Defaults de UI antes de criarmos os formulários e relatórios.<br /><br />Portanto, este tutorial mostrará uma maneira de incluirmos os comentários de coluna de tabela como texto de ajuda.<br /><br />Como exemplo utilizaremos a tabela EMP.<br /><br />Para iniciar iremos incluir os comentários nas colunas da tabela EMP conforme abaixo:<br /><br /><span style="color: red;">(OBS: Execute cada comando no SQL Commands individualmente ou crie e execute um Script no SQL Scripts do Apex)</span><br /><span style="color: red;"><br /></span><i>COMMENT ON COLUMN emp.empno is 'Código do empregado';<br />COMMENT ON COLUMN emp.ename is 'Nome do empregado';<br />COMMENT ON COLUMN emp.job is 'Função do empregado';<br />COMMENT ON COLUMN emp.mgr is 'Gerente do empregado';<br />COMMENT ON COLUMN emp.hiredate is 'Data de contratação do empregado';<br />COMMENT ON COLUMN emp.sal is 'Salário bruto do empregado';<br />COMMENT ON COLUMN emp.comm is 'Comissão de vendas do empregado';<br />COMMENT ON COLUMN emp.deptno is 'Departamento de alocação do empregado';</i><br /><i><br /></i>Verifique se os comentários foram inseridos corretamente:<br /><br /><i>SELECT *&nbsp;</i><br /><i>FROM user_col_comments</i><br /><i>WHERE table_name = 'EMP'</i><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-wgkIDj7wOFs/Wg9t7hMOzZI/AAAAAAAAA1U/jy9ZV8mNsB4a-MdEw2CGJCn2YrEmgw0-ACLcBGAs/s1600/Coment%25C3%25A1rios%2Bna%2Btabela%2BEMP.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="312" data-original-width="943" height="131" src="https://1.bp.blogspot.com/-wgkIDj7wOFs/Wg9t7hMOzZI/AAAAAAAAA1U/jy9ZV8mNsB4a-MdEw2CGJCn2YrEmgw0-ACLcBGAs/s400/Coment%25C3%25A1rios%2Bna%2Btabela%2BEMP.PNG" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br />Agora temos que inserir esses comentários no Default de UI da tabela. Para isso podemos utilizar o seguinte código:<br /><br />BEGIN<br /><br />--Comando para sincronizar o default de UI da tabela<br />APEX_UI_DEFAULT_UPDATE.SYNCH_TABLE (<br />&nbsp; &nbsp; p_table_name&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; '<b><i>EMP</i></b>');<br /><br />--Cursor para percorrer os comentários da tabela que são acessíveis pela view Oracle user_col_comments<br />FOR cur IN (SELECT table_name, column_name, comments<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FROM user_col_comments<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;WHERE&nbsp; table_name = '<b><i>EMP</i></b>')<br />LOOP<br /><br />--Função da API do Apex para atualizar o help do item correspondente àquela coluna<br />APEX_UI_DEFAULT_UPDATE.UPD_ITEM_HELP (<br />&nbsp; &nbsp; p_table_name&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; =&gt; cur.table_name,<br />&nbsp; &nbsp; p_column_name&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; cur.column_name,<br />&nbsp; &nbsp; p_help_text&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;=&gt; cur.comments);<br /><br />END LOOP;<br /><br />END;<br /><br />Pronto! Agora ao criar um formulário a partir desta tabela, a ajuda (help) do item será o comentário correspondente na tabela.<br /><br />Veja um exemplo de um formulário e relatório criado após a inserção da ajuda nos defaults de UI na tabela EMP utilizando o comando acima.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-yxO55vn2OOw/WhSsgSjT0OI/AAAAAAAAA10/AyRBjATl4rMrEQx9GqgL5pkE-e-P63G8ACLcBGAs/s1600/Ajuda%2Bna%2Bcoluna%2BENAME.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="555" data-original-width="1385" height="256" src="https://4.bp.blogspot.com/-yxO55vn2OOw/WhSsgSjT0OI/AAAAAAAAA10/AyRBjATl4rMrEQx9GqgL5pkE-e-P63G8ACLcBGAs/s640/Ajuda%2Bna%2Bcoluna%2BENAME.PNG" width="640" /></a></div><br /><br />Repare que o comentário que originalmente estava na coluna ENAME agora está na ajuda do item.<br /><br />Os mesmo ocorre para todos os outros itens.<br /><br />Por hoje é isso! Espero que tenha gostado.<br /><br />Deixe seu comentário sobre o que achou.<br /><br />Até a próxima!<br /><br /><br /><br /><b><br /></b><b><br /></b><br /><div><b><br /></b></div><div><b><br /></b></div> Anderson Ferreira tag:blogger.com,1999:blog-5150514048465222719.post-1260448904753344452 Tue Nov 21 2017 17:47:00 GMT-0500 (EST) SaveFilesToDisk http://apex-plugin.com/oracle-apex-plugins/process-type-plugin/savefilestodisk_526.html PLUGIN INSTALLATION First your DBA should grant: grant EXECUTE on SYS . UTL_FILE to &lt;schema&gt;; grant EXECUTE on SYS . DBMS_CRYPTO to &lt;schema&gt;; Next you need to create SaveToDisk and optionally SaveToDiskWithLog function (*.fnc create scripts) to some schema available to APEX workspace. Most usually this would-be APEX parsing schema. We reference this schema as &lt;schema&gt;. Prerequisite for creating SaveToDiskWithLog is installed Logger (https://github.com/OraOpenSource/Logger (https://github.com/OraOpenSource/Logger)) on &lt;schema&gt;. Import plugin to your app. Execution Function Name is by default #OWNER#.SaveToDisk. If &lt;schema&gt; is not APEX parsing schema change it to &lt;schema&gt;.SaveToDisk. If you want to use extensive login with Logger (https://github.com/OraOpenSource/Logger (https://github.com/OraOpenSource/Logger)) change it to #OWNER#.SaveToDiskWithLog or &lt;schema&gt;.SaveToDiskWithLog. PLUGIN USE Create File Browse page item on APEX app page and choose APEX_APPLICATION_TEMP_FILES for storage. Create page process of type plugin. Choose process Point: On Submit - After Computations and Validations (default) File Browse Item: Name of File Browse item (e.g. P1_UPLOAD) which holds filenames of uploaded files. Storage must be APEX_APPLICATION_TEMP_FILES table. Plugin move files from APEX_APPLICATION_TEMP_FILES table to server disk. Destination Linebreak: Line break in text files after text move. Can be CR LF (Windows) or LF (Linux, MAC) Max Filesize: Maximum allowed size in bytes. Abbreviations K,KB,M,MB,G,GB are allowed. Examples of valid formats: 100000, 150 K, 3,76 M, 1,5 GB, 1.5G. Move format: database directory#source filename#regexp_pattern#regexp_replace#Overwrite old file(Y/N)#Binary or text move(B/T)#Charset#plsql block database directory#source filename#regexp_pattern#regexp_replace#Overwrite old file(Y/N)#Binary or text move(B/T)#Charset#plsql block .... User &lt;schema&gt; needs read, write privileges on each database directory. (e.g. grant READ, WRITE on directory DIR to &lt;schema&gt;); See Move format plugin attribute help or move_format_help.md for more info. You can reach this file from Other Useful Info link. Item with Filenames: Select page item which will save filename(s) of uploaded file(s) separated with colon. Usually you want to use this item value in process after SaveToDisk process. Item with Hash values: Select page item to store Hash value(s) of type RAW separated with colon. This is useful when you want to track file(s) changes. Text area item with log: Select item which will hold plugin log. Display Only or read only Text Area is usual choice. It&#39;s highly recommended to display plugin log if you have multiple files and/or complex move format. Conditions: Select Condition Type Value of Item/Column in Expression Is NOT NULL and for Expression1 set the same File Browse item you set at Plug-in settings (e.g. P1_UPLOAD). This step is optional. For the rest you can left defaults. SAMPLE APPLICATION Install sample application fSampleApp.sql, change SaveToDiskMulti plugin process attribute Move Format to suit your configuration. You can change also Destination Linebreak and Max Filesize attributes. Similarly change SaveToDisk plugin process attribute Database directory and possibly Filename and Max Filesize . http://apex-plugin.com/oracle-apex-plugins/process-type-plugin/savefilestodisk_526.html Tue Nov 21 2017 09:10:28 GMT-0500 (EST) How to Develop with Multiple APEX Developer Tabs in Firefox http://www.talkapex.com/2017/11/how-to-develop-with-multiple-apex-developer-tabs-in-firefox/ <p>Eventually all APEX developers need to have multiple versions of the development environment open at the same time. A simple example of this is if you’re working with two pages (Page 1 and Page 2) that are dependant on one another. You constantly have to toggle between them as you can’t have two tabs open for development (one for P1 and one for P2).</p><p>Most people either open a different browser or open a new browser tab in Private or Incognito mode. Now <a href="https://www.mozilla.org/" target="_blank" rel="external">Firefox</a> allows you to get around this issue by having <a href="https://blog.mozilla.org/firefox/introducing-firefox-multi-account-containers/" target="_blank" rel="external">Multi-Account Containers</a>. </p><img src="/2017/11/how-to-develop-with-multiple-apex-developer-tabs-in-firefox/firefox-multi-account-containers.png" alt="firefox-multi-account-containers.png" title=""><p>Multi-Account Containers segregate your cookies by containers. Aside from APEX development you can also have multiple instances of Gmail or Office 365 opened in different container tabs.</p><p>For now you must install the <a href="https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/?src=userprofile" target="_blank" rel="external">Multi-Account Containers Plugin</a> (built by Mozilla) as it’s not included by default. Note I use the plugin on <a href="https://www.mozilla.org/en-US/firefox/developer/" target="_blank" rel="external">Firefox Developer Edition</a> with no issues.</p> Martin Giffy D'Souza http://www.talkapex.com/2017/11/how-to-develop-with-multiple-apex-developer-tabs-in-firefox/ Sun Nov 19 2017 22:35:42 GMT-0500 (EST) How to Setup Multiple APEX Environments using Docker and Oracle 12c http://www.talkapex.com/2017/11/how-to-setup-multiple-apex-environments-using-docker-and-oracle-12c/ <p>I’ve written a few posts on how to Dockerize your Oracle and APEX setup (<a href="/2017/10/how-to-setup-oracle-db-12-2-docker-container/" title="post 1">post 1</a>, <a href="/2017/10/docker-oracle-and-apex/" title="post 2">post 2</a>). I’m constantly refining the process as I learn new things and different Docker images become available.</p><p>I was writing a third post on setting up multiple APEX environments using Docker and Oracle 12c. The post was getting long and included many steps. I decided to move the instructions to Github as it solves two problems:</p><ul><li>I can easily keep it up to date with the latest steps I do to create my Docker containers</li><li>Others can contribute to the instructions (and/or include scripts) by making pull requests (PR)</li></ul><p>To view my latest Docker setup you can view my <a href="https://github.com/martindsouza/docker-oracle-setup" target="_blank" rel="external">docker-oracle-setup</a> page on Github. If you have any corrections, suggestions, or enhancements please create issues or submit a PR on the repository.</p> Martin Giffy D'Souza http://www.talkapex.com/2017/11/how-to-setup-multiple-apex-environments-using-docker-and-oracle-12c/ Sun Nov 19 2017 09:31:49 GMT-0500 (EST) WordPress Resources at SiteGround https://warp11.nl/2017/11/18/wordpress-resources-at-siteground/ <p>WordPress is an award-winning web software, used by millions of webmasters worldwide for building their website or blog. SiteGround is proud to host this particular WordPress installation and provide users with multiple resources to facilitate the management of their WP websites:</p> <h3>Expert <a href="http://www.siteground.com/wordpress-hosting.htm">WordPress Hosting</a></h3> <p>SiteGround provides superior WordPress hosting focused on speed, security and customer service. We take care of WordPress sites security with unique server-level customizations, WP auto-updates, and daily backups. We make them faster by regularly upgrading our hardware, offering free CDN with Railgun and developing our SuperCacher that speeds sites up to 100 times! And last but not least, we provide real WordPress help 24/7! Learn more about SiteGround WordPress hosting</p> <h3>WordPress tutorial and knowledgebase articles</h3> <p>WordPress is considered an easy to work with software. Yet, if you are a beginner you might need some help, or you might be looking for tweaks that do not come naturally even to more advanced users. SiteGround <a href="http://www.siteground.com/tutorials/wordpress/">WordPress tutorial</a> includes installation and theme change instructions, management of WordPress plugins, manual upgrade and backup creation, and more. If you are looking for a more rare setup or modification, you may visit <a href="http://kb.siteground.com">SiteGround Knowledgebase</a>.</p> <h3><a href="http://www.siteground.com/wordpress-hosting/wordpress-themes.htm">Free WordPress themes</a></h3> <p>SiteGround experts not only develop various solutions for WordPress sites, but also create unique designs that you could download for free. SiteGround WordPress themes are easy to customize for the particular use of the webmaster.</p> rmartens Sat Nov 18 2017 07:47:23 GMT-0500 (EST) Hallo wereld. http://www.warp11.nl/2017/11/18/hallo-wereld/ <p>Welkom bij WordPress. Dit is je eerste bericht. Pas het aan of verwijder het en start met bloggen.</p> rmartens http://warp11.nl/?p=1 Sat Nov 18 2017 04:00:31 GMT-0500 (EST) Meet me in Australia and New Zealand at the OTN Days 2017 http://dgielis.blogspot.com/2017/11/meet-me-in-australia-and-new-zealand-at.html Tonight I'll start my trip from Belgium to Australia and New Zealand. Although we have a <a href="https://www.apexrnd.co.nz/">company</a> in New Zealand and Australia, which <a href="http://lschilde.blogspot.be/">Lino</a> is managing, I've never been there myself. It has always been my dream to visit the other side of the earth, so I look forward to it :)<br /><br />I'll present on how I build <a href="https://apex.oracle.com/">Oracle APEX</a> apps today (and in the future) and how to make them available for others (cloud and others).<br /><br />My schedule of the OTN Days 2017 (APAC Tour) looks like this:<br /><ul><li><a href="https://wlgotnday2017.sched.com/">November&nbsp;20th in&nbsp;Wellington (NZ)</a></li><li><a href="https://aklotnday2017.sched.com/">November&nbsp;22nd in&nbsp;Auckland (NZ)</a></li><li><a href="http://www.ausoug.org.au/pages/page?x1=MELBOURNE_PROGRAM_2017">November 27th in Melbourne (AU)</a></li><li><a href="http://www.ausoug.org.au/pages/page?x1=PERTH%2520PROGRAM%25202017">November 29th in Perth (AU)</a></li></ul>If you are in one of those places, I would love to meet you and hear how you use Oracle APEX.<br />And I'm always up for showing you a live demo of <a href="https://www.apexofficeprint.com/">APEX Office Print</a>, you'll see&nbsp;our upcoming AOP 3.2 version as first!&nbsp;Just grab me by my arm and ask :)<br /><br />In Perth there will also be a Q&amp;A slot - so any Oracle APEX question can be asked there. Dimitri Gielis tag:blogger.com,1999:blog-21122514.post-8527317842587209365 Tue Nov 14 2017 09:32:00 GMT-0500 (EST) Forms Community Meeting and questions to Michael Ferrante http://talk2gerd.blogspot.com/2017/11/forms-community-meeting-and-questions.html <span class="" id="result_box" lang="en">Next week at the German Oracle User Group (DOAG) conference, we have a Forms community meeting Tuesday night at 6 pm in the Galileo Lounge.<br /><br /><span class="">As a preparation, we would like to ask you to send us questions, so that we get them answered by Michael Ferrante.</span><br /><br />We are all looking forward to a great conference. <span class="">Forms is coming again!</span></span><br /><br /><br /><span class="" id="result_box" lang="en"><span class="">Please send your questions till November, 19th to gerd.volberg@forms12c.de.</span></span><br /><span class="" id="result_box" lang="en"><span class=""><br /></span></span><span class="" id="result_box" lang="en"><span class=""><br /></span></span><span class="" id="result_box" lang="en"><span class="">See you in Nuremberg</span></span><br /><span class="" id="result_box" lang="en"><span class="">Gerd</span></span><br /><span class="" id="result_box" lang="en"><span class=""><br /></span></span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-uKvar2gXOgI/WgquyZpsHwI/AAAAAAAASuI/nXYx2sOYkd4Zy0leeehG5qamIxs5Ykd8wCLcBGAs/s1600/Speaker-ENG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="180" data-original-width="180" src="https://2.bp.blogspot.com/-uKvar2gXOgI/WgquyZpsHwI/AAAAAAAASuI/nXYx2sOYkd4Zy0leeehG5qamIxs5Ykd8wCLcBGAs/s1600/Speaker-ENG.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><span class="" id="result_box" lang="en"><span class=""><br /></span></span> Gerd Volberg tag:blogger.com,1999:blog-17069431.post-1874954242023401419 Tue Nov 14 2017 03:53:00 GMT-0500 (EST) ORDS, OAuth2 & Web Services in APEX – Part 2 http://www.explorer.uk.com/ordsoauth2-web-services-in-apex-part-2/ <h2>Protecting Web Services with OAuth2</h2> <p style="text-align: justify;">In my previous blog, I took you through how to create RESTful Web Services with ORDS and how to test them with a REST client. This blog will build on those Web Services (Fig.1) and show you how you can protect them to ensure they can only be accessed by the users you specify.</p> <div> <table class=" alignleft" style="height: 240px; width: 100%;"> <tbody> <tr style="background-color: #b4b4b4;"> <td style="width: 16%;"><strong>Handler</strong></td> <td style="width: 20.1053%;"><strong>Method</strong></td> <td style="width: 59.8947%;"><strong>URL</strong></td> </tr> <tr> <td style="width: 16%;">List departments</td> <td style="width: 20.1053%;">GET</td> <td style="width: 59.8947%;">http://&lt;hostname&gt;:&lt;port&gt;/ords/api/hr/v1/departments</td> </tr> <tr> <td style="width: 16%;">Create a Department</td> <td style="width: 20.1053%;">POST</td> <td style="width: 59.8947%;">http://&lt;hostname&gt;:&lt;port&gt;/ords/api/hr/v1/departments</td> </tr> <tr> <td style="width: 16%;">Create a Department</td> <td style="width: 20.1053%;">PUT</td> <td style="width: 59.8947%;">http://&lt;hostname&gt;:&lt;port&gt;/ords/api/hr/v1/departments</td> </tr> <tr> <td style="width: 16%;">Delete a Department</td> <td style="width: 20.1053%;">DELETE</td> <td style="width: 59.8947%;">http://&lt;hostname&gt;:&lt;port&gt;/ords/api/hr/v1/departments</td> </tr> <tr> <td style="width: 16%;">List employees</td> <td style="width: 20.1053%;">GET</td> <td style="width: 59.8947%;">http://&lt;hostname&gt;:&lt;port&gt;/ords/api/hr/v1/employees</td> </tr> </tbody> </table> </div> <p style="text-align: right;"><em>Fig. 1</em></p> <p style="text-align: justify;">To ensure your Web Services are only accessible by the appropriate users (clients) you can protect them using OAuth2. This involves creating roles and privileges to protect the Web Services and the creation of clients, which can be for individuals or applications. Each client can then be granted access to one or more roles in order to access the associated Web Services.</p> <p style="text-align: justify;"><strong>ORDS Metadata</strong><br /> There are several public views owned by the ORDS_METADATA schema that you can use to query roles, privileges, and clients that have been created. The following six views are the primary ones to use.</p> <table class=" alignleft" style="width: 100%; height: 280px;"> <tbody> <tr style="height: 24px; background-color: #b4b4b4;"> <td style="width: 183px; height: 24px;"><strong>View</strong></td> <td style="width: 689.183px; height: 24px;"><strong>Contents</strong></td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">USER_ORDS_ROLES</td> <td style="width: 689.183px; height: 24px;">All Roles</td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">USER_ORDS_PRIVILEGES</td> <td style="width: 689.183px; height: 24px;">All Privileges</td> </tr> <tr style="height: 24.0667px;"> <td style="width: 183px; height: 24.0667px;">USER_ORDS_PRIVILEGE_MAPPINGS</td> <td style="width: 689.183px; height: 24.0667px;">Web Service URLs protected by each privilege</td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">USER_ORDS_PRIVILEGE_ROLES</td> <td style="width: 689.183px; height: 24px;">Privileges granted to each role</td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">USER_ORDS_CLIENTS</td> <td style="width: 689.183px; height: 24px;">All Clients</td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">USER_ORDS_CLIENT_ROLES</td> <td style="width: 689.183px; height: 24px;">Roles granted to each client</td> </tr> </tbody> </table> <p style="text-align: justify;"><strong>OAuth Methods<br /> </strong>There are three OAuth2 methods available to ORDS.</p> <ol style="text-align: justify;"> <li>Client Credentials &#8211; Two stage process for server-to-server communication where there is no human interaction. Credentials are used to generate an access token that are then used to authenticate the Web Service calls.</li> <li>Authorisation Code &#8211; Three-stage process when there is human interaction. Using a browser and a URL the user enters their credentials to authenticate. This generates an Authorization Code that in turn is used to generate the access token for authenticating the Web Service calls.</li> <li>Implicit &#8211; Two-stage process when there is human interaction. Using a browser and a URL the user enters their credentials to authenticate. This generates an Access Token for authenticating the Web Service calls.</li> </ol> <p style="text-align: justify;">On this occasion we are going to use the Client Credentials method to protect the Employees / Department Web Services we previously created. This is so in part three of the blog we can automate the authentication and calling of the Web Services from an APEX application.</p> <p style="text-align: justify;"><strong>Test our existing Web Services</strong><br /> As we did in part one we will be using Postman to test the Web Services. Before we start protecting them we should test they are all working correctly and do not require any authentication.</p> <p style="text-align: justify;">Using Postman, open your ORDS Demo collection and test each of the five previously saved requests are working correctly. For example, click on the ‘List Departments’ GET method request and press send to return all of the departments in JSON format.</p> <p><strong>Roles and Privileges</strong><br /> Projecting a Web Service is a three-part process.</p> <ol> <li style="list-style-type: none;"> <ol> <li>Create the ORDS roles that will be granted to the clients</li> <li>Create the privileges that will protect the Web Services and link to one or more roles</li> <li>Map the privileges on to the required URL patterns</li> </ol> </li> </ol> <p style="text-align: justify;"><strong>Create Role</strong><br /> To protect the Web Services we first need to create roles, which can be subsequently granted to a client and allocated to a privilege. To give greater flexibility when granting roles to clients we will protect each module independent, starting with Departments.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.create_role(p_role_name =&gt; 'department_role');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p style="text-align: justify;"><strong>Create Privilege</strong><br /> Next, we need to define the privileges and link them to the relevant roles so that when we grant a role to a client they will obtain the required privilege.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">DECLARE</span> <span style="font-family: 'courier new', courier, monospace;">  la_roles owa.vc_arr;</span> <span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  la_roles(1) := 'department_role';</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_privilege(p_privilege_name =&gt; 'department.privilege',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_roles          =&gt; la_roles,</span> <span style="font-family: 'courier new', courier, monospace;">                        p_label          =&gt; 'Departments Access',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_description    =&gt; 'Access to HR Department Web Services');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p style="text-align: justify;">When defining a privilege you can allocate multiple roles depending on how you need to structure your security. In our example we have created one privilege for the department Web Service and linked it to a single role.</p> <p><strong>Create Privilege Mapping</strong><br /> The last step of the process is to map the URL patterns of the Web Services we wish to protect to the privilege.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">DECLARE la_priv_patterns owa.vc_arr; BEGIN la_priv_patterns(1) := '/hr/v1/departments'; ords.create_privilege_mapping(p_privilege_name =&gt; 'department.privilege', p_patterns =&gt; la_priv_patterns);  COMMIT; END; </span></pre> <p style="text-align: justify;">As all four of the Web Services for the Departments template use the same URL, we only need to add one URL pattern to protect them all. If we had more than one template within the HR module that we need protecting by the department privilege we could add additional URLs here.</p> <p style="text-align: justify;">If we wanted to protect one or more of the Department Web Services independently so a client could have access to the GET method without having access to the POST, PUT or DELETE methods, we would have to define the GET template with a different pattern (e.g. list_departments).</p> <p style="text-align: justify;">As soon as a privilege has been mapped to a pattern, and Web Services matching it will be protected immediately.</p> <p style="text-align: justify;">To check all four of the department Web Services are now protected use your collection of Postman requests to test each one. Each request will now return a 401 unauthorised status when called as shown in Fig.2.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/11/fig2_postman_401.jpg" rel="lightbox[6212]"><img class="aligncenter size-full wp-image-6215" src="http://www.explorer.uk.com/wp-content/uploads/2017/11/fig2_postman_401.jpg" alt="" width="1197" height="368" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/11/fig2_postman_401.jpg 1197w, http://www.explorer.uk.com/wp-content/uploads/2017/11/fig2_postman_401-300x92.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/11/fig2_postman_401-768x236.jpg 768w, http://www.explorer.uk.com/wp-content/uploads/2017/11/fig2_postman_401-1024x315.jpg 1024w" sizes="(max-width: 1197px) 100vw, 1197px" /></a></p> <p style="text-align: right;"><em>Fig. 2</em></p> <p style="text-align: justify;">Next, check the Employees module has not been protected and can still be accessed. Open the List Employees request and set the department_number parameter value to 10. The request will be successful, returning the employees and a status of 200 OK (Fig.3).</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/11/fig3_postman_400.jpg" rel="lightbox[6212]"><img class="aligncenter size-full wp-image-6214" src="http://www.explorer.uk.com/wp-content/uploads/2017/11/fig3_postman_400.jpg" alt="" width="1306" height="808" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/11/fig3_postman_400.jpg 1306w, http://www.explorer.uk.com/wp-content/uploads/2017/11/fig3_postman_400-300x186.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/11/fig3_postman_400-768x475.jpg 768w, http://www.explorer.uk.com/wp-content/uploads/2017/11/fig3_postman_400-1024x634.jpg 1024w" sizes="(max-width: 1306px) 100vw, 1306px" /></a></p> <p style="text-align: right;"><em>Fig. 3</em></p> <p style="text-align: justify;">To complete the protection of our Web Services run the following PL/SQL to create a second role and privilege to protect the Employees module.</p> <p style="padding-left: 30px;"> <pre style="padding-left: 60px;">DECLARE   la_roles         owa.vc_arr;   la_priv_patterns owa.vc_arr; BEGIN   ords.create_role(p_role_name =&gt; 'employee_role');   la_roles(1)         := 'employee_role';   la_priv_patterns(1) := '/hr/v1/employees';   ords.define_privilege(p_privilege_name =&gt; 'employee.privilege',                         p_roles          =&gt; la_roles,                         p_patterns       =&gt; la_priv_patterns,                         p_label          =&gt; 'Employees Access',                         p_description    =&gt; 'Access to Employee Resources');   COMMIT; END;</pre> <p>The Employees Web Service is not protect and cannot be accessed without authenticating the request call.</p> <p style="text-align: justify;"><strong>Creating a Client<br /> </strong>To access the protected Web Services we now need to pass a valid access token as a parameter in the HTTP Header. In order to generate an access token we need to create a client using the OAUTH API.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  oauth.create_client(p_name =&gt; 'Client 1',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_grant_type       =&gt; 'client_credentials',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_description      =&gt; 'Client with access to Employee Resources',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_support_email    =&gt; 'client.one@ordsdemo.com',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_privilege_names  =&gt; NULL);</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p style="text-align: justify;">The above example uses the create_client procedure to create a client called ‘Client 1’. The ‘p_privelage_names’ parameter is mandatory but can be set to NULL. Alternately, you can pass a comma-separated list of privilege names the client requires access to.</p> <p style="text-align: justify;">When you create a new client it is allocated a unique client id and secret that is subsequently used to generate an access token. Use the following SQL query to verify the client has been created and the values for the client id and secret.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">SELECT id, name, description, client_id, client_secret FROM user_ords_clients WHERE name = 'Client 1';</span></pre> <table class=" alignleft" style="height: 80px;" width="100%"> <tbody> <tr style="height: 32.8335px; background-color: #b4b4b4;"> <td style="width: 10%; height: 32.8335px;">ID</td> <td style="width: 10%; height: 32.8335px;">NAME</td> <td style="width: 30%; height: 32.8335px;">DESCRIPTION</td> <td style="width: 17.015%; height: 32.8335px;">CLIENT_ID</td> <td style="width: 23.985%; height: 32.8335px;">CLIENT_SECRET</td> </tr> <tr style="height: 36px;"> <td style="width: 10%; height: 36px;">10393</td> <td style="width: 10%; height: 36px;">Client 1</td> <td style="width: 30%; height: 36px;">Client with access to Employee Resources</td> <td style="width: 17.015%; height: 36px;">kyP5X83FXv2uPvDPDSjspw..</td> <td style="width: 23.985%; height: 36px;">dXhW3IPuabH0Bsp-5d_8fA..</td> </tr> </tbody> </table> <p>Once the client has been created, we need to grant one or more roles that are mapped to the privileges the client requires to. In this instance, the client only needs the ‘employee_role’.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  oauth.grant_client_role(p_client_name =&gt; 'Client 1',</span> <span style="font-family: 'courier new', courier, monospace;">                          p_role_name   =&gt; 'employee_role');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>We have now created a client and granted it the necessary role to call the Employees GET method Web, and can now use the generated client id / secret to obtain an access token.</p> <p style="text-align: justify;"><strong>Testing the Employees Web Service with a OAuth2.0</strong><br /> Open Postman and open the List Employees GET request and press send to confirm the Web Service is protected. We receive a 401 unauthorised status as expected, as we have not authenticated the request call by including a valid access token in the HTTP header.</p> <p style="text-align: justify;">To generate an access token we must use the client id and secret details we generated for ‘Client 1’. Within Postman click on the Authorization tab, change the type to ‘OAuth 2.0’, click the ‘Get New Access Token’ button and enter the following details.</p> <table class=" alignleft" style="height: 240px;" width="100%"> <tbody> <tr style="background-color: #b4b4b4;"> <td style="width: 377px;">Token Name</td> <td style="width: 377px;">Anything, e.g. Client 1</td> </tr> <tr> <td style="width: 377px;">Access Token URL</td> <td style="width: 377px;">http://<span style="color: #ff0000;">&lt;host_ref&gt;</span>/ords/ordsdemo/oauth/token</td> </tr> <tr> <td style="width: 377px;">Client ID</td> <td style="width: 377px;">Client ID generated for Client 1</td> </tr> <tr> <td style="width: 377px;">Client Secret</td> <td style="width: 377px;">Client secret generated for Client 1</td> </tr> <tr> <td style="width: 377px;">Grant Type</td> <td style="width: 377px;">Client Credentials</td> </tr> <tr> <td style="width: 377px;">Request access token locally</td> <td style="width: 377px;">Un-ticked</td> </tr> </tbody> </table> <p style="text-align: justify;"><strong>Note:</strong> The <span style="color: #ff0000;">&lt;host_ref&gt;</span> must be set to the relevant name and port of your ORDS configuration. I have created the Web Services in a local copy of Oracle XE running on port 8081 with ORDS 3.11. Therefore, the access token URL will be <span style="color: #ff0000;">http://localhost:8081/ords/api/oauth/token</span></p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/11/access_token_c1.jpg" rel="lightbox[6212]"><img class="aligncenter size-full wp-image-6220" src="http://www.explorer.uk.com/wp-content/uploads/2017/11/access_token_c1.jpg" alt="" width="461" height="567" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/11/access_token_c1.jpg 461w, http://www.explorer.uk.com/wp-content/uploads/2017/11/access_token_c1-244x300.jpg 244w" sizes="(max-width: 461px) 100vw, 461px" /></a></p> <p style="text-align: justify;">Once you have entered all of the details press the ‘Request Token’ button. This will close the popup and generate an access token with a one-hour expiration time.</p> <p style="text-align: justify;">We now need to add the access token to the Employees request. This can be achieved using the following steps.</p> <ol style="text-align: justify;"> <li>Click on the newly generated token, which can be found in the ‘Existing Tokens’ list.</li> <li>Ensure the ‘Access token to’ selection is set to ‘Header’.</li> <li>Click on the use token button.</li> </ol> <p style="text-align: justify;">If you now select the Headers tab you will see a new Authorization key value has been created and the value set to the access token. Now when we press the Send button the request is authenticated and the employees are returned along with the response status 200 – OK.</p> <p style="text-align: justify;">The Web Service currently uses an optional URI parameter to restrict the employees to a single department. Use the following PL/SQL to update the parameter so that it is passed using the HTTP Header instead.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'reports.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'employees.json',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'GET',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'department_number',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pn_deptno',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'INT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Used to restrict the employees to a single department'); </span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p style="text-align: justify;">Now add a new key to the header with the name ‘department_number’ and a value of 10. Press the Send button to resubmit the request. Only the employees for the Accounting department are returned.</p> <p style="text-align: justify;"><strong>Testing the Add Department POST Web Service with a OAuth2.0<br /> </strong>Open the Add Department request and click on the Headers tab. Now set the values for the department number, name and location to values that are valid and unique.</p> <p style="text-align: justify;">Next click on the Authorization tab and change the type to OAuth 2.0 to display the list of existing tokens. Select the previously generated Client 1 token and use the Use Token button to add it to the HTTP Header and press Send.</p> <p style="text-align: justify;">We get a 401 – Unauthorised response as the access token is for a client that has not been granted the required role to use Departments POST method Web Service. Use the following PL/SQL to create a new client with the required role.<strong><br /> </strong></p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  oauth.create_client(p_name            =&gt; 'Client 2',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_grant_type      =&gt; 'client_credentials',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_description     =&gt; 'Client with access Department Resources',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_support_email   =&gt; 'client.two@ordsdemo.com',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_privilege_names =&gt; NULL);</span> <span style="font-family: 'courier new', courier, monospace;">  oauth.grant_client_role(p_client_name =&gt; 'Client 2',</span> <span style="font-family: 'courier new', courier, monospace;">                          p_role_name   =&gt; 'department_role');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p style="text-align: justify;">Query the user_ords_clients view obtain the client id and secret for Client 2 and then use them to generate a new access token via the ‘Get New Access Token’ popup. Select the new token and press the Use Token button to add it to the header.</p> <p style="text-align: justify;">Now when we press the Send button the request is successful and returns a response code of 200 OK status.</p> <p style="text-align: justify;">To check the department has been added use the List Departments request to call the Departments GET method Web Service. Remember to use the access token generated for Client 2 by adding it to the HTTP Header before pressing send.</p> <p style="text-align: justify;">The request will be successful and return all of the departments including the new one you just added.</p> <p style="text-align: justify;">Use the access token to test Client 2 can also call the Departments PUT method to update a department and the DELETE to delete one.</p> <p>The post <a rel="nofollow" href="http://www.explorer.uk.com/ordsoauth2-web-services-in-apex-part-2/">ORDS, OAuth2 &#038; Web Services in APEX &#8211; Part 2</a> appeared first on <a rel="nofollow" href="http://www.explorer.uk.com">Explorer | Award Winning UK Oracle Partner</a>.</p> admin http://www.explorer.uk.com/?p=6212 Mon Nov 13 2017 07:05:31 GMT-0500 (EST) Why invest in Exadata http://www.explorer.uk.com/why-invest-in-exadata/ <p>Generic infrastructure gives you generic results.</p> <p>Exadata is a converged infrastructure solution that solves problems with Oracle Database performance, availability, scalability and recovery. Originally released in 2008, Exadata was actually an “alliance” solution between Oracle and Hewlett Packard and an example of how many converged infrastructure solutions are still created today. Oracle quickly realised that customers were not getting the most benefit from this 1st generation appliance due to the persistence of problems around integration and performance. Oracle decided that they needed to create a “full stack” solution where Oracle owned every layer of the infrastructure and could apply their significant R&amp;D resources to optimise and engineer software to work with hardware to overcome these challenges. “Engineered Systems” was the culmination of this effort and in 2010, following the acquisition of Sun Microsystems, Oracle released their second generation of Exadata – the X2.</p> <p>At the time, organisations were starting the experience the pitfalls of investing in “best-of-breed-for-budget” infrastructure resulting in a sprawl of vendor logo’s in datacentres. This resulted in endless examples of operational inefficiencies, problem finger-pointing, poor performance, limited scalability and high costs. Exadata was the positioned as a magical black box to address all those issues, albeit only for Oracle Database workloads.</p> <p>Fast forward to 2017 and we have the X7-2 with new versions released every 18-24 months. The Exadata X7 addresses all the same fundamental infrastructure problems that the X2 did, plus many more. For example, Exadata is optimised for both OLTP and Data Warehouse workloads alike. In short, Exadata’s “secret sauce” of software, engineered with fully redundant, scalable and performant infrastructure, provides a solution to any business running Oracle Database workloads that are experiencing performance bottlenecks, server sprawl and high costs.</p> <p>Reducing Oracle support costs is another reason why organisations invest in Exadata. For years, Oracle has reaped the rewards of the ever-increasing core count on new chips, meaning that the quantity of Database Enterprise Edition licenses that organisations need to stay compliant increase too! Costs (capex and opex) also go up! Combine that with Oracle&#8217;s licensing rules, which mean Servers need to be licensed for every available core, regardless of utilisation, and you have a situation where no matter how “cheap” commodity infrastructure appears to be the total cost of deploying Oracle is significantly higher than one might think.</p> <p style="text-align: left;">Exadata, along with other Engineered Systems, have a feature called Capacity on Demand.</p> <p>It’s unique to Engineered Systems so you cannot use it on IBM or HPE or Dell Servers. CoD gives organisations the benefit of sub-capacity licensing – you only pay for the cores that you enable. This means that despite having 24 cores available on the entry level Eighth Rack Exadata you’re not expected to license all 24 – only 16 as a minimum. That’s 8 Processor Licenses – the equivalent to licensing 2 quad core Servers that were on the market 6 years ago! Imagine being an organisation that owned over 50 Enterprise Edition Processor licenses sprawled across several commodity Servers and now you have the potential to consolidate all Databases onto Exadata; reducing the number of licenses owned by half. That is a big saving towards an ROI within 12 months! You can simply do more with one core of processing power on Exadata than on commodity infrastructure, resulting in less licenses and reducing your Oracle support costs.</p> <p>Operational inefficiencies are often the ignored cost when looking at the Total Cost of Ownership for commodity infrastructure. With multiple vendors in the datacentre, ageing infrastructure all on different versions and patches, all relying on different and often untested data recovery mechanisms. All these issues result in high internal costs back to the business – the cost of delay, the cost of resource, the cost of downtime, the cost planning, the cost of bringing in 3rd party assistance. All this cost is often overlooked when assessing new infrastructure solutions and is why converged infrastructure has become so popular – the simplification of infrastructure operational management. Engineered Systems go one further because of the additional efficiency improvements that come from Oracle owning the intellectual property between hardware and software – patching is quicker and simpler, recovery is quicker and simpler, provisioning new environments is quicker and simpler – the list goes on.</p> <p>Imagine being an organisation where you want to reduce your Oracle support costs or refresh ageing infrastructure or solve internal operational support issues or improve performance and have assurances on availability and recovery. Imagine all the costs and pitfalls that come from approaching these challenges with a traditional “best-of-breed-for-budget” mentality. Generic infrastructure gives you generic results; that is why you invest in Exadata.</p> <p>The post <a rel="nofollow" href="http://www.explorer.uk.com/why-invest-in-exadata/">Why invest in Exadata</a> appeared first on <a rel="nofollow" href="http://www.explorer.uk.com">Explorer | Award Winning UK Oracle Partner</a>.</p> admin http://www.explorer.uk.com/?p=6139 Thu Nov 09 2017 02:29:15 GMT-0500 (EST) ODTUG Kscope18 Update #2 http://www.odtug.com/p/bl/et/blogaid=751&source=1 Opal Alapat, the ODTUG Kscope18 Conference Chair, shares some updates about ODTUG Kscope18. ODTUG http://www.odtug.com/p/bl/et/blogaid=751&source=1 Wed Nov 08 2017 12:48:46 GMT-0500 (EST) ODTUG Kscope18 Update #2 http://kscope18.odtug.com/p/bl/et/blogaid=751&source=1 Opal Alapat, the ODTUG Kscope18 Conference Chair, shares some updates about ODTUG Kscope18. ODTUG http://kscope18.odtug.com/p/bl/et/blogaid=751&source=1 Wed Nov 08 2017 12:48:46 GMT-0500 (EST) Identity Columns and Data Pump https://ruepprich.wordpress.com/2017/11/07/identity-columns-and-data-pump/ <p>via <a href="https://danischnider.wordpress.com/2016/02/15/identity-columns-and-data-pump/">Identity Columns and Data Pump</a></p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ruepprich.wordpress.com/2856/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ruepprich.wordpress.com/2856/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=ruepprich.wordpress.com&#038;blog=12765658&#038;post=2856&#038;subd=ruepprich&#038;ref=&#038;feed=1" width="1" height="1" /> Christoph Ruepprich http://ruepprich.wordpress.com/?p=2856 Tue Nov 07 2017 11:36:09 GMT-0500 (EST) Oracle EBS Suite blank Login page - Post Exadata migration http://jaffardba.blogspot.com/2017/11/oracle-ebs-suite-blank-login-page-post.html <div dir="ltr" style="text-align: left;" trbidi="on">As part of EBS database migration on Exadata, we recently deployed a brand new Exadata X5-2L (eighth rack), and migrated an Oracle EBS Database from the typical storage/server technologies. <br /><br /><b>Below are the environment details:</b><br /><br />EBS Suite 12.1.3 (running on two application servers with hardware LOAD BALANCER)<br />Database : 11.2.0.4, RAC database with 2 instance<br /><br />After the database migration, <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">buildxml </span>and <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">autoconfig </span>procedures went well on both application and database tiers. However, when the EBS login page is launched, it came out as just blank page, plus, apps passwords were unable to change through the typical procedure. We wonder what went wrong, as none of the procedure gave any significant failure indications, all went fine and we could see the successful completion messages.<br /><br />After a quick initial investigation, we found that there is an issue with the GUEST user, and also found that the profile was not loaded when the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">autoconfig </span>was ran on the application server. In the autoconfig log file, we could see the process was failed to update the password (ORACLE). We then tried all workaround, the recommended on Oracle support and other websites. Unfortunately, none of the workarounds helped us.<br /><br /><div style="text-align: left;">After almost spending a whole day, investigating and analyzing the root cause, we looked at the DB components and status in <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">dba_registry</span> view. We found the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">JSserver Java Virtual Machine </span>component INVALID. During Exadata software deployment at RDBMS patch installation phase, there was an error while applying the patch due to conflict between the patches. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">Without further wasting a single second, we ran the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">@catbundle </span>and followed by <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">ultrp.sql</span>.</div><div style="text-align: left;"><br /></div><div style="text-align: left;">Guess what, all issues disappeared. We run the autoconfig on the application servers. After which we could change the app user password and we could see the Login page too.</div><div style="text-align: left;"><br /><b>CONCLUSION</b><br />When you face EBS blank login page, and none of the workarounds fix the issues, its a good idea to have a look at dba_registry for any INVALID components.<br /><br /></div><div style="text-align: left;">It was quite a nice experience. </div><div style="text-align: left;"><br /></div><div style="text-align: left;">This really&nbsp; </div><br /></div> The Human Fly tag:blogger.com,1999:blog-19771507.post-2804547290615199035 Tue Nov 07 2017 09:35:00 GMT-0500 (EST) Oracle Linux is the differentiator in the industry http://www.dbaexpert.com/blog/oracle-linux-is-the-differentiator-in-the-industry/ <p>I am proud of our technical management team at Viscosity North America. We spent some time at Oracle OpenWorld providing our input on Oracle Linux. Surprisingly, each of us provided a different perspective and ended up being a rather comprehensive review. Please listen to our reviews of Oracle Linux and why it is the differentiator in the industry:</p> <p><a href="https://vimeo.com/user5833792/review/240041498/c4d1192768">https://vimeo.com/user5833792/review/240041498/c4d1192768</a> (Rich)</p> <p><a href="https://vimeo.com/user5833792/review/240041428/2700323569">https://vimeo.com/user5833792/review/240041428/2700323569</a> (Nitin)</p> <p><a href="https://vimeo.com/user5833792/review/240040559/d7cc713829">https://vimeo.com/user5833792/review/240040559/d7cc713829</a> (Charles)</p> <p><a href="https://vimeo.com/user5833792/review/240041244/442d5b06f1">https://vimeo.com/user5833792/review/240041244/442d5b06f1</a> (Jerry &#8211; Docker Containers)</p> <p>Posted by Charles Kim, Oracle ACE Director</p> admin http://www.dbaexpert.com/blog/?p=1206 Mon Nov 06 2017 23:49:12 GMT-0500 (EST) How to Convert Dec to Any Base in SQL http://www.talkapex.com/2017/11/how-to-convert-dec-to-any-base-in-sql/ <p>If you want to convert decimal (base 10) to to hexadecimal (base 16) in SQL you can do so easily with the built in <code>to_char</code> functionality:</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">select</span> <span class="keyword">trim</span>(to_char(<span class="number">300</span>, <span class="string">'XXXXX'</span>)) dec2hex</div><div class="line"><span class="keyword">from</span> dual;</div><div class="line"></div><div class="line">DEC2HEX</div><div class="line">12C</div></pre></td></tr></table></figure><p>What if you wanted to convert a decimal number to base 20 or any other base? This question recently came up when I was looking to add a <a href="https://github.com/OraOpenSource/oos-utils/issues/173" target="_blank" rel="external">transactional number generator</a> for <a href="https://github.com/OraOpenSource/oos-utils" target="_blank" rel="external">OOS Utils</a>. The goal of the ticket is to convert a sequence number into a human readable number (ex: invoice number). It can easily be solved using PL/SQL (solution below) but I wanted to see if I could do it in SQL as it presents an interesting problem.</p><h2 id="The-Formula"><a href="#The-Formula" class="headerlink" title="The Formula"></a>The Formula</h2><p>For some, this section will go down memory lane to your college / university years where you had to convert dec to hex by hand. It’s important to understand the formula to convert dec to hex (or any base),</p><p>Using the first example, this is how to convert <code>300</code> to <code>12C</code> “by hand”: <em>Note <code>Q</code> = Quotient, <code>R</code> = Remainder</em></p><ul><li><code>300/16 = Q: 18, R: 12 (hex: C)</code></li><li><code>18/16 = Q:1, R: 2 (hex: 2)</code></li><li><code>1/16 = Q: 0, R: 1 (hex: 1)</code></li></ul><p>The steps above produce the hexadecimal number <code>12C</code>. More importantly, each value is dependent on the calculation of the previous line. This isn’t easy to do in SQL.</p><h2 id="PL-SQL-Function"><a href="#PL-SQL-Function" class="headerlink" title="PL/SQL Function"></a>PL/SQL Function</h2><p>The following function will convert dec to hex in PL/SQL:</p><figure class="highlight"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div></pre></td><td class="code"><pre><div class="line">create or replace function dec2hex (</div><div class="line"> p_num in integer)</div><div class="line"> return varchar2</div><div class="line">as</div><div class="line"> l_return varchar2(255);</div><div class="line"> l_quotient integer;</div><div class="line"> l_remainder integer;</div><div class="line"> c_base constant pls_integer := 16;</div><div class="line">begin</div><div class="line"></div><div class="line"> l_quotient := p_num;</div><div class="line"></div><div class="line"> while l_quotient &gt; 0 loop</div><div class="line"> l_remainder := mod(l_quotient, c_base);</div><div class="line"> l_quotient := trunc(l_quotient / c_base);</div><div class="line"></div><div class="line"> -- A=10, B=11, ... F=15</div><div class="line"> l_return := substr('0123456789ABCDEF', l_remainder+1, 1) || l_return;</div><div class="line"> end loop;</div><div class="line"></div><div class="line"> return l_return;</div><div class="line">end dec2hex;</div><div class="line">/</div></pre></td></tr></table></figure><p>As you can see PL/SQL uses the quotient from the previous loop to calculate the current loop’s remainder.</p><h2 id="SQL-Solution"><a href="#SQL-Solution" class="headerlink" title="SQL Solution"></a>SQL Solution</h2><p>In SQL, finding the value of the previous row is easy using an analytic function such as <a href="https://docs.oracle.com/database/122/SQLRF/Analytic-Functions.htm#SQLRF06174" target="_blank" rel="external"><code>lag</code></a>. If you’ve never used analytic functions before, <a href="https://twitter.com/connor_mc_d" target="_blank" rel="external">Connor McDonald</a> has a great <a href="https://www.youtube.com/watch?v=xvZ4SmKtazs" target="_blank" rel="external">series on youtube</a> about them.</p><p>Using the previous row’s calculated value for the current row is more difficult and can’t be done using analytic functions. This is where the <a href="https://docs.oracle.com/database/122/SQLRF/SELECT.htm#GUID-CFA006CA-6FF1-4972-821E-6996142A51C6__I2171160" target="_blank" rel="external">model clause</a> comes in. It’s one of the lesser known features in Oracle SQL but very powerful in the right circumstances.</p><p>The query below will do dec to hex (or any other “base X”) conversion. For demo purposes I have left the <code>select ... from my_data</code> portion uncommented to highlight the model clause. To do a full translation uncomment the last few lines.</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div><div class="line">54</div><div class="line">55</div><div class="line">56</div><div class="line">57</div><div class="line">58</div><div class="line">59</div><div class="line">60</div><div class="line">61</div><div class="line">62</div><div class="line">63</div></pre></td><td class="code"><pre><div class="line">var x number;</div><div class="line">var base number;</div><div class="line"></div><div class="line">:x := 300;</div><div class="line">:base := 16;</div><div class="line"></div><div class="line"></div><div class="line">with</div><div class="line"> <span class="comment">-- Find how many loops we'll need to convert dec to basex</span></div><div class="line"> lvls as (</div><div class="line"> <span class="keyword">select</span> <span class="keyword">level</span> lvl</div><div class="line"> <span class="keyword">from</span> dual</div><div class="line"> <span class="comment">-- The &lt;= logic will return the number of characters required for conversion</span></div><div class="line"> <span class="keyword">connect</span> <span class="keyword">by</span> <span class="keyword">level</span> &lt;= <span class="keyword">ceil</span>(<span class="keyword">log</span>(:base, :x)) + <span class="keyword">decode</span>(<span class="keyword">log</span>(:base, :x), <span class="keyword">ceil</span>(<span class="keyword">log</span>(:base, :x)), <span class="number">1</span>,<span class="number">0</span>)</div><div class="line"> ),</div><div class="line"> <span class="comment">-- Alphabet 0..Z</span></div><div class="line"> <span class="comment">-- Where 0-9, A=10, B=11 ....</span></div><div class="line"> alphabet <span class="keyword">as</span> (</div><div class="line"> <span class="keyword">select</span></div><div class="line"> <span class="keyword">level</span><span class="number">-1</span> <span class="keyword">num</span>,</div><div class="line"> <span class="keyword">case</span></div><div class="line"> <span class="keyword">when</span> <span class="keyword">level</span><span class="number">-1</span> &lt; <span class="number">10</span> <span class="keyword">then</span> to_char(<span class="keyword">level</span><span class="number">-1</span>)</div><div class="line"> <span class="keyword">else</span> <span class="keyword">chr</span>( <span class="keyword">ascii</span>(<span class="string">'A'</span>)+<span class="keyword">level</span><span class="number">-1</span><span class="number">-10</span>)</div><div class="line"> <span class="keyword">end</span> letter</div><div class="line"> <span class="keyword">from</span> dual</div><div class="line"> <span class="keyword">connect</span> <span class="keyword">by</span> <span class="keyword">level</span> &lt;= :base</div><div class="line"> ),</div><div class="line"> <span class="comment">-- Returns rows for all the Quotient and Remainder in dec value</span></div><div class="line"> my_data <span class="keyword">as</span> (</div><div class="line"> <span class="keyword">select</span></div><div class="line"> lvl,</div><div class="line"> quotient,</div><div class="line"> <span class="keyword">remainder</span></div><div class="line"> <span class="keyword">from</span> lvls</div><div class="line"> <span class="keyword">model</span></div><div class="line"> <span class="keyword">return</span> all <span class="keyword">rows</span></div><div class="line"> <span class="keyword">dimension</span> <span class="keyword">by</span> (lvl)</div><div class="line"> <span class="keyword">measures</span>( <span class="number">0</span> <span class="keyword">remainder</span>, <span class="number">0</span> quotient)</div><div class="line"> <span class="keyword">rules</span> (</div><div class="line"> <span class="comment">-- Order matters here. I.e. R must come after Q so R can "see" Q</span></div><div class="line"> <span class="comment">-- cv docs: https://docs.oracle.com/database/122/SQLRF/Model-Functions.htm#SQLRF51210</span></div><div class="line"> quotient[lvl] = trunc(nvl(quotient[cv(lvl)<span class="number">-1</span>], :x) / :base),</div><div class="line"> <span class="keyword">remainder</span>[lvl] = <span class="keyword">mod</span>(nvl(quotient[cv(lvl)<span class="number">-1</span>], :x), :base)</div><div class="line"> )</div><div class="line"> )</div><div class="line"><span class="comment">-- For demo purposes</span></div><div class="line"><span class="keyword">select</span> md.*, a.letter</div><div class="line"><span class="keyword">from</span> my_data md, alphabet a</div><div class="line"><span class="keyword">where</span> <span class="number">1</span>=<span class="number">1</span></div><div class="line"> <span class="keyword">and</span> md.remainder = a.num</div><div class="line"><span class="keyword">order</span> <span class="keyword">by</span> md.lvl</div><div class="line"><span class="comment">-- Uncomment below for dec2hex conversion</span></div><div class="line"><span class="comment">--select</span></div><div class="line"><span class="comment">-- listagg(a.letter, '') within group (order by md.lvl desc) basex</span></div><div class="line"><span class="comment">--from my_data md, alphabet a</span></div><div class="line"><span class="comment">--where 1=1</span></div><div class="line"><span class="comment">-- and md.remainder = a.num</span></div><div class="line">;</div><div class="line"></div><div class="line">LVL QUOTIENT REMAINDER LETTER</div><div class="line"> 1 18 12 C</div><div class="line"> 2 1 2 2</div><div class="line"> 3 0 1 1</div></pre></td></tr></table></figure><h2 id="Final-Thoughts"><a href="#Final-Thoughts" class="headerlink" title="Final Thoughts"></a>Final Thoughts</h2><p>The model clause is extremely powerful when used to solve problems it was intended for. The toughest thing to do is learn and understand how it works with all it’s options/function. If it’s any help, I’m still learning more about the model clause and by no means an expert.</p><p>If you do some interesting things with a model clause please blog about it and send me a message as I can list future posts in this article.</p> Martin Giffy D'Souza http://www.talkapex.com/2017/11/how-to-convert-dec-to-any-base-in-sql/ Mon Nov 06 2017 22:26:15 GMT-0500 (EST) Cómo manejar el ancho de columnas en los Informes en Oracle APEX 5.1 http://feedproxy.google.com/~r/DescubriendoElMundoDeOracle/~3/hc4eywxVo6g/como-manejar-el-ancho-de-columnas-en.html Deben existir diferentes formas de manejar el ancho de columnas en los informes en Oracle APEX 5.1.<br /><br />En este artículo voy a mostrar dos de ellas. Por ejemplo, tenemos un informe interactivo de la tabla Empleados (EMP):<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-AmCtM97Nzj4/WgD_kZEeLlI/AAAAAAAAJhk/CAQ5aCpU8iAKzWQpUYqEBbrTKh0V1QRvACLcBGAs/s1600/img1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="725" data-original-width="1588" height="182" src="https://2.bp.blogspot.com/-AmCtM97Nzj4/WgD_kZEeLlI/AAAAAAAAJhk/CAQ5aCpU8iAKzWQpUYqEBbrTKh0V1QRvACLcBGAs/s400/img1.jpg" width="400" />&nbsp;</a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--></div><div class="separator" style="clear: both; text-align: left;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> </div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="mso-ansi-language: ES;">Y queremos modificar el ancho de la columna <b>Job</b>.</span></div><div class="MsoNormal" style="text-align: justify;"><br /><a name='more'></a><br /></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="mso-ansi-language: ES;">Desde el diseñador de páginas:</span></div><div class="MsoNormal" style="margin-left: .25in; mso-list: l0 level2 lfo2; text-align: justify; text-indent: -.25in;"><span lang="ES" style="font-family: &quot;symbol&quot;; mso-ansi-language: ES; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="ES" style="mso-ansi-language: ES;">Seleccionamos la columna JOB</span></div><div class="MsoNormal" style="margin-left: .25in; mso-list: l1 level1 lfo1; text-align: justify; text-indent: -.25in;"><span lang="ES" style="font-family: &quot;symbol&quot;; mso-ansi-language: ES; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp; </span></span></span><span lang="ES" style="mso-ansi-language: ES;">En la sección <b style="mso-bidi-font-weight: normal;">Column Formatting</b>, escribimos el siguiente código HTML en el recuadro de <b style="mso-bidi-font-weight: normal;">HTML expression</b>:</span><span lang="ES" style="font-family: &quot;courier new&quot;; mso-ansi-language: ES;"></span></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="font-family: &quot;courier new&quot;; mso-ansi-language: ES;">&lt;span style="width:500px;display:inline-block;"&gt;#JOB#&lt;/span&gt;</span></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="font-family: &quot;courier new&quot;; mso-ansi-language: ES;">&nbsp; </span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-i-1bLQr1ifg/WgEAoSdxXsI/AAAAAAAAJhs/kf59oxzsDislGMOB0dhcBMA7NQE-PtdGwCLcBGAs/s1600/img2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="594" data-original-width="1600" height="147" src="https://4.bp.blogspot.com/-i-1bLQr1ifg/WgEAoSdxXsI/AAAAAAAAJhs/kf59oxzsDislGMOB0dhcBMA7NQE-PtdGwCLcBGAs/s400/img2.jpg" width="400" /></a></div><div class="MsoNormal" style="text-align: justify;"></div><br /><div class="MsoNormal" style="text-align: justify;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> </div><div class="MsoNormal" style="text-align: justify;"><u><span lang="ES" style="mso-ansi-language: ES;">Consideración</span></u><span lang="ES" style="mso-ansi-language: ES;">: las columnas de tipo link no tienen esa sección en el panel de propiedades, sin embargo, podemos colocar en atributos del link el ancho de la columna que necesitamos:</span></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="font-family: &quot;courier new&quot;; mso-ansi-language: ES;">style="width:300px;display:inline-block;"</span></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;"><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--></div><br /><div class="MsoNormal" style="text-align: justify;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> </div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="mso-ansi-language: ES;">La otra forma de controlar el ancho de las columnas es usando un identificador estático de la región del informe interactivo y un identificador estático de columna.</span></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="mso-ansi-language: ES;">Por ejemplo, coloquemos el identificador estático <b>COLENAME</b> en la columna ENAME:</span></div><br /><span lang="ES" style="font-family: &quot;courier new&quot;; mso-ansi-language: ES;"></span><br /><div class="MsoNormal" style="text-align: justify;"></div><div class="separator" style="clear: both; text-align: left;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-MHRN2UHZ0LM/WgECkEq8u-I/AAAAAAAAJh4/pSe4tYrxOvYEwzzJ6Jp6YXRfVjJ3Kyy7QCLcBGAs/s1600/img3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="631" data-original-width="1600" height="157" src="https://1.bp.blogspot.com/-MHRN2UHZ0LM/WgECkEq8u-I/AAAAAAAAJh4/pSe4tYrxOvYEwzzJ6Jp6YXRfVjJ3Kyy7QCLcBGAs/s400/img3.jpg" width="400" /></a></div><br /><div class="separator" style="clear: both; text-align: left;"><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--></div><br /><div class="separator" style="clear: both; text-align: left;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> </div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="mso-ansi-language: ES;">Lo mismo hacemos en el informe interactivo, seleccionamos Empleados e ingresamos el Static ID como <b style="mso-bidi-font-weight: normal;">EMP</b>.</span></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="mso-ansi-language: ES;">Luego hacemos clic en el título de la página e ingresamos en CSS inline la siguiente regla:</span></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="font-family: &quot;courier new&quot;; mso-ansi-language: ES;">#EMP th#COLENAME, #EMP td[headers=COLENAME]{min-width:250px}</span></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="font-family: &quot;courier new&quot;; mso-ansi-language: ES;"></span></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/--Z99v6bsc5A/WgED3klSNPI/AAAAAAAAJiA/f12d77_71FMz4m_YaBENdGX9ubkVIW1IgCEwYBhgL/s1600/img4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="634" data-original-width="1600" height="157" src="https://4.bp.blogspot.com/--Z99v6bsc5A/WgED3klSNPI/AAAAAAAAJiA/f12d77_71FMz4m_YaBENdGX9ubkVIW1IgCEwYBhgL/s400/img4.jpg" width="400" /></a></div><div class="MsoNormal" style="text-align: justify;"><br /></div><br /><div class="MsoNormal" style="text-align: justify;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> </div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="mso-ansi-language: ES;">Ejecutamos la página y podemos ver que la columna de ename se ha modificado por el ancho que le pusimos, además de ver la columna JOB modificada, al punto que ahora se visualiza la barra horizontal de desplazamiento porque las columnas superan el ancho de la región.</span></div><br /><div class="separator" style="clear: both; text-align: left;"></div><div class="separator" style="clear: both; text-align: left;"></div><div class="MsoNormal" style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-1cl1U_qx6dU/WgEE1uYvdiI/AAAAAAAAJiI/zqGkggpqR6kWepkb19w5DcRuUuH7mUCswCLcBGAs/s1600/img5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="730" data-original-width="1600" height="181" src="https://4.bp.blogspot.com/-1cl1U_qx6dU/WgEE1uYvdiI/AAAAAAAAJiI/zqGkggpqR6kWepkb19w5DcRuUuH7mUCswCLcBGAs/s400/img5.jpg" width="400" /></a></div><div class="MsoNormal" style="text-align: justify;"><span lang="ES" style="font-family: &quot;courier new&quot;; mso-ansi-language: ES;"><span style="font-family: &quot;times&quot; , &quot;times new roman&quot; , serif;">Hasta la próxima!</span></span></div><br /><br /><img src="http://feeds.feedburner.com/~r/DescubriendoElMundoDeOracle/~4/hc4eywxVo6g" height="1" width="1" alt=""/> Clarisa J. Maman Orfali tag:blogger.com,1999:blog-1315583943401206186.post-1466685639838073943 Mon Nov 06 2017 19:59:00 GMT-0500 (EST) Utilizar el tab container para distribuir información en múltiples tabs en Oracle APEX 5.1 http://feedproxy.google.com/~r/DescubriendoElMundoDeOracle/~3/dvUTKcLk4C0/utilizar-el-tab-container-para.html En este pequeño post quiero mostrar como usar el tab container para distribuir información en múltiples tabs.<br /><br />Para este ejemplo vamos a crear una página en blanco y realizar los siguientes pasos:<br /><br />1) Creamos una región de contenido estático, la llamaremos TAB<br />2) En la sección apariencia indicamos que la plantilla sea “Tabs Container”<br />3) Dentro de esa región creamos una subregión, por ejemplo puede ser una región de informe clásico con la siguiente consulta de origen: <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">select * from emp&nbsp;</span><br />4) En la sección Diseño indicamos que la Región principal es: “TAB” que quiere decir que esta subregión es hija de la región TAB<br />5) Creamos otra subregión, puede ser de informe clásico o cualquier otro tipo de región, según lo que necesitemos, por ejemplo yo he creado otra subregión de tipo informe clásico con la siguiente consulta sql: <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">select * from emp where deptno = 20&nbsp;</span><br />6) Volvemos a indicar que la Región principal es: “TAB”, para que en los informes clásicos no se vean el título podemos usar para cada uno en plantilla que sea “Blank with Attributes”.<br />7) Creamos otra subregión, puede ser de contenido estático e indicamos que su región padre es “TAB”<br /><br /><br />Aquí abajo muestro una imagen del diseñador de páginas:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-p2Ukillb5Ck/WgD7dTbzRkI/AAAAAAAAJhc/QXR7Tl7tHzo3jXT-fZ0RsWxrUtYrGvXbwCEwYBhgL/s1600/tab1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="551" data-original-width="1381" height="158" src="https://2.bp.blogspot.com/-p2Ukillb5Ck/WgD7dTbzRkI/AAAAAAAAJhc/QXR7Tl7tHzo3jXT-fZ0RsWxrUtYrGvXbwCEwYBhgL/s400/tab1.jpg" width="400" /></a></div><br /><br />Resultado:<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-H9JWSQYRc5s/WgD7jPI8sUI/AAAAAAAAJhc/A7Kg1YIryukRyFWHULZ460POe4ZeFSwnACEwYBhgL/s1600/tab2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="414" data-original-width="908" height="181" src="https://4.bp.blogspot.com/-H9JWSQYRc5s/WgD7jPI8sUI/AAAAAAAAJhc/A7Kg1YIryukRyFWHULZ460POe4ZeFSwnACEwYBhgL/s400/tab2.jpg" width="400" /></a></div><br />En las subregiones podemos colocar el contenido que nosotros necesitamos mostrar en nuestra página ya sea informes, contenido estático y dinámico, imágenes, etc. <img src="http://feeds.feedburner.com/~r/DescubriendoElMundoDeOracle/~4/dvUTKcLk4C0" height="1" width="1" alt=""/> Clarisa J. Maman Orfali tag:blogger.com,1999:blog-1315583943401206186.post-7660494056994341493 Mon Nov 06 2017 19:19:00 GMT-0500 (EST) Exadata X5-2L deployment & Challenges http://jaffardba.blogspot.com/2017/11/exadata-x5-2l-deployment-challenges.html <div dir="ltr" style="text-align: left;" trbidi="on">A brand new Exadata X5-2L eighth rack (I knew the latest is X7 now, but it was for a POC, so no worries) has been deployed recently at a customer for Oracle EBS Exadata migration POC purpose. Its wasn't an easy walk in the park as I initially presumed. There were some challenges (network, configuration) thrown during the migration, but, happily overcome and had it installed and EBS database migration completion.<br /><br />So, I am going to share yet another Exadata bare metal deployment story explaining the challenges I have faced, and how they are fixed.<br /><br /><b>Issue 1) DB network cable issues:</b><br />After successful execution of the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">elasticConfig</span>, all the Exadata factory IP addresses have been set to client IPs. Though the management network was accessible from the outside, client network was not accessible. When verified with the network team about enabling the ports on the corporate switch, they confirmed that the ports are enabled, however, the connection is showing as not active and asked to us investigate the network cables connected to the DB nodes. When we verified the network cables ports, we didn't find any lights flashing and after an extensive investigation (Switch ports, SFP on Exadata and Corporate switch, checking the cables status), it was found that the cables pin direction was not properly connected. Also, found that the network bonding interfaces (eth4 and eth5) were not up, confirmed from<span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"> ethtool eth1</span> command. After fixing the cables, and bringing up the interfaces <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">(ifup eth4 &amp; eith5)</span>, we could see that cables are connected properly and we can also see the lights on the ports.<br /><br />$ethtool eth4 (shows the interfaces were not connected)<br />Settings for eth4:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Supported ports: [ TP ]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Supported link modes:&nbsp;&nbsp; 100baseT/Full<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000baseT/Full<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10000baseT/Full<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Supported pause frame use: No<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Supports auto-negotiation: Yes<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Advertised link modes:&nbsp; 100baseT/Full<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000baseT/Full<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10000baseT/Full<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Advertised pause frame use: No<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Advertised auto-negotiation: Yes<br />&nbsp;&nbsp;&nbsp;&nbsp;<b>&nbsp;&nbsp;&nbsp; Speed: Unknown!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Duplex: Unknown! (255)</b><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Port: Twisted Pair<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PHYAD: 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transceiver: external<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Auto-negotiation: on<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MDI-X: Unknown<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Supports Wake-on: d<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Wake-on: d<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Current message level: 0x00000007 (7)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drv probe link<br /><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Link detected: no</b><br /><br /><b>Issue 2) Wrong Netmask selection for client network:</b><br />After fixing the cable issues, we then continued with <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">onecommand </span>execution. During the validation it failed because of different <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">netmask </span>for client network (under the cluster information section). The customer unfortunately made a mistake in the client network <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">netmask </span>selection for cluster settings, so there was a difference in the client <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">netmask </span>value for client and cluster. This was fixed by modifying the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">netmask </span>value in the ifcfg-boneth0 file (<span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">/etc/sysconfig/network-scripts</span>), restart the network services.<br /><br /><b></b><b>Issue 3) Failed eight Rack configuration (rack type and disk size):</b><br />Since the system was delivered somewhere during end of August 2015, no one actually knows exactly the disk size and rack model. The BOQ (Bill of quantity) for the order only shows X5-2 HC storage. So, there was wrong selection in the OEDA for Exadata rack and disk size. Instead of 4TB disk size, it was selected as 8TB disk size and instead of Elastic configuration, fixed Eighth rack was selected. This was fixed by rerunning the OEDA with the correct options.<br /><br /><b>Issue 4) Cell server IP issues:</b><br />There was another obstacle faced while doing the cell connectivity (part of <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">onecommand</span>). Cell server IPs were not modified by the <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">elasticConfig</span>. Fortunately, I found my friend blog on this topic and quickly fixed the issue. This is why I like to blog all the technical issues, who knows, this could solve someone pains.<br /><br /><a href="http://blog.umairmansoob.com/exadata-deployment-error-cell-02559/">http://blog.umairmansoob.com/exadata-deployment-error-cell-02559/</a><br /><br /><b>Issue 5) SCAN Listener configuration:</b><br />Cluster validation failed due to inconsistent values for scan name. During the investigation of various issues, private, public &amp; scan IPs are put in the /etc/hosts file. So, while configuring LISTENER_SCAN2 and SCAN3, this issue happened. This was fairly understandable. Due to 3 entries of scan values in the /etc/hosts file this happened. Upon a quick google about the issue, the following blog helped me to fix the issue<br /><br /><a href="https://learnwithme11g.wordpress.com/2010/09/03/how-to-add-scan-listener-in-11gr2-2/">https://learnwithme11g.wordpress.com/2010/09/03/how-to-add-scan-listener-in-11gr2-2/</a><br /><br />Finally, I have managed to deploy the Exadata successfully and perform the Oracle EBS database migration . No doubt, this experience really made me strong in network and other areas. So, every challenges comes with opportunity to learn.<br /><br />I thank those individuals who really write blogs and share their experience to help Oracle community.<br /><br />There is still one open issues which is yet to be resolved. A slow <span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">sqlplus </span>and db startup. I presume this is due to heavy resource utilization over the server. Yet to resolve the mystery. Stay tuned for more updates.<br /><br />Update : 06-Nov-2017.<br /><br />sqlplus slowness resolved by increasing the hugepages from 26gb to 96GB. <br /><br /><br /><br /><br /><br /><b></b></div> The Human Fly tag:blogger.com,1999:blog-19771507.post-7450665381586344948 Sun Nov 05 2017 08:01:00 GMT-0500 (EST) What Color is YOUR Tractor? http://montylatiolais.blogspot.com/2017/11/what-color-is-your-tractor.html Martin Widlake, a giant in the Oracle Community, tweeted something to the effect that he had purchased a lawn tractor. In fact, here's the actual tweet...<br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-G3hKGpRKz20/Wf0VnW5-O5I/AAAAAAAAGts/JeUacEwRO0YrbRMO5VoFmf1Vn-RXa95AACLcBGAs/s1600/honda_tractor.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="629" data-original-width="491" height="320" src="https://4.bp.blogspot.com/-G3hKGpRKz20/Wf0VnW5-O5I/AAAAAAAAGts/JeUacEwRO0YrbRMO5VoFmf1Vn-RXa95AACLcBGAs/s320/honda_tractor.PNG" width="249" /></a></div><br /><br />To which I responded..."it's how well you mow fast"<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Blbi1b3NcEg/Wf0V0InD5YI/AAAAAAAAGtw/Mq8oEj7VOiUaT1nmyOViDGdIoFngTbMZwCLcBGAs/s1600/honda_tractor2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="291" data-original-width="810" height="142" src="https://3.bp.blogspot.com/-Blbi1b3NcEg/Wf0V0InD5YI/AAAAAAAAGtw/Mq8oEj7VOiUaT1nmyOViDGdIoFngTbMZwCLcBGAs/s400/honda_tractor2.PNG" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>...which referenced the John Deere series of commercials at the time which professed "It's not how fast you mow...it's how well you mow fast". I thought the commercials were hilarious. Decide for yourself.<br /><br /><div class="separator" style="clear: both; text-align: center;"><iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/9aWdn63bNh4/0.jpg" src="https://www.youtube.com/embed/9aWdn63bNh4?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Notice, my reply never mentioned John Deere...not a single hash tag..not even the entire quote from the commercial. So you can imagine my surprise when I almost immediately received a request to DM&nbsp;@JohnDeere. What? Are they going to make me take down the tweet? You've gotta be kidding. C'mon, really??&nbsp;</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Nope, they just wanted to show their appreciation.&nbsp;</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-9ZoCMwM2HWo/Wf0Z1A9CJAI/AAAAAAAAGt8/eGWDcysqq94THzPYP4kANbQubewVuMPagCLcBGAs/s1600/deere.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="112" data-original-width="879" height="80" src="https://1.bp.blogspot.com/-9ZoCMwM2HWo/Wf0Z1A9CJAI/AAAAAAAAGt8/eGWDcysqq94THzPYP4kANbQubewVuMPagCLcBGAs/s640/deere.PNG" width="640" /></a></div><div class="" style="clear: both; text-align: left;"><br /></div><div class="" style="clear: both; text-align: left;">And in the mail came this...</div><div class="" style="clear: both; text-align: left;"><br /></div><div class="" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-fNs_2uxSsuQ/Wf0dY1umkwI/AAAAAAAAGuM/Een5P38LFi0qjLRgV3SrXXD3Emtlgog0ACLcBGAs/s1600/20171103_204736.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="200" src="https://2.bp.blogspot.com/-fNs_2uxSsuQ/Wf0dY1umkwI/AAAAAAAAGuM/Een5P38LFi0qjLRgV3SrXXD3Emtlgog0ACLcBGAs/s200/20171103_204736.jpg" width="150" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="" style="clear: both; text-align: left;">WOW! I know it was just a T-shirt, but I was blown away because it was so unexpected and unsolicited. I wasn't trying to get on their radar or curry favor. I was just trying to be a wise guy on Twitter.&nbsp;</div><div class="" style="clear: both; text-align: left;"><br /></div><div class="" style="clear: both; text-align: left;">One thing is certain, you can guess the color of my next tractor....all for the price of a t-shirt.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">...our journey continues.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div> Monty Latiolais tag:blogger.com,1999:blog-4670514573534452370.post-2797486794533676339 Fri Nov 03 2017 22:01:00 GMT-0400 (EDT) Premiação de reconhecimento utilizando Oracle Apex http://desenvolvedorapex.blogspot.com/2017/11/premiacao-de-reconhecimento-utilizando.html Olá pessoal,<br /><br />gostaria de compartilhar minha imensa alegria e satisfação por ter sido premiado na semana passada em 3 categorias no prêmio <b>Reconhe-Ser </b>concedido pelo Tribunal de Contas da União como reconhecimento aos servidores que se destacaram durante o ano.<br /><br />Fui agraciado nas categorias:<br /><br /><b><u>1) Instrutor destaque</u></b><br /><b><u><br /></u></b><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-z64uDIprBFk/Wf0ahBtejxI/AAAAAAAAA0E/s6Rf7UbBCCMh7QKxR5kpzC8dCM5oSEzZwCLcBGAs/s1600/_IMG_6612.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="439" data-original-width="620" height="226" src="https://2.bp.blogspot.com/-z64uDIprBFk/Wf0ahBtejxI/AAAAAAAAA0E/s6Rf7UbBCCMh7QKxR5kpzC8dCM5oSEzZwCLcBGAs/s320/_IMG_6612.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div>Esse prêmio foi concedido por ter sido muito bem avaliado como instrutor no curso "<b>Desenvolvendo aplicações web utilizando Oracle Application Express 5</b>".<br /><br />Obrigado a todos os alunos pela excelente avaliação!!!<br /><br /><br /><b><u>2) Trabalho de destaque</u></b><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-KCebZDA5xDw/Wf0ahHQcEpI/AAAAAAAAA0I/E9cHvmx-icUtgFnXYBslP_1Vhx43Ld4_ACEwYBhgL/s1600/_IMG_6611.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="432" data-original-width="612" height="225" src="https://3.bp.blogspot.com/-KCebZDA5xDw/Wf0ahHQcEpI/AAAAAAAAA0I/E9cHvmx-icUtgFnXYBslP_1Vhx43Ld4_ACEwYBhgL/s320/_IMG_6611.jpg" width="320" /></a></div><br />Este prêmio foi concedido pela atuação no projeto do "<b>Portfólio/Catálogo de Serviços de TI</b>" desenvolvido na tecnologia <b>Oracle Application Express.</b><br /><br />Agradeço aos colegas da TI do Tribunal pela oportunidade de trabalhar neste projeto!<br /><br /><br /><b>3) Trabalho inovador</b><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-U_Djq-Eal-M/Wf0ag8_YY9I/AAAAAAAAA0I/SNemD8EEpYwSz4BEGxAvyxSzgRf9pjSRgCEwYBhgL/s1600/_IMG_6609.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="453" data-original-width="640" height="226" src="https://3.bp.blogspot.com/-U_Djq-Eal-M/Wf0ag8_YY9I/AAAAAAAAA0I/SNemD8EEpYwSz4BEGxAvyxSzgRf9pjSRgCEwYBhgL/s320/_IMG_6609.jpg" width="320" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Este prêmio foi concedido pela atuação no "<b>Sistema de certidão negativa de inabilitados e inidôneos</b>" que em menos de um ano já se tornou a aplicação da tecnologia <b>Oracle Application Express </b>mais acessada do TCU!</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Obrigado à equipe da Semec pela oportunidade!</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Repare que todos os prêmios foram relativos a trabalhos envolvendo a tecnologia <b>Oracle Application Express!</b></div><div class="separator" style="clear: both; text-align: left;"><b><br /></b></div><div class="separator" style="clear: both; text-align: left;">Compartilho minha alegria e agradeço a todos que de alguma forma contribuíram para essa conquista,</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Obrigado!</div> Anderson Ferreira tag:blogger.com,1999:blog-5150514048465222719.post-4029242259247131647 Fri Nov 03 2017 21:56:00 GMT-0400 (EDT) Oracle APEX - Installation d'un atelier de développement http://rcitools.blogspot.com/2017/11/oracle-apex-installation-dun-atelier-de.html &nbsp;<br />Voici un <a href="http://rci-informatique.net/d/xe_apex_ords.pdf" target="_blank">tutoriel</a> décrivant l'installation des outils suivants :<br /><br /><b>Oracle XE 11.2</b> Windows 64bits<br />version du 4/6/2014<br /><br /><b>Oracle Apex 5.1.3</b><br />version 5.1.3.00.05 du 26/9/2017<br /><br /><b>Oracle REST Data Services</b> (appelé auparavant Oracle APEX Listener)<br />version 3.0.12.263.15.32 du 29/9/2017<br /><br /><b>Apache Tomcat</b>, serveur HTTP<br />version 7.0.82<br /><br />Accès au tutoriel <a href="http://rci-informatique.net/d/xe_apex_ords.pdf" target="_blank">xe_apex_ords.pdf</a><br /><br />Merci par avance de vos remarques !<br /><br />Jean-Pierre LOISON<br />RCI Informatique SAS<br />&nbsp; <br /><br /> RCI Informatique tag:blogger.com,1999:blog-6486731048356836969.post-7166242577550831022 Thu Nov 02 2017 04:51:00 GMT-0400 (EDT) Using multiple Authentication Schemes for your APEX application http://roelhartman.blogspot.com/2017/10/using-multiple-authentication-schemes.html Recently someone asked me how he could implement multiple authentication schemes for his APEX application. He would like to use (some kind of) Single Sign-on authentication and - as an alternative - an Application Express Authentication. The problem is ... you can only define one Authentication Scheme being "Current" for an application! So how can we solve this issue?<br /><br />First, we need te be aware that multiple applications can share their authentication by using the same cookie. Thus if you specify "MYCOOKIE" as the Cookie Name in Application A as well as in Application B, you can switch from A to B and back without the need of logging in again. It doesn't matter what Authentication Scheme Type you are using!<br /><br />Knowing this, we are halfway our solution. We need two Applications. One - the "real" application - using the Application Express Authentication, let's name this one "LAUNCHPAD". And another one using the Single Sign-on Authentication, named "SSO", with just one page named "HOME". Both using the same Cookie Name as described above.<br />On the login page of LAUNCHPAD we also define a button "Connect using SSO". This will issue a redirect to the page "SSO:HOME". Because we're not logged in yet, this will try to authenticate using the Single Sign-on Authentication. On the "SSO:HOME" page we just define one before header process that does a redirect to the "LAUNCHPAD:HOME" page. When the "SSO:HOME" page is being rendered, we are logged in, the cookie is set and we can safely redirect to the other application sharing the same cookie. Mission completed!<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-S9QXq5qKjM4/Wfho1ezvUwI/AAAAAAAAEL4/rC-Zy5QDRX42Wr0Bo4ZhTBAUfNhkevapwCLcBGAs/s1600/Screen%2BShot%2B2017-10-31%2Bat%2B13.11.42%2B.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="978" data-original-width="1418" height="440" src="https://2.bp.blogspot.com/-S9QXq5qKjM4/Wfho1ezvUwI/AAAAAAAAEL4/rC-Zy5QDRX42Wr0Bo4ZhTBAUfNhkevapwCLcBGAs/s640/Screen%2BShot%2B2017-10-31%2Bat%2B13.11.42%2B.png" width="640" /></a></div>Using an After Authentication Application Process in the SSO app, we can even do some additional checks based on the username returned by the SSO function (e.g. 'Proxy-Remote-User') - eventually redirecting to "LAUNCHPAD:LOGIN_DESKTOP" is something is wrong (thus showing the option to log in using a username and password). Roel Hartman tag:blogger.com,1999:blog-20567072.post-4135848366618011601 Tue Oct 31 2017 08:13:00 GMT-0400 (EDT) Wyróżnianie wierszy i kolumn w raporcie http://apex.dbe.pl/2017/10/wyroznianie-wierszy-i-kolumn-w-raporcie.html <div dir="ltr" id="docs-internal-guid-cf057fdd-586e-24ac-5984-7d406ca7538b" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Funkcjonalność Highlight w Interactive Report pozwala zmienić kolor tekstu i tła wiersza lub komórki, w zależności czy wiersz spełnia określone przez nas wymagania. Jednak co w przypadku, gdy mamy zwykły raport, a sama zmiana kolorów nam nie wystarcza?</span></div> <div style="text-align: justify;"> <br /></div> <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">W poniższym filmie pokazujemy, jak w kilku prostych krokach dodać podświetlanie odpowiedniego wiersza w klasycznym raporcie.</span></div> <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <br /></div> <div class="separator" style="clear: both; text-align: center;"> <iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/7KxpErVViG4/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/7KxpErVViG4?feature=player_embedded" width="320"></iframe></div> <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <br /></div> <div style="text-align: justify;"> <br /></div> <div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;"> <span style="background-color: transparent; color: black; font-family: &quot;arial&quot;; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Bezpośredni link do filmu znajduje się <a href="https://youtu.be/7KxpErVViG4" target="_blank">tutaj</a>.</span></div> Paweł Prusinowski tag:blogger.com,1999:blog-7531463720728239813.post-1450523392027360556 Tue Oct 31 2017 03:00:00 GMT-0400 (EDT) ORDS,OAuth2 & Web Services in APEX – Part 1 http://www.explorer.uk.com/web-services-part-1/ <h2>Creating your first Oracle REST Web Services</h2> <p>I recently gave a presentation on how to get started with Web Services at the UKOUG APEX SIG in London. The first half covered how to create Web Services with ORDS, how to protect them with OAuth2 and how to test them with a REST client. The second half covered how to call Web Services from your APEX applications.</p> <p>The following video is a recording of the presentation.</p> <p style="text-align: center;"><iframe src="https://www.youtube.com/embed/koNIRQY-ioY" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p> <p>Following on from that presentation, I would like to go into a little more detail on these topics and will be releasing a series of three blogs over the coming weeks coving the following areas.</p> <ol> <li>How to create a simple set of Web Services utilizing the standard Oracle EMP and DEPT tables, and how to test them using a REST client.</li> <li>How to protect your Web Services using OAUTH2 and how to test them with a REST client.</li> <li>How to access protected and non-protected Web Services within an APEX application, and how to deal with paginated responses.</li> </ol> <h2>Part 1 &#8211; Creating and testing ORDS Web Services</h2> <p>This first blog in the series will show you how to create a simple set of Web Services using ORDS and covers all four supported HTTP methods. It will also show you how to test the Web Services using a REST client.</p> <p><strong>Assumptions<br /> </strong></p> <ul> <li>You have a functioning installation of ORDS 3.0+.</li> <li>You have a suitable REST client for testing the web services. Simple GET method Web Services can be tested using a browser, however, Web Services that use the HTTP Header or require the use of a REST client such as Advanced, Insomnia, SoapUI, or Postman. The latter being my REST Client of choice.</li> </ul> <p><strong>ORDS Structure<br /> </strong>The following diagram shows the structure of Web Services within ORDS.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/structure.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6146" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/structure.jpg" alt="" width="1474" height="898" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/structure.jpg 1474w, http://www.explorer.uk.com/wp-content/uploads/2017/10/structure-300x183.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/10/structure-768x468.jpg 768w, http://www.explorer.uk.com/wp-content/uploads/2017/10/structure-1024x624.jpg 1024w" sizes="(max-width: 1474px) 100vw, 1474px" /></a></p> <p>&nbsp;</p> <p>Each database schema you enable for ORDS will consist of modules, templates, handlers and parameters. A module can have multiple templates, and a template can have a handler for each supported HTTP method, which are GET, POST, PUT and DELETE.</p> <p>This demonstration will show you how to create the following Web Services within a new schema called ORDSDEMO.</p> <table class=" alignleft" style="width: 100%; height: 240px;"> <tbody> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;"><strong>Template</strong></td> <td style="width: 226.817px; height: 24px;"><strong>Handler</strong></td> <td style="width: 689.183px; height: 24px;"><strong>Description</strong></td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">departments</td> <td style="width: 226.817px; height: 24px;">GET</td> <td style="width: 689.183px; height: 24px;">List all rows form DEPT</td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">departments</td> <td style="width: 226.817px; height: 24px;">POST</td> <td style="width: 689.183px; height: 24px;">Insert a row into DEPT</td> </tr> <tr style="height: 24.0667px;"> <td style="width: 183px; height: 24.0667px;">departments</td> <td style="width: 226.817px; height: 24.0667px;">PUT</td> <td style="width: 689.183px; height: 24.0667px;">Update a row in DEPT</td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">departments</td> <td style="width: 226.817px; height: 24px;">DELETE</td> <td style="width: 689.183px; height: 24px;">Delete a row from DEPT</td> </tr> <tr style="height: 24px;"> <td style="width: 183px; height: 24px;">employees</td> <td style="width: 226.817px; height: 24px;">GET</td> <td style="width: 689.183px; height: 24px;">List Employees in EMP (optionally for a single Department)</td> </tr> </tbody> </table> <p><strong>Oracle APIs<br /> </strong>Oracle have provided us with two APIs for defining, maintaining and protecting Web Services.</p> <ul> <li>ORDS &#8211; For developing Web Services</li> <li>OAUTH &#8211; For implementing OAUTH authentication</li> </ul> <p><strong>Web Service URL<br /> </strong>The URL for an ORDS Web Service is made up of five elements</p> <p>https://&lt;host&gt;:&lt;port&gt;/ords/&lt;schema&gt;/&lt;module&gt;/&lt;template&gt;</p> <ol> <li style="list-style-type: none;"> <ol> <li>Host &#8211; Name of the host</li> <li>Port &#8211; Port Number</li> <li>Schema &#8211; Pattern defined for the schema</li> <li>Module &#8211; Base path for the module</li> <li>Template &#8211; Pattern defined for the template</li> </ol> </li> </ol> <p><strong>ORDS Metadata<br /> </strong>As you build your APIs, you can use the public views owned by the ORDS_METADATA schema to verify what you have built. The following five views are the primary ones to query.</p> <ul> <li>USER_ORDS_SCHEMAS</li> <li>USER_ORDS_MODULES</li> <li>USER_ORDS_TEMPLATES</li> <li>USER_ORDS_HANDLERS</li> <li>USER_ORDS_PARAMETERS</li> </ul> <p><strong>Create a new user for the demo</strong><br /> First log onto SYS (as SYSDBA) and create a new user with the necessary privileges.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">CREATE USER ORDSDEMO IDENTIFIED BY ORDSDEMO DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;</span> <span style="font-family: 'courier new', courier, monospace;">GRANT CREATE TABLE TO ORDSDEMO;</span> <span style="font-family: 'courier new', courier, monospace;">GRANT CREATE SESSION TO ORDSDEMO;</span></pre> <p>Next log on as the newly created user ordsdemo and create a copy of the standard Oracle EMP and DEPT tables with sample data using the following SQL.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">CREATE TABLE DEPT(  </span> <span style="font-family: 'courier new', courier, monospace;">  DEPTNO     NUMBER(2,0),  </span> <span style="font-family: 'courier new', courier, monospace;">  DNAME      VARCHAR2(14),  </span> <span style="font-family: 'courier new', courier, monospace;">  LOC        VARCHAR2(13),  </span> <span style="font-family: 'courier new', courier, monospace;">  CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO));</span> <span style="font-family: 'courier new', courier, monospace;">CREATE TABLE EMP(  </span> <span style="font-family: 'courier new', courier, monospace;">  EMPNO    NUMBER(4,0),  </span> <span style="font-family: 'courier new', courier, monospace;">  ENAME    VARCHAR2(10),  </span> <span style="font-family: 'courier new', courier, monospace;">  JOB      VARCHAR2(9),  </span> <span style="font-family: 'courier new', courier, monospace;">  MGR      NUMBER(4,0),  </span> <span style="font-family: 'courier new', courier, monospace;">  HIREDATE DATE,  </span> <span style="font-family: 'courier new', courier, monospace;">  SAL      NUMBER(7,2),  </span> <span style="font-family: 'courier new', courier, monospace;">  COMM     NUMBER(7,2),  </span> <span style="font-family: 'courier new', courier, monospace;">  DEPTNO   NUMBER(2,0),  </span> <span style="font-family: 'courier new', courier, monospace;">  CONSTRAINT PK_EMP PRIMARY KEY (EMPNO),  </span> <span style="font-family: 'courier new', courier, monospace;">  CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT (DEPTNO));</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO DEPT VALUES(10,'ACCOUNTING','NEW YORK');</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO DEPT VALUES(20,'RESEARCH','DALLAS');</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO DEPT VALUES(30,'SALES','CHICAGO');</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO DEPT VALUES(40,'OPERATIONS','BOSTON');</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO DEPT VALUES(50,'PURCHASING','WASHINGTON');</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO DEPT VALUES(60,'HR','NEW YORK');</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7788,'SCOTT','ANALYST',7566,TO_DATE('19-APR-87','DD-MON-RR'),3000,NULL,20);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7698,'BLAKE','MANAGER',7839,TO_DATE('01-MAY-81','DD-MON-RR'),2850,NULL,30);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)    VALUES (7839,'KING','PRESIDENT',NULL,TO_DATE('17-NOV-81','DD-MON-RR'),5000,NULL,10);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7566,'JONES','MANAGER',7839,TO_DATE('02-APR-81','DD-MON-RR'),2975,NULL,20);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7782,'CLARK','MANAGER',7839,TO_DATE('09-JUN-81','DD-MON-RR'),2450,NULL,10);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7902,'FORD','ANALYST',7566,TO_DATE('03-DEC-81','DD-MON-RR'),3000,NULL,20);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7876,'ADAMS','CLERK',7788,TO_DATE('23-MAY-87','DD-MON-RR'),1100,NULL,20);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7499,'ALLEN','SALESMAN',7698,TO_DATE('20-FEB-81','DD-MON-RR'),1600,300,30);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7900,'JAMES','CLERK',7698,TO_DATE('03-DEC-81','DD-MON-RR'),950,NULL,50);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7654,'MARTIN','SALESMAN',7698,TO_DATE('28-SEP-81','DD-MON-RR'),1250,1400,30);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7934,'MILLER','CLERK',7782,TO_DATE('23-JAN-82','DD-MON-RR'),1300,NULL,10);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7369,'SMITH','CLERK',7902,TO_DATE('17-DEC-80','DD-MON-RR'),800,NULL,60);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7844,'TURNER','SALESMAN',7698,TO_DATE('08-SEP-81','DD-MON-RR'),1500,0,30);</span> <span style="font-family: 'courier new', courier, monospace;">INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) </span> <span style="font-family: 'courier new', courier, monospace;">  VALUES (7521,'WARD','SALESMAN',7698,TO_DATE('22-FEB-81','DD-MON-RR'),1250,500,40);</span> <span style="font-family: 'courier new', courier, monospace;">COMMIT;</span></pre> <p>You can use the following SQL to verify the tables have been populated correctly and contain the default set of six departments and fourteen employees.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">SELECT ename, dname, job, empno, hiredate, loc</span> <span style="font-family: 'courier new', courier, monospace;">FROM emp, dept</span> <span style="font-family: 'courier new', courier, monospace;">WHERE emp.deptno = dept.deptno</span> <span style="font-family: 'courier new', courier, monospace;">ORDER BY emp.ename; </span></pre> <p><strong>Enable the ORDS schema</strong><br /> Before creating any Web Services, the relevant database schema needs to be enabled for ORDS. This is done using the ‘ENABLE_SCHEMA’ procedure.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.enable_schema(p_enabled             =&gt; TRUE,</span> <span style="font-family: 'courier new', courier, monospace;">                     p_schema              =&gt; 'ORDSDEMO',</span> <span style="font-family: 'courier new', courier, monospace;">                     p_url_mapping_type    =&gt; 'BASE_PATH',</span> <span style="font-family: 'courier new', courier, monospace;">                     p_url_mapping_pattern =&gt; 'api',</span> <span style="font-family: 'courier new', courier, monospace;">                     p_auto_rest_auth      =&gt; FALSE);</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>As you can see from this example the schema pattern mapping can be different from the actual schema name. Here the database schema is called ORDSDEMO, but it will be referenced as API within the Web Service URLs.</p> <p><strong>Define Module</strong><br /> The first step is to define the resource module, which will be named ‘hr.v1’. A Web Service name should always include the version number; this will allow you to publish updated versions of a Web Service that follow the same URL patterns, whilst still maintaining older iterations for backward compatibility.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN          </span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_module(p_module_name    =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                     p_base_path      =&gt; 'hr/v1/',</span> <span style="font-family: 'courier new', courier, monospace;">                     p_items_per_page =&gt; 10,</span> <span style="font-family: 'courier new', courier, monospace;">                     p_status         =&gt; 'PUBLISHED',</span> <span style="font-family: 'courier new', courier, monospace;">                     p_comments       =&gt; 'Sample HR Module');             </span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>Oracle automatically paginates SQL queries returned in JSON format. The default is 25, this can be overridden (as we have done here), or alternately can be turned off by setting the value to zero.</p> <p>It is also a good idea to include a comment for the module, as this will assist in self-documenting your web services and are included in the ORDS_METADATA views</p> <p><strong>Define Template</strong><br /> Next, we need to create the templates for the module.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_template(p_module_name =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                       p_pattern     =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                       p_comments    =&gt; 'Departments Resource');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_template(p_module_name =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                       p_pattern     =&gt; 'employees',</span> <span style="font-family: 'courier new', courier, monospace;">                       p_comments    =&gt; 'Employees Resource');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>It is good practice to define a template for each resource. In this example, we are creating two templates, one for the departments and one for the employees. Again, a comment can be included if you wish, which will be included in the ORDS_METADATA views.</p> <p><strong>Define departments GET Handler</strong><br /> Next, the template handlers need to be defined, this is where we specify the SQL or PL/SQL the Web Service will execute when called. A template can have a handler for each supported HTTP method (GET, POST, PUT or DELETE).</p> <p>The first handler is for the GET method on the departments template.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_handler(p_module_name    =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_pattern        =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_method         =&gt; 'GET',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source_type    =&gt; ords.source_type_query,</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source         =&gt; 'SELECT deptno, dname, loc </span> <span style="font-family: 'courier new', courier, monospace;">                                           FROM dept ORDER BY deptno',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_items_per_page =&gt; 5,</span> <span style="font-family: 'courier new', courier, monospace;">                      p_comments       =&gt; 'List departments');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>The source type is set to ‘source_type_query’, which will return the results of the SQL query as a JSON formatted response. To return the response in CSV format you can use the type ‘source_type_csv_query’.</p> <p>The pagination size for this handler’s response has been overridden to five.</p> <p><strong>Define departments POST Handler</strong><br /> The second handler is for the POST method on the departments template. This will insert a new record into the DEPT table using the values we pass in for the number, name and location.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_handler(p_module_name =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_pattern     =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_method      =&gt; 'POST',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source_type =&gt; ords.source_type_plsql,</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source      =&gt; 'BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">                                          INSERT INTO dept</span> <span style="font-family: 'courier new', courier, monospace;">                                            (deptno, dname, loc)</span> <span style="font-family: 'courier new', courier, monospace;">                                          VALUES</span> <span style="font-family: 'courier new', courier, monospace;">                                            (:pn_dept_no, :pv_dept_name, :pv_location);</span> <span style="font-family: 'courier new', courier, monospace;">                                          :pn_status := 200;</span> <span style="font-family: 'courier new', courier, monospace;">                                          :pv_result := ''Department Added'';</span> <span style="font-family: 'courier new', courier, monospace;">                                        EXCEPTION</span> <span style="font-family: 'courier new', courier, monospace;">                                          WHEN OTHERS THEN</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pn_status := 400;</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pv_result := ''Unable to add department: '' </span> <span style="font-family: 'courier new', courier, monospace;">                                                          || SQLERRM;</span> <span style="font-family: 'courier new', courier, monospace;">                                        END;',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_comments    =&gt; 'Create a Department');</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>In this example, we are executing a simple block of PL/SQL to insert a row and return the status code and a result message. Any errors are captured using the basic exception handling.</p> <p>In a production quality Web Service, I would recommend calling a package from the handler. This would perform all of the appropriate validation and return the response values.</p> <p>The status variable will map to the HTTP response header Status code when the parameters are defined. Status 200 is the standard code returned when a request has been successful. Status 400 is typically returned when the request is bad, which in this case is likely to be caused by missing mandatory data or duplicate department numbers.</p> <p><strong>Define departments PUT Handler</strong><br /> The third handler is for the PUT method on the departments template. This will update an existing row in the DEPT table.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_handler(p_module_name =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_pattern     =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_method      =&gt; 'PUT',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source_type =&gt; ords.source_type_plsql,</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source      =&gt; 'BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">                                          UPDATE dept</span> <span style="font-family: 'courier new', courier, monospace;">                                          SET dname = :pv_dept_name, loc = :pv_location</span> <span style="font-family: 'courier new', courier, monospace;">                                          WHERE deptno = :pn_dept_no;</span> <span style="font-family: 'courier new', courier, monospace;">                                          IF SQL%ROWCOUNT = 0 THEN</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pn_status := 400;</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pv_result := ''Invalid department number'';</span> <span style="font-family: 'courier new', courier, monospace;">                                          ELSE</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pn_status := 200;</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pv_result := ''Department Updated'';</span> <span style="font-family: 'courier new', courier, monospace;">                                          END IF;</span> <span style="font-family: 'courier new', courier, monospace;">                                        EXCEPTION</span> <span style="font-family: 'courier new', courier, monospace;">                                          WHEN OTHERS THEN</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pn_status := 400;</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pv_result := ''Unable to update department:''</span> <span style="font-family: 'courier new', courier, monospace;">                                                          || SQLERRM;</span> <span style="font-family: 'courier new', courier, monospace;">                                        END;',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_comments    =&gt; 'Create a Department');</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>Again, in this example we are executing a simple update on the DEPT table and setting the values for the status and result parameters accordingly. The exception handler captures any errors and returns a 400 status along with the error message.</p> <p><strong>Define departments DELETE Handler</strong><br /> The forth handler is for the DELETE method on the departments template. This will delete an existing row from the DEPT table.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_handler(p_module_name =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_pattern     =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_method      =&gt; 'DELETE',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source_type =&gt; ords.source_type_plsql,</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source      =&gt; 'BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">                                          DELETE FROM dept</span> <span style="font-family: 'courier new', courier, monospace;">                                          WHERE deptno = :pn_dept_no;</span> <span style="font-family: 'courier new', courier, monospace;">                                          IF SQL%ROWCOUNT = 0 THEN</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pn_status := 400;</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pv_result := 'Invalid department number';</span> <span style="font-family: 'courier new', courier, monospace;">                                          ELSE</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pn_status := 200;</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pv_result := 'Department Deleted';</span> <span style="font-family: 'courier new', courier, monospace;">                                          END IF;</span> <span style="font-family: 'courier new', courier, monospace;">                                        EXCEPTION</span> <span style="font-family: 'courier new', courier, monospace;">                                          WHEN OTHERS THEN</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pn_status := 400;</span> <span style="font-family: 'courier new', courier, monospace;">                                            :pv_result := 'Unable to delete department: ' </span> <span style="font-family: 'courier new', courier, monospace;">                                                          || SQLERRM;  </span> <span style="font-family: 'courier new', courier, monospace;">                                        END;',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_comments    =&gt; 'Delete a Department');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>Again, the handler executes a simple PL/SQL block to delete the specified department, returning a status of 200 if successful and 400 if unsuccessful.</p> <p><strong>Define employees GET Handler</strong><br /> The last handler is for the employee report. For this one we will add an optional parameter to restrict the results to a single department.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_handler(p_module_name =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_pattern     =&gt; 'employees',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_method      =&gt; 'GET',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source_type =&gt; ords.source_type_query,</span> <span style="font-family: 'courier new', courier, monospace;">                      p_source      =&gt; 'SELECT d.dname, e.ename, e.job,</span> <span style="font-family: 'courier new', courier, monospace;">                                               e.empno, e.hiredate, d.loc</span> <span style="font-family: 'courier new', courier, monospace;">                                        FROM emp e, dept d</span> <span style="font-family: 'courier new', courier, monospace;">                                        WHERE e.deptno = d.deptno</span> <span style="font-family: 'courier new', courier, monospace;">                                        AND (:pn_deptno IS NULL OR d.deptno = :pn_deptno)</span> <span style="font-family: 'courier new', courier, monospace;">                                        ORDER BY d.dname, e.ename',</span> <span style="font-family: 'courier new', courier, monospace;">                      p_comments    =&gt; 'List employees');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END; </span></pre> <p>The response text will be paginated into batches of ten items, as this was the value set against the template.</p> <p><strong>Define Parameters</strong><br /> When including parameters within in a handler they must be defined. Each parameter has an external name, which is used when calling the Web Service and an internal bind variable name used by the source SQL.</p> <p>The access method defines if the Parameter is for input, output or both and can be IN, OUT or INOUT.</p> <p>The source type identifies if the parameter originates in the URI template or the HTTP Header, and can be URI, RESPONSE or HEADER. All of the IN parameters for the department Web Services are passed in via the HTTP header, while the IN parameter for the employees Web Service is passed in via the URI.</p> <p>The Parameter type can be STRING, INT, DOUBLE, BOOLEAN, LONG or TIMESTAMP.</p> <p>The following scripts will define all of the parameters for each handler using them.</p> <p><strong>Departments POST</strong></p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'POST',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'department_number',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pn_dept_no',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'INT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Department Number');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'POST',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'department_name',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pv_dept_name',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'STRING',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Department Name');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'POST',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'location_name',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pv_location',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'STRING',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Location Name');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'POST',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'X-APEX-STATUS-CODE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pn_status',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'INT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'OUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Response status');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'POST',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'result_message',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pv_result',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'RESPONSE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'STRING',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'OUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Result message');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>The following scripts will define all of the parameters for each handler using them.</p> <p>This handler has three IN parameters, which are passed in using the HTTP header. The status code is mapped to the HTTP header bind variable X-APEX-STATUS-CODE, and the result message is passed back into the Response body.</p> <p><strong>Departments PUT</strong></p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'PUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'department_number',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pn_dept_no',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'INT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Department Number');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'PUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'department_name',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pv_dept_name',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'STRING',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Department Name');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'PUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'location_name',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pv_location',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'STRING',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Location Name');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'PUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'X-APEX-STATUS-CODE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pn_status',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'INT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'OUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Response status');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'PUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'result_message',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pv_result',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'RESPONSE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'STRING',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'OUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Result message');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>This handler uses the same IN AND out parameters as the POST method.</p> <p><strong>Department DELETE</strong></p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'DELETE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'department_number',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pn_dept_no',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'INT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Department Number');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'DELETE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'X-APEX-STATUS-CODE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pn_status',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'HEADER',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'INT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'OUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Response status');</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'departments',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'DELETE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'result_message',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pv_result',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'RESPONSE',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'STRING',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'OUT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Result message');</span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p>The handler for deleting a department only requires one IN parameter for the department number, but still returns the status code and the result message in the response body.</p> <p><strong>Employee GET</strong><br /> The GET method handler for the listing the employees uses a single parameter for the department number, which is passed in via the URI.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">BEGIN</span> <span style="font-family: 'courier new', courier, monospace;">  ords.define_parameter(p_module_name        =&gt; 'hr.v1',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_pattern            =&gt; 'employees',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_method             =&gt; 'GET',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_name               =&gt; 'department_number',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_bind_variable_name =&gt; 'pn_deptno',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_source_type        =&gt; 'URI',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_param_type         =&gt; 'INT',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_access_method      =&gt; 'IN',</span> <span style="font-family: 'courier new', courier, monospace;">                        p_comments           =&gt; 'Restrict employees by department');  </span> <span style="font-family: 'courier new', courier, monospace;">  COMMIT;</span> <span style="font-family: 'courier new', courier, monospace;">END;</span></pre> <p><strong>Reviewing the Web Services</strong><br /> Now we have created our first set of Web Services we can use the ORDS_METADATA views to query them. The following SQL query will return all of the Web Services defined for the ORDSDEMO schema.</p> <pre style="padding-left: 60px;"><span style="font-family: 'courier new', courier, monospace;">SELECT uom.comments module_desc,</span> <span style="font-family: 'courier new', courier, monospace;">       uot.comments template_desc,</span> <span style="font-family: 'courier new', courier, monospace;">       uoh.comments handler_desc,</span> <span style="font-family: 'courier new', courier, monospace;">       uoh.method,</span> <span style="font-family: 'courier new', courier, monospace;">       uoh.source_type,</span> <span style="font-family: 'courier new', courier, monospace;">       '<em><strong><span style="color: #ff0000;">&lt;host_ref&gt;</span></strong></em>' || uos.pattern || uom.uri_prefix || uot.uri_template url,</span> <span style="font-family: 'courier new', courier, monospace;">       (SELECT COUNT(id)</span> <span style="font-family: 'courier new', courier, monospace;">        FROM user_ords_parameters</span> <span style="font-family: 'courier new', courier, monospace;">        WHERE handler_id = uoh.id) parameter_count</span> <span style="font-family: 'courier new', courier, monospace;">FROM user_ords_schemas   uos,</span> <span style="font-family: 'courier new', courier, monospace;">     user_ords_modules   uom,</span> <span style="font-family: 'courier new', courier, monospace;">     user_ords_templates uot,</span> <span style="font-family: 'courier new', courier, monospace;">     user_ords_handlers  uoh</span> <span style="font-family: 'courier new', courier, monospace;">WHERE uot.module_id = uom.id</span> <span style="font-family: 'courier new', courier, monospace;">AND uom.schema_id = uos.id</span> <span style="font-family: 'courier new', courier, monospace;">AND uoh.template_id = uot.id</span> <span style="font-family: 'courier new', courier, monospace;">AND uos.parsing_schema = 'ORDSDEMO'</span> <span style="font-family: 'courier new', courier, monospace;">ORDER BY uom.comments, uot.uri_template</span></pre> <p>The host reference must be set to the relevant name and port for your ORDS configuration. I have created the Web Services in a local copy of Oracle XE running on port 8081 with ORDS 3.11. Therefore, the prefix for my Web Services is <strong>http://localhost:8081/ords/</strong>.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/service-list.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6166" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/service-list.jpg" alt="" width="971" height="140" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/service-list.jpg 971w, http://www.explorer.uk.com/wp-content/uploads/2017/10/service-list-300x43.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/10/service-list-768x111.jpg 768w" sizes="(max-width: 971px) 100vw, 971px" /></a></p> <p><strong>Testing Web Services</strong><br /> There are several ways we can test our web services.</p> <ul> <li>Browser &#8211; Mostly limited to testing GET methods</li> <li>CURL &#8211; Command line tool</li> <li>REST &#8211; Client Best and simplest solution, multiple clients to choose from.</li> </ul> <p><strong>Browser<br /> </strong>This is one of the simplest methods, but is mostly limited to testing GET methods that do not use HTTP headers or authentication.</p> <p>To test the departments GET method handler we need to paste <strong>http://localhost:8081/ords/api/hr/v1/departments</strong> into the browser and press enter. The browser defaults to calling the GET method even though the URL for the POST, PUT and DELETE are the same.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/departments-GET-response-1.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6167" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/departments-GET-response-1.jpg" alt="" width="598" height="734" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/departments-GET-response-1.jpg 598w, http://www.explorer.uk.com/wp-content/uploads/2017/10/departments-GET-response-1-244x300.jpg 244w" sizes="(max-width: 598px) 100vw, 598px" /></a></p> <p>I recommend using a JSON viewer extension when using a browser to test so that the response is formatted. I have used Chrome with the JSONView extension.</p> <p>As you can see the first five departments have been returned as the items per page value was set to five. Navigation links have be automatically added so you can page through the response. If you click on the next URL link, the Web Service will be called again with the addition of the ‘page’ parameter.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/departments-GET-response-2.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6168" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/departments-GET-response-2.jpg" alt="" width="578" height="372" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/departments-GET-response-2.jpg 578w, http://www.explorer.uk.com/wp-content/uploads/2017/10/departments-GET-response-2-300x193.jpg 300w" sizes="(max-width: 578px) 100vw, 578px" /></a>The sixth and final department is returned along with the relevant navigation links.</p> <p>The employees Web Service has the option to include a URI parameter for the department number. To obtain the list of employees for a department we need to add the parameter and its value on to the end of the URL as follows.</p> <p><strong>http://localhost:8081/ords/api/hr/v1/employees?department_number=10</strong></p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/employees-GET-response.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6169" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/employees-GET-response.jpg" alt="" width="702" height="665" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/employees-GET-response.jpg 702w, http://www.explorer.uk.com/wp-content/uploads/2017/10/employees-GET-response-300x284.jpg 300w" sizes="(max-width: 702px) 100vw, 702px" /></a></p> <p>All the employees allocated to department 10 are returned. As the number returned is less than the defined number of items per page there is no next link, however there is still a first link.</p> <p><strong>CURL</strong><br /> Another option is to use the command line tool CURL, which you can download <a href="https://curl.haxx.se/" target="_blank" rel="noopener">here</a>. Once installed, use the following command to call the departments GET method Web Service.</p> <p><strong>curl -X GET http://localhost:8081/ords/api/hr/v1/departments</strong></p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/curl.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6170" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/curl.jpg" alt="" width="987" height="115" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/curl.jpg 987w, http://www.explorer.uk.com/wp-content/uploads/2017/10/curl-300x35.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/10/curl-768x89.jpg 768w" sizes="(max-width: 987px) 100vw, 987px" /></a></p> <p>The request is submitted and the first five department are returned along with the relevant navigation links.</p> <p><strong>REST Client</strong><br /> In my opinion, using a REST client such as Postman is the best option. Postman is simple to use, allows you to save your requests in custom collections, and supports authentication methods such as OAuth2. You can download Postman from <a href="https://www.getpostman.com/" target="_blank" rel="noopener">https://www.getpostman.com/</a></p> <p><strong>Calling the departments GET handler with Postman.</strong><br /> Open Postman and follow these steps to create a new request entry for the departments GET method request.</p> <ol> <li>Click on the + to create a new request entry and ensure the request method is set to GET.</li> <li>Enter the request URL <strong>http://localhost:8081/ords/api/hr/v1/departments </strong></li> <li>Press the Save button.</li> </ol> <ol style="list-style-type: lower-alpha;"> <li>Enter ‘List Departments’ for the Request Name.</li> <li>Press the ‘Create Collection’ link, enter ‘ORDS Demo’ for the name and press the tick icon.</li> <li>Press the ‘Save to ORDS Demo’ button.</li> </ol> <p>You will now have a new Postman collection called ‘ORDS Demo’ containing a single GET request called ‘List Departments’. Ensure the request is selected and press the send button to submit the request.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman1.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6171" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman1.jpg" alt="" width="1193" height="871" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman1.jpg 1193w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman1-300x219.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman1-768x561.jpg 768w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman1-1024x748.jpg 1024w" sizes="(max-width: 1193px) 100vw, 1193px" /></a></p> <p>The request is submitted and the first five departments are returned along with the relevant navigation links. Postman recognises that the response is in JSON and formats it automatically.</p> <p>You can also see that a status code of 200 OK has been returned, which tells us that the request was successful.</p> <p>Now change the URL to <strong>http://localhost:8081/ords/api/hr/v1/departmentsX</strong> and press send. As the URL is invalid, we get a 404 Not Found response.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman2.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6173" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman2.jpg" alt="" width="938" height="254" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman2.jpg 938w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman2-300x81.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman2-768x208.jpg 768w" sizes="(max-width: 938px) 100vw, 938px" /></a><strong>Calling the departments POST handler with Postman.</strong></p> <ol> <li>Click on the + to create a new request entry and ensure the request method is set to POST.</li> <li>Enter the request URL <strong>http://localhost:8081/ords/api/hr/v1/departments </strong></li> <li>Click on the Headers tab and add the following keys</li> </ol> <table class=" alignleft" style="height: 160px;" width="100%"> <tbody> <tr style="height: 27px;"> <td style="width: 332px; height: 27px;"><strong>Key</strong></td> <td style="width: 332px; height: 27px;"><strong>Value</strong></td> </tr> <tr style="height: 27px;"> <td style="width: 332px; height: 27px;">department_number</td> <td style="width: 332px; height: 27px;">70</td> </tr> <tr style="height: 27px;"> <td style="width: 332px; height: 27px;">department_name</td> <td style="width: 332px; height: 27px;">TECH SERVICES</td> </tr> <tr style="height: 27.333px;"> <td style="width: 332px; height: 27.333px;">location_name</td> <td style="width: 332px; height: 27.333px;">NEW YORK</td> </tr> </tbody> </table> <p style="padding-left: 30px;">4. Press the Save button.</p> <ol style="list-style-type: lower-alpha;"> <li>Enter ‘Add Department’ for the Request Name.</li> <li>Select the collection ‘ORDS Demo’.</li> <li>Press the ‘Save to ORDS Demo’ button.</li> </ol> <p>Now press the Send button to call the request and add a new department. The request will be successful and return a status code of 200 OK, and a JSON response body containing the result message parameter, which will contain the value ‘Department Added’.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman3.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6175" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman3.jpg" alt="" width="942" height="431" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman3.jpg 942w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman3-300x137.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman3-768x351.jpg 768w" sizes="(max-width: 942px) 100vw, 942px" /></a></p> <p><strong>Calling the departments PUT handler with Postman.</strong></p> <ol> <li>Click on the + to create a new request entry and ensure the request method is set to PUT.</li> <li>Enter the request URL http://localhost:8081/ords/api/hr/v1/departments</li> <li>Click on the Headers tab and add the following keys</li> </ol> <table class=" alignleft" style="height: 160px;" width="100%"> <tbody> <tr> <td style="width: 305.5px;"><strong>Key</strong></td> <td style="width: 305.5px;"><strong>Value</strong></td> </tr> <tr> <td style="width: 305.5px;">department_number</td> <td style="width: 305.5px;">70</td> </tr> <tr> <td style="width: 305.5px;">department_name</td> <td style="width: 305.5px;">TECHNICAL SERVICES</td> </tr> <tr> <td style="width: 305.5px;">location_name</td> <td style="width: 305.5px;">BOSTON</td> </tr> </tbody> </table> <p style="padding-left: 30px;">4. Press the Save button.</p> <ol> <li>Enter ‘Update Department’ for the Request Name.</li> <li>Select the collection ‘ORDS Demo’.</li> <li>Press the ‘Save to ORDS Demo’ button.</li> </ol> <p>&nbsp;</p> <p>Now press the Send button to call the request and update department 70. The request will be successful and return a status code of 200 OK, and a JSON response body containing the result message parameter, which will contain the value ‘Department Updated.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman4.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6174" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman4.jpg" alt="" width="944" height="471" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman4.jpg 944w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman4-300x150.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman4-768x383.jpg 768w" sizes="(max-width: 944px) 100vw, 944px" /></a></p> <p>If you now resend the List Departments GET request, you will see there are now seven departments, with 70 being TECHNICAL SETVICES in BOSTON.</p> <p><strong>Calling the departments DELETE handler with Postman.</strong></p> <ol> <li>Click on the + to create a new request entry and ensure the request method is set to DELETE.</li> <li>Enter the request URL <strong>http://localhost:8081/ords/api/hr/v1/departments</strong></li> <li>Click on the Headers tab and add the following keys</li> </ol> <table class=" alignleft" style="height: 80px;" width="100%"> <tbody> <tr> <td style="width: 173.5px;"><strong>Key</strong></td> <td style="width: 173.5px;"><strong>Value</strong></td> </tr> <tr> <td style="width: 173.5px;">department_number</td> <td style="width: 173.5px;">70</td> </tr> </tbody> </table> <p style="padding-left: 30px;">4. Press the Save button.</p> <ol style="list-style-type: lower-alpha;"> <li>Enter ‘Delete Department’ for the Request Name.</li> <li>Select the collection ‘ORDS Demo’.</li> <li>Press the ‘Save to ORDS Demo’ button.</li> </ol> <p>Now press the Send button to call the request and delete department 70. The request will be successful and return a status code of 200 OK, and a JSON response body containing the result message parameter, which will contain the value ‘Department Deleted’.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman5.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6176" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman5.jpg" alt="" width="942" height="352" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman5.jpg 942w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman5-300x112.jpg 300w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman5-768x287.jpg 768w" sizes="(max-width: 942px) 100vw, 942px" /></a></p> <p>Calling the employees GET handler with Postman.</p> <ol> <li>Click on the + to create a new request entry and ensure the request method is set to GET.</li> <li>Enter the request URL <strong>http://localhost:8081/ords/api/hr/v1/employees ?department_number=10 </strong></li> <li>Press the Save button.</li> </ol> <ol style="list-style-type: lower-alpha;"> <li>Enter ‘List Employees’ for the Request Name.</li> <li>Select the collection ‘ORDS Demo’.</li> <li>Press the ‘Save to ORDS Demo’ button.</li> </ol> <p>Now press the Send button to call the request and return all of the employees allocated to department 10.</p> <p><a href="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman6.jpg" rel="lightbox[6143]"><img class="aligncenter size-full wp-image-6177" src="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman6.jpg" alt="" width="750" height="739" srcset="http://www.explorer.uk.com/wp-content/uploads/2017/10/postman6.jpg 750w, http://www.explorer.uk.com/wp-content/uploads/2017/10/postman6-300x296.jpg 300w" sizes="(max-width: 750px) 100vw, 750px" /></a></p> <p>You will now have a Postman collection containing five requests, which you can rerun at any time.</p> <p>&nbsp;</p> <p>The post <a rel="nofollow" href="http://www.explorer.uk.com/web-services-part-1/">ORDS,OAuth2 &#038; Web Services in APEX &#8211; Part 1</a> appeared first on <a rel="nofollow" href="http://www.explorer.uk.com">Explorer | Award Winning UK Oracle Partner</a>.</p> admin http://www.explorer.uk.com/?p=6143 Mon Oct 30 2017 06:08:26 GMT-0400 (EDT) We -as a country- are no longer to be trusted? http://vanbortel.blogspot.com/2017/10/we-as-country-are-no-longer-to-be.html Who Do You Trust? As legislation changed, Mozilla filed a bug with potential serious consequences. Check out bug 1408647. Removing the root certificate as trusted authority makes it look asif any certificate, issued by any of the Dutch PKI organizations, is potential unsafe. Which is correct, to a point, as the law allows the use of false keys by the Ducth autorities. Creepy. That makes the Frank tag:blogger.com,1999:blog-12361937.post-2569102474595038256 Mon Oct 30 2017 04:15:00 GMT-0400 (EDT) Reset Authorization Cache http://www.talkapex.com/2017/10/reset-authorization-cache/ <p>APEX Authorization Schemes determine if a user is allowed to access APEX components (such as page, item, region, etc). <em>Note: It’s common to confuse them with Authentication Schemes which determine if a user is allowed to login to the the application</em>.</p><p>If an Authorization scheme is applied to many components within an application it has the potential to be run many times. To help minimize the performance impacts an Authorization Scheme may have, they can be cached using the following options:</p><ul><li>Once per session</li><li>Once per page view</li><li>Once per component</li><li>Always (No Caching)</li></ul><p>Suppose an Authorization Scheme is configured to <code>Once per session</code> and this Authorization Scheme is applied to a region on Page 1. The first time the region is to be displayed, APEX will run the Authorization Scheme to determine if it can run/display the region. The authorization result will then be cached so all other components that reference the same Authorization Scheme will use the cached result.</p><p>What happens if something changes with the system that requires the Authorization to be re-evaluated? Thankfully there’s an API for that: <a href="https://docs.oracle.com/database/apex-5.1/doc.51/e64915/RESET_CACHE-Procedure.htm#AEAPI29604" target="_blank" rel="external"><code>apex_authorization.reset_cache</code></a>.</p><p>I recently encountered the need to reset the Authorization cache on an application where users had multiple roles but could only “play” one role at a time. Example roles include Admin, Manager, User. Each time a user changed their role I needed to reset all the Authorization schemes as the role they played significantly affected the access they had to the system.</p> Martin Giffy D'Souza http://www.talkapex.com/2017/10/reset-authorization-cache/ Mon Oct 30 2017 00:25:48 GMT-0400 (EDT) Oracle R Enterprise Server Configuration http://jaffardba.blogspot.com/2017/10/oracle-r-enterprise-server-configuration.html <div dir="ltr" style="text-align: left;" trbidi="on"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style><![endif]--><br /><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="375"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Mention"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hashtag"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Unresolved Mention"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> <br /><div class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 2;"><b><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 18.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Oracle R Enterprise Server Overview</span></b></div><div class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; mso-outline-level: 2;"><br /></div><div class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Oracle R Enterprise includes several components on the server. Together these components enable an Oracle R Enterprise client to interact with Oracle R Enterprise Server.</span></div><div class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">The server-side components of Oracle R Enterprise are:&nbsp;</span></div><ul type="disc"><li class="MsoNormal" style="line-height: normal; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .5in;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Oracle Database Enterprise Edition (64bit)</span></li><li class="MsoNormal" style="line-height: normal; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .5in;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Oracle R Distribution or open source R</span></li><li class="MsoNormal" style="line-height: normal; mso-list: l0 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .5in;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Oracle R Enterprise Server</span></li></ul><div class="MsoNormal" style="line-height: normal; margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Oracle R Enterprise Server consists of the following:&nbsp;</span></div><ul type="disc"><ul type="circle"><li class="MsoNormal" style="line-height: normal; mso-list: l0 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.0in;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">The </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">rqsys</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;"> schema</span></li><li class="MsoNormal" style="line-height: normal; mso-list: l0 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.0in;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Metadata and executable code in </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">sys</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;"></span></li><li class="MsoNormal" style="line-height: normal; mso-list: l0 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.0in;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Oracle R Enterprise Server libraries in </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">$ORACLE_HOME/lib</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;"> (Linux and UNIX) or </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">%ORACLE_HOME%\bin</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;"> (Windows)</span></li><li class="MsoNormal" style="line-height: normal; mso-list: l0 level2 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.0in;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">Oracle R Enterprise R packages in </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">$ORACLE_HOME/R/library</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;"> (</span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">%ORACLE_HOME%\R\library</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;"> on Windows)</span></li></ul></ul><h2>Oracle R Enterprise Server Requirements</h2>Before installing Oracle R Enterprise Server, verify your system environment, and ensure that your user ID has the proper permissions.<br /><br /> <div class="MsoNoSpacing">Oracle R Enterprise runs on 64-bit platforms only.</div><div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l2 level1 lfo2; text-indent: -.25in;"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span>Linux x86-64</div><div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l2 level1 lfo2; text-indent: -.25in;"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span>Oracle Solaris</div><div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l2 level1 lfo2; text-indent: -.25in;"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span>IBM AIX</div><div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l2 level1 lfo2; text-indent: -.25in;"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span>IBM AIX</div><div class="MsoNoSpacing" style="margin-left: .5in;"><br /></div><div class="MsoNoSpacing">Oracle Database must be installed and configured as described</div><div class="MsoNoSpacing" style="margin-left: .5in; mso-list: l1 level1 lfo3; text-indent: -.25in;"><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7.0pt &quot;Times New Roman&quot;;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span>Oracle R Enterprise requires the 64-bit version of Oracle Database Enterprise Edition.</div><div class="MsoNoSpacing"><br /></div><h2>Installing Oracle R Enterprise Server</h2><div class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">verify if </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">ORACLE_HOME</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">, </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">ORACLE_SID</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">, </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">R_HOME</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">, </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">PATH</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">, and </span><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">LD_LIBRARY_PATH</span><span style="font-family: &quot;Times New Roman&quot;,serif; font-size: 12.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;"> environment variables are properly set. For example, you could specify values like the following in a bashrc file:</span></div><div class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br /></div><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">export ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/dbhome_1</span></div><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">export ORACLE_SID=ORCL</span></div><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">export R_HOME=/usr/lib64/R</span></div><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">export PATH=$PATH:$R_HOME/bin:$ORACLE_HOME/bin</span></div><div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-fareast-font-family: &quot;Times New Roman&quot;;">export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$R_HOME/lib</span></div><div class="MsoNoSpacing"><br /></div><h2>Download Oracle R Enterprise Server</h2>Go to the Oracle R Enterprise home page on the Oracle Technology Network:.<br /> <a href="http://www.oracle.com/technetwork/database/options/advanced-analytics/r-enterprise/" target="_blank">http://www.oracle.com/technetwork/database/options/advanced-analytics/r-enterprise/<span style="font-family: &quot;Courier New&quot;; font-size: 10.0pt; mso-no-proof: yes; text-decoration: none; text-underline: none;"><span style="mso-ignore: vglayout;"><img alt="Opens a new window" border="0" height="16" src="file:///C:/Users/SJHUSS~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png" width="23" /></span></span></a><br /> Select <span class="bold">Oracle R Enterprise Downloads</span>. On the Downloads page, select Oracle R Enterprise Server and the Supporting Packages for Linux. The following files are downloaded for Oracle R Enterprise 1.4.1.<br /><br /> <pre>ore-server-linux-x86-64-1.4.1.zip</pre><pre>ore-supporting-linux-x86-64-1.4.1.zip</pre><div class="MsoNoSpacing"><br /></div><span style="mso-spacerun: yes;"></span>Login as root, and copy the installers for Oracle R Enterprise Server and the supporting packages across nodes. For example:<br /><br /> <pre>$ dcli -g nodes -l oracle mkdir -p /home/oracle/ORE</pre><pre>$ dcli -g nodes -l oracle -f ore-server-linux-x86-64-1.4.1.zip -d </pre><pre><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/home/oracle/ORE/ore-server-linux-x86-64-1.4.1.zip</pre><pre>$ dcli -g nodes -l oracle -f ore-supporting-linux-x86-64-1.4.1.zip -d </pre><pre><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/home/oracle/ORE/ore-supporting-linux-x86-64-1.4.1.zip</pre><div class="MsoNoSpacing"><br /></div><span style="mso-spacerun: yes;"></span>Unzip the supporting packages on each node:<br /> <pre>$ dcli -t -g nodes -l oracle unzip<span style="mso-spacerun: yes;">&nbsp;&nbsp; </span></pre><pre><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/home/oracle/ORE/ore-supporting-linux-x86-64-1.4.1.zip -d </pre><pre><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>/<span class="italic">my_destination_directory</span>/</pre><div class="MsoNoSpacing"><br /></div><u><b>&nbsp;Install Oracle R Enterprise server components:</b></u><br /> <pre>$ dcli -t -g nodes -l oracle "cd /<span class="italic">my_destination_directory</span>; ./server.sh -y</pre><pre><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>--admin --sys <span class="italic">syspassword</span> --perm <span class="italic">permtablespace</span></pre><pre><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>--temp <span class="italic">temptablespace</span> --rqsys <span class="italic">rqsyspassword</span></pre><pre><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>--user-perm <span class="italic">usertablespace</span> --user-temp <span class="italic">usertemptablespace</span></pre><pre><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>--pass <span class="italic">rquserpassword</span> --user RQUSER"</pre><div class="MsoNoSpacing"><br /></div><br /><div class="MsoNoSpacing"><u><b>Installing Oracle R Enterprise Server interactively:</b></u></div><div class="MsoNoSpacing">&nbsp;</div><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">$ ./server.sh -i</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Oracle R Enterprise 1.4.1 Server.</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Copyright (c) 2012, 2014 Oracle and/or its affiliates. All rights reserved.</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking platform .................. Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking R ......................... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking R libraries ............... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking ORACLE_HOME ............... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking ORACLE_SID ................ Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking sqlplus ................... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking ORACLE instance ........... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking CDB/PDB ................... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Checking ORE ....................... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Choosing RQSYS tablespaces</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="mso-spacerun: yes;">&nbsp; </span>PERMANENT tablespace to use for RQSYS [list]: DATA</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="mso-spacerun: yes;">&nbsp; </span>TEMPORARY tablespace to use for RQSYS [list]: TEMP1</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Choosing RQSYS password</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="mso-spacerun: yes;">&nbsp; </span>Password to use for RQSYS:</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Choosing ORE user</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span style="mso-spacerun: yes;">&nbsp; </span>ORE user to use [list]:</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">ORE user to use [list]: OREUSER1</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Current configuration</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>R Version ........................ Oracle Distribution of R version 3.1.1<span>&nbsp; </span>(--)</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>R_HOME ........................... /usr/lib64/R</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>R_LIBS_USER ...................... /u01/app/oracle/product/12.1.0.2/dbhome_1/R/library</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>ORACLE_HOME ...................... /u01/app/oracle/product/12.1.0.2/dbhome_1</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>ORACLE_SID ....................... OFSAPRD1</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><br /></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>Existing R Version ............... None</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>Existing R_HOME .................. None</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>Existing ORE data ................ None</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>Existing ORE code ................ None</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>Existing ORE libraries ........... None</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><br /></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>RQSYS PERMANENT tablespace ....... DATA</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>RQSYS TEMPORARY tablespace ....... TEMP1</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><br /></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>ORE user type .................... Existing</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>ORE user name .................... OREUSER1</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>ORE user PERMANENT tablespace .... DATA</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span></span></span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>Grant RQADMIN role ............... No</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><br /></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"><span>&nbsp; </span>Operation ........................ Install/Upgrade/Setup</span></span></div><span style="font-size: x-small;"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span></span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Proceed? [yes] y</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Removing R libraries ............... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Installing R libraries ............. Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Installing ORE libraries ........... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Installing RQSYS data .............. Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Configuring ORE .................... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Installing RQSYS code .............. Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Installing ORE packages ............ Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Creating ORE script ................ Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Installing migration scripts ....... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Installing supporting packages ..... Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Granting ORE privileges ............ Pass</span></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><br /></div><span style="font-family: &quot;Courier New&quot;,Courier,monospace;"> </span><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">Done</span></div><div class="MsoNoSpacing"><br /></div><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">References:</span></div><div class="MsoNoSpacing"><br /></div><div class="MsoNoSpacing"><a href="https://docs.oracle.com/cd/E83411_01/OREAD/using-dcli-to-install-ORE-on-exadata.htm#OREAD315"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">https://docs.oracle.com/cd/E83411_01/OREAD/using-dcli-to-install-ORE-on-exadata.htm#OREAD315</span></a></div><div class="MsoNoSpacing"><span style="font-family: &quot;Courier New&quot;,Courier,monospace;">&nbsp;</span></div><br /><span style="font-family: &quot;Calibri&quot;,sans-serif; font-size: 11.0pt; line-height: 107%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &quot;Times New Roman&quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"></span><br /></div> The Human Fly tag:blogger.com,1999:blog-19771507.post-8751301574641733281 Fri Oct 27 2017 12:17:00 GMT-0400 (EDT) The best alternative to Universal Theme http://vmorneau.me/material-apex-v0-12-0/ <div class="kg-card-markdown"><img src="http://vmorneau.me/content/images/2017/10/home.jpg" alt="The best alternative to Universal Theme"><p>Material APEX just got updated earlier this week to v0.12.0. If you haven't heard about it, it is a complete alternative solution to Universal Theme. And it is free!</p> <p>Material APEX has been around for more than two years now and it's being used widely accross the APEX community.</p> <h3 id="hereswhatyoucanexpect">Here's what you can expect:</h3> <ul> <li>35+ templates</li> <li>100+ template options</li> <li>60+ theme roller attributes</li> <li>9 dedicated plugins</li> <li>Supports all native APEX components</li> <li>Responsive and highly customizable</li> </ul> <p>Have a look at the demo application here: <a href="http://materialapex.com/">http://materialapex.com/</a><br> And the source code here: <a href="https://github.com/vincentmorneau/material-apex">https://github.com/vincentmorneau/material-apex</a></p> <h3 id="roadto100">Road to 1.0.0</h3> <ul> <li>Continue working with contributors to eliminate bugs</li> <li>Refactor some parts of the CSS and JS for a cleaner codebase</li> <li>Create and maintain different theme styles and publish them to <a href="http://apex-theme-styles.com">apex-theme-styles.com</a></li> <li>Add more complex examples <ul> <li>Home page</li> <li>Profile page</li> <li>Blog post</li> <li>More.</li> </ul> </li> </ul> <h3 id="relatedposts">Related posts</h3> <p><a href="http://vmorneau.me/status-of-material-apex-5-months-in/">Part 1: Status &amp; Direction</a><br> <a href="http://vmorneau.me/material-apex-part-2-the-grid/">Part 2: The Grid</a><br> Part 3: Colors &amp; Styling <em>(coming)</em><br> Part 4: Migrating your existing application <em>(coming)</em></p> <hr> <p>Want more features in the next release? Post your ideas on Github and we'll get it in.</p> </div> Vincent Morneau 59f3396cbe76f57a06cbc031 Fri Oct 27 2017 10:05:05 GMT-0400 (EDT) Apex 5.1: Interactive Grids – How to customize toolbar buttons https://svenweller.wordpress.com/2017/10/27/apex-5-1-interactive-grids-how-to-customize-toolbar-buttons/ <h2>Introduction</h2> <p>I wanted to slightly change the toolbar buttons in some Interactive Grid. Since in my application all buttons have an icon, I wanted to use the same icon also for IG buttons, especially for actions like &#8220;Save&#8221; or &#8220;Add row&#8221;. </p> <p>What helped me were John Snyders excellent postings &#8220;How to hack Apex Interactive Grids&#8221;. In this specific case I mostly referred to the <a href="http://hardlikesoftware.com/weblog/2017/01/24/how-to-hack-apex-interactive-grid-part-2/" target="_blank">second part</a> of the series. </p> <p>But there were some things that aren&#8217;t explained and I needed to figure them out myself. </p> <h2>Toolbars &#8211; before and after</h2> <p>The users were used how the buttons looked like in the previous Tabular Form. </p> <p><strong>Tabular Form</strong><br /> <img data-attachment-id="7453" data-permalink="https://svenweller.wordpress.com/2017/10/27/apex-5-1-interactive-grids-how-to-customize-toolbar-buttons/toolbar_tab_form/" data-orig-file="https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png?w=809" data-orig-size="892,101" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="toolbar_tab_form" data-image-description="" data-medium-file="https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png?w=809?w=300" data-large-file="https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png?w=809?w=809" src="https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png?w=809" alt="toolbar_tab_form" class="alignnone size-full wp-image-7453" srcset="https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png?w=809 809w, https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png?w=150 150w, https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png?w=300 300w, https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png?w=768 768w, https://svenweller.files.wordpress.com/2017/09/toolbar_tab_form.png 892w" sizes="(max-width: 809px) 100vw, 809px" /></p> <p>There are 4 buttons </p> <ul> <li>Cancel: go back to previous page</li> <li>Delete: to delete the marked rows</li> <li>Save: To save the current changes</li> <li>Add Row: to insert a new record</li> </ul> <p>The buttons were using the template type &#8220;Primary&#8221;, thats why they are blue.</p> <p><strong>Default Interactive Grid</strong><br /> <img data-attachment-id="7542" data-permalink="https://svenweller.wordpress.com/2017/10/27/apex-5-1-interactive-grids-how-to-customize-toolbar-buttons/ig_modify_toolbar_default_ig/" data-orig-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=809" data-orig-size="1096,126" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="IG_modify_toolbar_default_IG" data-image-description="" data-medium-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=809?w=300" data-large-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=809?w=809" src="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=809" alt="IG_modify_toolbar_default_IG" class="alignnone size-full wp-image-7542" srcset="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=809 809w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=150 150w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=300 300w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=768 768w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png?w=1024 1024w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_default_ig1.png 1096w" sizes="(max-width: 809px) 100vw, 809px" /></p> <p>The &#8220;Save&#8221; button was already added declarativly, by setting the property in the <code>Attributes/toolbar</code> section of the IG.</p> <p>The &#8220;Add Row&#8221; button is created as soon as we allow to Edit.<br /> <code>Attributes/Edit/Allowed Operations/Add Row</code></p> <p>As we can see, the &#8220;Cancel&#8221; button and the &#8220;Delete&#8221; button are missing. But more importantly, the buttons have no icons and are missing the color. </p> <h3>Customize Interactive Grid</h3> <p>Here is how to change that. I&#8217;m not showing how to add the cancel button. This can easily be positioned somehwere else, like in the region header. But the Delete button needs to be added. And the visualization of the buttons should match with the rest of the application.</p> <p>First give the grid a static ID. Here I use &#8220;IG_MYGRID&#8221;. </p> <h3>Adding the delete button</h3> <p>In Apex 5.1 many objects now have an &#8220;advanced/javascript code&#8221; property. This is incredibly useful. It is a kind of hook to add additional features programatically.</p> <p>For an Interactive Grid we can use it to customize the grid further. </p> <p>We first find our IG and its toolbar object. The toolbar consists of several toolbar groups. They are separated by thin vertical lines. The group &#8220;actions3&#8221; holds currently only the &#8220;Add Row&#8221; button, this is where we want to add the &#8220;Delete&#8221; button too.</p> <pre class="brush: jscript; highlight: [8]; title: ; notranslate"> function(config) { let $ = apex.jQuery, toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(), // copy the whole toolbar toolbarGroup = toolbarData.toolbarFind(&quot;actions3&quot;); // this is the group with the action=add row // add a new &quot;delete&quot; button toolbarGroup.controls.push({type: &quot;BUTTON&quot;, action: &quot;selection-delete&quot; }); //store the config config.toolbarData = toolbarData; return config; } </pre> <p>This is the result:</p> <p><img data-attachment-id="7596" data-permalink="https://svenweller.wordpress.com/2017/10/27/apex-5-1-interactive-grids-how-to-customize-toolbar-buttons/ig_modify_toolbar_with_delete_button/" data-orig-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_with_delete_button.png?w=809" data-orig-size="806,70" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="IG_modify_toolbar_with_delete_button" data-image-description="" data-medium-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_with_delete_button.png?w=809?w=300" data-large-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_with_delete_button.png?w=809?w=806" src="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_with_delete_button.png?w=809" alt="IG_modify_toolbar_with_delete_button" class="alignnone size-full wp-image-7596" srcset="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_with_delete_button.png 806w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_with_delete_button.png?w=150 150w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_with_delete_button.png?w=300 300w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_with_delete_button.png?w=768 768w" sizes="(max-width: 806px) 100vw, 806px" /></p> <p>The button is there &#8211; that&#8217;s good. But it does look kind of ugly.<br /> Not quite what we want yet.</p> <p>We have to understand that an IG provides several actions. Here we used the &#8220;delete-selection&#8221; action. The actions already have several properties, like an icon. We can overwrite those properties for each visual component that is used to represent that action. In our case the toolbar button.</p> <p>The trashcan icon might look better in your case, it depends on template/theme styling. In my case it comes with a slightly darker background. The same happens for the normal save icon (icon-ig-save).</p> <h3>Add and change the icons</h3> <p>Let&#8217;s add an icon also for the &#8220;Save&#8221; and the &#8220;Add Row&#8221; buttons. </p> <p>Using the toolbarFind Method allows us, to identify the two new existing buttons. Check John Snyders blog to learn more about the toolbarFind method. It is very useful.</p> <pre class="brush: jscript; title: ; notranslate"> function(config) { let $ = apex.jQuery, toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(), // copy the whole toolbar toolbarGroup = toolbarData.toolbarFind(&quot;actions3&quot;); // this is the group with the action=add row addrowAction = toolbarData.toolbarFind(&quot;selection-add-row&quot;), //add row button saveAction = toolbarData.toolbarFind(&quot;save&quot;); // Save button // add a new &quot;delete&quot; button toolbarGroup.controls.push({type: &quot;BUTTON&quot;, action: &quot;selection-delete&quot;, icon: &quot;icon-ig-delete&quot;, // alternative FontAwesome icon: &quot;fa fa-trash&quot;, iconBeforeLabel: true, hot: true }); // manipulate the buttons addrowAction.icon = &quot;icon-ig-add-row&quot;; // alternative font awesome icon: &quot;fa fa-plus&quot;; addrowAction.iconBeforeLabel = true; addrowAction.hot = true; saveAction.iconBeforeLabel = true; saveAction.icon =&quot;icon-ig-save-as&quot;; // list of alternative grid icons (Font Apex):icon-ig-save,icon-irr-saved-report //saveAction.icon =&quot;fa fa-save&quot;; // list of alternative font awesome icons: fa-save,fa-check saveAction.hot = true; //store the config config.toolbarData = toolbarData; return config; } </pre> <p>Result<br /> <img data-attachment-id="7637" data-permalink="https://svenweller.wordpress.com/2017/10/27/apex-5-1-interactive-grids-how-to-customize-toolbar-buttons/ig_modify_toolbar_custom_with_icons/" data-orig-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=809" data-orig-size="1266,72" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="IG_modify_toolbar_custom_with_icons" data-image-description="" data-medium-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=809?w=300" data-large-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=809?w=809" src="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=809" alt="IG_modify_toolbar_custom_with_icons" class="alignnone size-full wp-image-7637" srcset="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=809 809w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=150 150w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=300 300w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=768 768w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png?w=1024 1024w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_with_icons.png 1266w" sizes="(max-width: 809px) 100vw, 809px" /></p> <p>It is still not perfect. The &#8220;Save&#8221; and the &#8220;Add Row&#8221; buttons do have an icon now and the icon is positioned before the label. Still the icon for the &#8220;Delete&#8221; looks ugly.</p> <p>I also set all buttons to &#8220;hot=true&#8221;. The save button already has that as default. Why to do so is explained in the next &#8220;css&#8221; section. </p> <p><img src="https://svenweller.files.wordpress.com/2017/09/ig_modify_toolbar_hot_as_primary.png?w=809" alt="IG_modify_toolbar_hot_as_Primary" class="alignnone size-full wp-image-7449" /></p> <h3>Styling the toolbar buttons with css</h3> <p>Instead of the normal grid icons I wanted to use FontApex or FontAwesome icons.<br /> You have to experiment a little what works in your specific case. </p> <p>The application where I added this grid, still uses FontAwesome. The users unfortunatly decided against switching to FontApex. They were use to the older items, and didn&#8217;t like how the new font looks in the menu. I sometimes regret a little that I gave them this choice. FontApex is the much better option, especially because of the modifiers that can be added. Check the Universal Them template application for examples of that.</p> <p>The problem in the Interactive Grid is, that the grid icons are added with a class a-icon which in turn is fixed to FontApex. The creates two additional problems. Since I didn&#8217;t use FontApex other icons where not included, only the ones that the grid provides. But I wanted the buttons to look like all other buttons in the application, including the same icon font.</p> <p>This little css needs to be added to the css inline section of the page.</p> <pre class="brush: css; title: ; notranslate"> #IG_MYGRID span.a-Icon.fa, #IG_MYGRID span.a-Icon.fa:before { font-family: FontAwesome !important; } #IG_MYGRID_ig_toolbar .a-Button--hot { background-color: #0072b9; color: #ffffff; font-weight: inherit; } </pre> <p>It overwrites the Font-Family and it uses the class &#8220;a-Button&#8211;hot&#8221; (which is added for &#8220;hot&#8221; buttons) to style the toolbar buttons blue. Unfortunatly I had to use !important for th Font-Family, because that was already so in the apex core.css.</p> <p>I also did change the icons on the buttons to reuse the same icons as we had on the tabular form. Check the comments in the previous code, to see which icons are good alternatives if the correct font is available.</p> <p>Result</p> <p><img data-attachment-id="7684" data-permalink="https://svenweller.wordpress.com/2017/10/27/apex-5-1-interactive-grids-how-to-customize-toolbar-buttons/ig_modify_toolbar_custom_ig-2/" data-orig-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png?w=809" data-orig-size="853,78" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="IG_modify_toolbar_custom_IG" data-image-description="" data-medium-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png?w=809?w=300" data-large-file="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png?w=809?w=809" src="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png?w=809" alt="IG with custom toolbar buttons" class="alignnone size-full wp-image-7684" srcset="https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png?w=809 809w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png?w=150 150w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png?w=300 300w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png?w=768 768w, https://svenweller.files.wordpress.com/2017/10/ig_modify_toolbar_custom_ig1.png 853w" sizes="(max-width: 809px) 100vw, 809px" /></p> <p><em><strong>And we did it!</strong></em></p> <p>I think there are a few other ways how to reach the same result, but this is what worked well for me.</p> <h2>Other stuff and some comments</h2> <h3>Page attribute &#8220;reload on Submit&#8221;</h3> <p>When moving from a tabular form to an interactive grid we can copy the SELECT statement and create a new IG region with that. </p> <p>However we must change one page setting. The &#8220;Reload on Submit&#8221; must be changed from &#8220;Always&#8221; to &#8220;Only for Success&#8221; .</p> <p><img data-attachment-id="7451" data-permalink="https://svenweller.wordpress.com/2017/10/27/apex-5-1-interactive-grids-how-to-customize-toolbar-buttons/page_reload_on_submit/" data-orig-file="https://svenweller.files.wordpress.com/2017/09/page_reload_on_submit.png?w=809" data-orig-size="248,187" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Page_Reload_on_Submit" data-image-description="" data-medium-file="https://svenweller.files.wordpress.com/2017/09/page_reload_on_submit.png?w=809?w=248" data-large-file="https://svenweller.files.wordpress.com/2017/09/page_reload_on_submit.png?w=809?w=248" src="https://svenweller.files.wordpress.com/2017/09/page_reload_on_submit.png?w=809" alt="Page_Reload_on_Submit" class="alignnone size-full wp-image-7451" srcset="https://svenweller.files.wordpress.com/2017/09/page_reload_on_submit.png 248w, https://svenweller.files.wordpress.com/2017/09/page_reload_on_submit.png?w=150 150w" sizes="(max-width: 248px) 100vw, 248px" /></p> <p>Because of this setting, we can not use a tabular form and a IG on the same page. I would prefer to see both regions as long as the new IG is still in developement. But the setting must be different when showing a tabular form compared to showing an interactive grid.</p> <h2>How to find out about all this</h2> <p>If we want to know what actions are available we have two approaches. One is, find a button/menu point that does the action, inspect the element and look for the data-action attribute. For example this works for the add-row button.</p> <p><code>data-action="selection-add-row"<br /> </code></p> <p>The other way is to use the console and grab all actions.</p> <p>We open the console on the page with the grid and run the following javascript commands</p> <p><strong>to show grid actions</strong></p> <pre class="brush: jscript; light: true; title: ; notranslate"> apex.region( &quot;IG_MYGRID&quot; ).widget().interactiveGrid( &quot;getActions&quot; ).list() </pre> <p>or alternativly </p> <pre class="brush: jscript; light: true; title: ; notranslate"> apex.region(&quot;IG_MYGRID&quot;).widget().interactiveGrid(&quot;getActions&quot;).list().forEach(function(a) { console.log(&quot;Action Label: &quot; + a.label + &quot;, Name: &quot; + a.name + (a.choice !== undefined ? &quot;, Choice: &quot; + a.choice : &quot;&quot;) ); }); </pre> <p><strong>to show row actions</strong></p> <pre class="brush: jscript; light: true; title: ; notranslate"> apex.region(&quot;IG_MYGRID&quot;).widget().interactiveGrid(&quot;getViews&quot;).grid.rowActionMenu$.menu(&quot;option&quot;) </pre> <p>Then check the object in the console to see what actions are possible, how they are named and which properties they have. </p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svenweller.wordpress.com/7400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svenweller.wordpress.com/7400/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=svenweller.wordpress.com&#038;blog=24902459&#038;post=7400&#038;subd=svenweller&#038;ref=&#038;feed=1" width="1" height="1" /> svenweller http://svenweller.wordpress.com/?p=7400 Fri Oct 27 2017 09:00:12 GMT-0400 (EDT) Listagg for IR Column Break Report http://www.talkapex.com/2017/10/listagg-for-ir-column-break-report/ <p>If you’ve used Interactive Reports (IR) in APEX for a while you may find a need to display a delimited list of values next to a <code>sum</code> row. The following screenshot shows this problem. Suppose you wanted to have a comma delimited list of names for each job such as <code>FORD,SCOTT</code> in the aggregation (sum) row.</p><img src="/2017/10/listagg-for-ir-column-break-report/report-problem.png" alt="report-problem.png" title=""><p>In SQL this is easy to do using the <a href="https://docs.oracle.com/database/122/SQLRF/LISTAGG.htm#SQLRF30030" target="_blank" rel="external"><code>listagg</code></a> function. unfortunately <code>listagg</code> isn’t available as an IR aggregation option (<code>Actions &gt; Data &gt; Aggregate</code>). I recently needed to do this for an IR. The rest of this post will cover setup along with the JavaScript (JS) solution.</p><h2 id="Setup"><a href="#Setup" class="headerlink" title="Setup"></a>Setup</h2><ol><li>Create an Interactive Report: <code>select ename, sal from emp</code></li><li>On the IR go to <code>Actions &gt; Format &gt; Control Break</code> and Select <code>Job</code> as the column (shown below) <br> <img src="/2017/10/listagg-for-ir-column-break-report/control-break.png" alt="control-break.png" title=""><br></li><li>On the IR go to <code>Actions &gt; Data &gt; Aggregate</code> and select <code>Function: Sum</code> and <code>Column: Sal</code> as shown below. <br><img src="/2017/10/listagg-for-ir-column-break-report/aggregation-sum.png" alt="aggregation-sum.png" title=""></li></ol><p>The resulting report should look like the first screenshot at the begging of this article.</p><h2 id="Solution"><a href="#Solution" class="headerlink" title="Solution"></a>Solution</h2><p>The JavaScript below will add in the necessary <code>listagg</code> for the <code>Ename</code> column for the IR.</p><figure class="highlight js"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div></pre></td><td class="code"><pre><div class="line"><span class="comment">//Set to the displayed header name</span></div><div class="line"><span class="keyword">var</span> headerName = <span class="string">'Ename'</span>;</div><div class="line"></div><div class="line"><span class="keyword">var</span> headerNum; <span class="comment">//ID for TH header object</span></div><div class="line"></div><div class="line"><span class="comment">// Find the header to listagg</span></div><div class="line">$(<span class="string">'a.a-IRR-headerLink'</span>).each(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</div><div class="line"> <span class="keyword">var</span> $<span class="keyword">this</span> = $(<span class="keyword">this</span>)</div><div class="line"> <span class="keyword">if</span>($<span class="keyword">this</span>.text() == headerName)&#123;</div><div class="line"> headerNum = $<span class="keyword">this</span>.closest(<span class="string">'th.a-IRR-header'</span>).attr(<span class="string">'id'</span>);</div><div class="line"> &#125;</div><div class="line">&#125;);</div><div class="line"></div><div class="line">$(<span class="string">'.a-IRR-aggregate-value'</span>).each(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</div><div class="line"> <span class="keyword">var</span> $aggRowTr = $(<span class="keyword">this</span>).first().closest(<span class="string">'tr'</span>);</div><div class="line"> <span class="keyword">var</span> $prevRow = <span class="literal">null</span>;</div><div class="line"> <span class="keyword">var</span> listaggHtml = <span class="string">''</span>;</div><div class="line"></div><div class="line"> <span class="comment">// Loop over all the rows until next next column break</span></div><div class="line"> <span class="keyword">while</span> (<span class="literal">true</span>)&#123;</div><div class="line"> $prevRow = !$prevRow ? $aggRowTr.prev(<span class="string">'tr'</span>) : $prevRow.prev(<span class="string">'tr'</span>);</div><div class="line"></div><div class="line"> <span class="keyword">if</span> ($prevRow.children(<span class="string">'th'</span>).length &gt; <span class="number">0</span>)&#123;</div><div class="line"> <span class="comment">// If TH is detected it's the end of the IR column break</span></div><div class="line"> <span class="keyword">break</span>;</div><div class="line"> &#125;</div><div class="line"> <span class="keyword">else</span>&#123;</div><div class="line"> listaggHtml = $prevRow.children(<span class="string">`td[headers*="<span class="subst">$&#123;headerNum&#125;</span>"]`</span>).text() + <span class="string">','</span> + listaggHtml;</div><div class="line"> &#125;</div><div class="line"> &#125;<span class="comment">//for</span></div><div class="line"></div><div class="line"> <span class="comment">// Regex is to remove trailing comma</span></div><div class="line"> $aggRowTr.children(<span class="string">`td[headers*="<span class="subst">$&#123;headerNum&#125;</span>"]`</span>).html(listaggHtml.replace(<span class="regexp">/,$/gi</span>, <span class="string">''</span>));</div><div class="line"></div><div class="line">&#125;); <span class="comment">// ('.a-IRR-aggregate-value').each</span></div></pre></td></tr></table></figure><p>After running the JS code the report will look like:</p><img src="/2017/10/listagg-for-ir-column-break-report/report-solution.png" alt="report-solution.png" title=""><p>A few comments about this solution:</p><ul><li>This code was for a personal report and thus the JS hasn’t been optimized or properly tested on all browsers</li><li>Depending on your needs you may want to move it to a Dynamic Action</li><li>If you have time you may want to convert this to an APEX plugin. If so please share on <a href="https://apex.world/ords/f?p=100:700" target="_blank" rel="external">APEX.world plugins</a></li></ul> Martin Giffy D'Souza http://www.talkapex.com/2017/10/listagg-for-ir-column-break-report/ Fri Oct 27 2017 08:01:52 GMT-0400 (EDT) Nowa wersja JasperReportsIntegration 2.4.0 dla APEX-a http://apex.dbe.pl/2017/10/nowa-wersja-jasperreportsintegration.html Przedwczoraj otrzymałem od Dietmara Austa maila z informacją, iż udostępnił nową wersję moduły raportującego opartego na silniku Jasper Report 6.4.1. Jest to nasz najbardziej ulubiony moduł raportujący.<br /> <br /> <br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://4.bp.blogspot.com/-wB9VWjDXTHc/WfG1gw35ZDI/AAAAAAAAK_Q/7eP_9J2cWtU844xo7uexKBZNrDk1sxMdgCLcBGAs/s1600/Jasper-report-1024x367.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="367" data-original-width="1024" height="142" src="https://4.bp.blogspot.com/-wB9VWjDXTHc/WfG1gw35ZDI/AAAAAAAAK_Q/7eP_9J2cWtU844xo7uexKBZNrDk1sxMdgCLcBGAs/s400/Jasper-report-1024x367.png" width="400" /></a></div> <br /> Jego zalety to API w PL/SQL, świetny builder, brak ograniczeń co do oczekiwanych efektów - można naprawdę zrobić wszystko.<br /> Oczywiście są i wady... tzn ja widzę jedną poważną wadę: generowanie raportu w innej sesji oracle, a co za tym idzie brak dostępu do danych sesyjnych APEX-a. Trzeba to obchodzić na różne sposoby co nie jest zawsze łatwe.<br /> <br /> Dietmar przy okazji poinformował iż uruchamia swój Blog pod nową domeną&nbsp;&nbsp;<a href="http://dietmaraust.com/" target="_blank">http://dietmaraust.com/</a>. Tam też można pobrać najnowszą wersję&nbsp;JasperReportsIntegration 2.4.0 ) tag:blogger.com,1999:blog-7531463720728239813.post-2646472223856531184 Fri Oct 27 2017 02:00:00 GMT-0400 (EDT) Experts in Oracle … http://www.dbaexpert.com/blog/experts-in-oracle/ <p>I was recently in LA (Santa Monica in particular). I saw a food truck and had to take a picture because this food truck was a little different in their advertising technique. I was more curious about how do they get away with this kind of public advertising?</p> <p><img src="http://www.dbaexpert.com/blog/wp-content/uploads/2017/10/IMG_6CAFC1E6022A-1.jpeg" alt="IMG 6CAFC1E6022A 1" title="IMG_6CAFC1E6022A-1.jpeg" border="0" width="599" height="337" /></p> <p>So I thought about how can I market my company, <a href="http://viscosityna.com">Viscosity North America</a>. So here&#8217;s the new slogan for Viscosity: </p> <p><strong>&#8220;Oracle Experts, Cloud Experts, Apex Experts, Exadata Experts, and Experts of Other Shit !!!”</strong> </p> <p> I wander if I can put a big sign up in our next building when we move offices.</p> admin http://www.dbaexpert.com/blog/?p=1200 Thu Oct 26 2017 08:01:06 GMT-0400 (EDT) Announcing the 2018-2019 ODTUG Board of Directors http://www.odtug.com/p/bl/et/blogaid=750&source=1 The wait is over! After fierce campaigning and abundant votes, we are excited to announce that the ODTUG Board of Directors election results are in! Congratulations to the newly elected members of the ODTUG Board of Directors! ODTUG http://www.odtug.com/p/bl/et/blogaid=750&source=1 Wed Oct 25 2017 14:50:55 GMT-0400 (EDT) ORDS REST Modules with PL/SQL https://ruepprich.wordpress.com/2017/10/25/ords-rest-modules-with-plsql/ <p>Here is one of the best references I&#8217;ve found for creating ORDS REST services with PL/SQL.</p> <p><a href="https://oracle-base.com/articles/misc/oracle-rest-data-services-ords-create-basic-rest-web-services-using-plsql#create-post-web-services" target="_blank" rel="noopener">https://oracle-base.com/articles/misc/oracle-rest-data-services-ords-create-basic-rest-web-services-using-plsql#create-post-web-services</a></p> <p>There are examples of the various methods (GET, POST, PUT, DELETE), as well as examples for authentication.</p> <p>One thing to note is that REST modules created with PL/SQL are separate from those created in APEX. Therefore, modules created in APEX cannot be edited with PLSQL.</p> <p>Creating REST modules in PL/SQL is the more robust method, as it allows you to customize it better. Also, having any sort of logic inside stored procedures and database objects is always a good idea.</p> <p>&nbsp;</p> <p>&nbsp;</p><br /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ruepprich.wordpress.com/2832/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ruepprich.wordpress.com/2832/" /></a> <img alt="" border="0" src="https://pixel.wp.com/b.gif?host=ruepprich.wordpress.com&#038;blog=12765658&#038;post=2832&#038;subd=ruepprich&#038;ref=&#038;feed=1" width="1" height="1" /> Christoph Ruepprich http://ruepprich.wordpress.com/?p=2832 Wed Oct 25 2017 10:00:36 GMT-0400 (EDT) Oracle APEX and RESTful API standards http://lschilde.blogspot.com/2017/10/oracle-apex-and-restful-api-standards.html <div dir="ltr" style="text-align: left;" trbidi="on"><div dir="ltr" style="text-align: left;" trbidi="on"><h2 class="MsoNormal" style="line-height: normal; text-align: justify;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 18.0pt;">Oracle APEX and REST<span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;">f</span>ul API standards</span></b></h2><h2 class="MsoNormal" style="line-height: normal; text-align: justify;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 18.0pt;">&nbsp;</span></b></h2><h3 class="MsoNormal" style="line-height: normal; text-align: left;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 13.5pt;">Web<span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;"> </span>services guidelines </span></b></h3><h3 class="MsoNormal" style="line-height: normal; text-align: left;"><b><span style="font-family: &quot;wingdings&quot;; font-size: 13.5pt;">&nbsp;</span></b></h3><h4 class="MsoNormal" style="line-height: normal; text-align: left;"><b><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;; font-size: 12.0pt;">Consistent RESTFul APIs</span></b></h4><div class="separator" style="clear: both; text-align: center;"></div><div style="margin-left: 1em; margin-right: 1em;"></div><br /><div class="separator" style="clear: both; text-align: center;"></div><div class="MsoNormal" style="line-height: normal; text-align: left;"><br /><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">For the past few month I have been involved in corporate level interoperability project and these are my few key "lessons-learned" notes.&nbsp;</span></div><br /><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">We know and we have all heard of RESTful services and how important they are today for any production systems that are exchanging data.&nbsp;</span><br /><div class="separator" style="clear: both; text-align: center;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; margin-left: 1em; margin-right: 1em;"><img alt="" src="data:image/png;base64,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" /> </span></div></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Point here is to emphasize importance of having standards to provide guidelines for architects and developers in the design and development of RESTful APIs that are consistent, usable, max reusable and are based on current industry best practices. </span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Similar to your PL/SQL and Oracle APEX standards these are things that will evolve over time but key thing is to consider having them before development work begins.These guidelines are applica<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">ble regardless if you<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">r services are built <span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">with Oracle<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"> APEX, P<span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">HP or any other technology.</span></span></span></span> </span></span></div><br /><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">I will try to keep short and sweet as I am sure a lot can be said on this topic.</span></div><br /><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Overall summary would be:&nbsp;</span></div><div style="text-align: justify;"><span style="font-family: &quot;arial&quot; , &quot;sans-serif&quot;;"><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-AU</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0cm; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-fareast-language:EN-US;} table.StandardDAFWASOADocTable {mso-style-name:"Standard DAFWA SOA Doc Table"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-priority:99; mso-style-unhide:no; border:solid windowtext 1.0pt; mso-border-alt:solid windowtext .5pt; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-border-insideh:.5pt solid windowtext; mso-border-insidev:.5pt solid windowtext; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} table.StandardDAFWASOADocTableFirstRow {mso-style-name:"Standard DAFWA SOA Doc Table"; mso-table-condition:first-row; mso-style-priority:99; mso-style-unhide:no; mso-tstyle-shading:#007D57; color:white; mso-themecolor:background1; mso-ansi-font-weight:bold;} </style><![endif]--> <table border="1" cellpadding="0" cellspacing="0" class="StandardDAFWASOADocTable" style="border-collapse: collapse; border: none; margin-left: 5.4pt; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 2.85pt 5.4pt 2.85pt 5.4pt; mso-yfti-tbllook: 1184; width: 98%px;"> <tbody><tr style="height: 19.8pt; mso-yfti-firstrow: yes; mso-yfti-irow: -1;"> <td style="background: rgb(222, 234, 246) none repeat scroll 0% 0%; border: 1pt solid windowtext; height: 19.8pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;"><b>REST Guidelines Summary</b></span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">A REST URI identifies a resource</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">REST URIs should include nouns, not verbs</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Use plural nouns to represent resources for consistency (no singular nouns)</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Use HTTP verbs (GET, POST, PUT, DELETE) to operate on resource collections and elements</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Use HTTP headers to include meta-data where possible</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Use the correct HTTP status codes for responses</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Control the depth and try not to nest deeper than /resource/{id}/resource if possible</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Version the API using major, minor and patch version numbers, e.g. v1.0.0</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Put the major version number in the URI, prepended with a ‘v’, for example https://my-resturl.com/v1/resource</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Develop services that are idempotent, i.e. (accidentally) invoking the service twice with an identical payload has no undesirable side effects</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Handle concurrency for 'unsafe' methods (i.e. PUT, POST, DELETE) where required</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Default on using the JSON format for request and response messages</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">Use lowerCamelCase JSON message formats</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">All incoming and outgoing dates and times comply with the ISO8601 standard</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: -moz-use-text-color windowtext windowtext; border-image: none; border-style: none solid solid; border-width: medium 1pt 1pt; padding: 2.85pt 5.4pt; width: 100%;" valign="top" width="100%"><div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"><span style="font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;">All dates and times returned by a service should use the following ISO8601 compliant UTC common format: YYYY-MM-DDThh:mm:ss.sssZ</span></div></td> </tr><tr> <td style="-moz-border-bottom-colors: none; -moz-border-left-colo