OraNA :: Oracle News Aggregator

Syndicate content
One place to monitor and read Oracle related weblogs and news sources.
Updated: 8 min 36 sec ago

Kfed and Exadata ASM disks

38 min 12 sec ago

I’ve written in the past on the usefulness of kfed. As Martin Berger requested seeing some output from kfed with Exadata disks I thought I would oblige.

So What is kfed

kfed is the so called Kernel Files Editor, Miladin Modrakovic has written quite nicely about this. It can be used to read and modify ASM disk headers. The ASM Support guy, Bane Radulović also has a nice write up.

Before you can run kfed you need to have disk to point it to, and this is where it gets interesting on Exadata as compared to traditional, say Fibre Channel SAN attached storage. On there you typically have devices like /dev/sdX that are your luns from the SAN.

Exadata is Different

I think we are all understanding that things are a little different on Exadata and the way disks are presented is certainly unusual. Exadata uses a protocol called iDB to communicate to the Storage Servers. It is a network protocol.

This is one of the first things that really surprised me in working with Exadata. I was so used to running iostat on a database server to see how busy the storage was. Well you can forget doing that on Exadata, as it will only show you the local compute node disks – not really where the action is!

kfod Disk Discovery

So to run kfed, we need to find something to run it against, and here kfod (Kernel Files Oracle Storage Manager Discovery Tool) is your friend:

db01: oracle$ kfod di=all -------------------------------------------------------------------------------- Disk Size Path User Group ================================================================================ 1: 1501184 Mb o/192.168.10.3/DATA01_CD_00_cel01 <unknown> <unknown> 2: 1501184 Mb o/192.168.10.3/DATA01_CD_01_cel01 <unknown> <unknown> 3: 1501184 Mb o/192.168.10.3/DATA01_CD_02_cel01 <unknown> <unknown> 4: 1501184 Mb o/192.168.10.3/DATA01_CD_03_cel01 <unknown> <unknown> . . . -------------------------------------------------------------------------------- ORACLE_SID ORACLE_HOME ================================================================================ +ASM1 /u01/app/ora/product/11.2.0.2/grid_1 +ASM2 /u01/app/ora/product/11.2.0.2/grid_1

Output above has been edited to prevent tedium. This is basically scanning for valid devices and spitting out the size and path to those devices. So now you can feed something like o/192.168.10.3/DATA01_CD_03_cel01 into kfed:

db01: oracle$ kfed read o/192.168.10.3/DATA01_CD_03_cel01 kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: T=0 NUMB=0x0 kfbh.block.obj: 2147483651 ; 0x008: TYPE=0x8 NUMB=0x3 kfbh.check: 828339576 ; 0x00c: 0x315f7578 kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8 kfdhdb.driver.reserved[0]: 0 ; 0x008: 0x00000000 kfdhdb.driver.reserved[1]: 0 ; 0x00c: 0x00000000 kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000 kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000 kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000 kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000 kfdhdb.compat: 186646528 ; 0x020: 0x0b200000 kfdhdb.dsknum: 3 ; 0x024: 0x0003 kfdhdb.grptyp: 2 ; 0x026: KFDGTP_NORMAL kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER kfdhdb.dskname: DATA01_CD_03_CEL01 ; 0x028: length=18 kfdhdb.grpname: DATA01 ; 0x048: length=6 kfdhdb.fgname: CEL01 ; 0x068: length=4 kfdhdb.capname: ; 0x088: length=0 kfdhdb.crestmp.hi: 32965963 ; 0x0a8: HOUR=0xb DAYS=0xa MNTH=0x1 YEAR=0x7dc kfdhdb.crestmp.lo: 180889600 ; 0x0ac: USEC=0x0 MSEC=0x20a SECS=0x2c MINS=0x2 kfdhdb.mntstmp.hi: 32967149 ; 0x0b0: HOUR=0xd DAYS=0xf MNTH=0x2 YEAR=0x7dc kfdhdb.mntstmp.lo: 2947617792 ; 0x0b4: USEC=0x0 MSEC=0x45 SECS=0x3b MINS=0x2b kfdhdb.secsize: 512 ; 0x0b8: 0x0200 kfdhdb.blksize: 4096 ; 0x0ba: 0x1000 kfdhdb.ausize: 4194304 ; 0x0bc: 0x00400000 kfdhdb.mfact: 454272 ; 0x0c0: 0x0006ee80 kfdhdb.dsksize: 375296 ; 0x0c4: 0x0005ba00 kfdhdb.pmcnt: 2 ; 0x0c8: 0x00000002 kfdhdb.fstlocn: 1 ; 0x0cc: 0x00000001 kfdhdb.altlocn: 2 ; 0x0d0: 0x00000002 kfdhdb.f1b1locn: 0 ; 0x0d4: 0x00000000 kfdhdb.redomirrors[0]: 0 ; 0x0d8: 0x0000 kfdhdb.redomirrors[1]: 0 ; 0x0da: 0x0000 kfdhdb.redomirrors[2]: 0 ; 0x0dc: 0x0000 kfdhdb.redomirrors[3]: 0 ; 0x0de: 0x0000 kfdhdb.dbcompat: 186646528 ; 0x0e0: 0x0b200000 kfdhdb.grpstmp.hi: 32965963 ; 0x0e4: HOUR=0xb DAYS=0xa MNTH=0x1 YEAR=0x7dc kfdhdb.grpstmp.lo: 177854464 ; 0x0e8: USEC=0x0 MSEC=0x276 SECS=0x29 MINS=0x2 kfdhdb.vfstart: 0 ; 0x0ec: 0x00000000 kfdhdb.vfend: 0 ; 0x0f0: 0x00000000 kfdhdb.spfile: 0 ; 0x0f4: 0x00000000 kfdhdb.spfflg: 0 ; 0x0f8: 0x00000000 kfdhdb.ub4spare[0]: 0 ; 0x0fc: 0x00000000 kfdhdb.ub4spare[1]: 0 ; 0x100: 0x00000000 kfdhdb.ub4spare[2]: 0 ; 0x104: 0x00000000 kfdhdb.ub4spare[3]: 0 ; 0x108: 0x00000000 kfdhdb.ub4spare[4]: 0 ; 0x10c: 0x00000000 kfdhdb.ub4spare[5]: 0 ; 0x110: 0x00000000 kfdhdb.ub4spare[6]: 0 ; 0x114: 0x00000000 kfdhdb.ub4spare[7]: 0 ; 0x118: 0x00000000 kfdhdb.ub4spare[8]: 0 ; 0x11c: 0x00000000 kfdhdb.ub4spare[9]: 0 ; 0x120: 0x00000000 kfdhdb.ub4spare[10]: 0 ; 0x124: 0x00000000 kfdhdb.ub4spare[11]: 0 ; 0x128: 0x00000000 kfdhdb.ub4spare[12]: 0 ; 0x12c: 0x00000000 kfdhdb.ub4spare[13]: 0 ; 0x130: 0x00000000 kfdhdb.ub4spare[14]: 0 ; 0x134: 0x00000000 kfdhdb.ub4spare[15]: 0 ; 0x138: 0x00000000 kfdhdb.ub4spare[16]: 0 ; 0x13c: 0x00000000 kfdhdb.ub4spare[17]: 0 ; 0x140: 0x00000000 kfdhdb.ub4spare[18]: 0 ; 0x144: 0x00000000 kfdhdb.ub4spare[19]: 0 ; 0x148: 0x00000000 kfdhdb.ub4spare[20]: 0 ; 0x14c: 0x00000000 kfdhdb.ub4spare[21]: 0 ; 0x150: 0x00000000 kfdhdb.ub4spare[22]: 0 ; 0x154: 0x00000000 kfdhdb.ub4spare[23]: 0 ; 0x158: 0x00000000 kfdhdb.ub4spare[24]: 0 ; 0x15c: 0x00000000 kfdhdb.ub4spare[25]: 0 ; 0x160: 0x00000000 kfdhdb.ub4spare[26]: 0 ; 0x164: 0x00000000 kfdhdb.ub4spare[27]: 0 ; 0x168: 0x00000000 kfdhdb.ub4spare[28]: 0 ; 0x16c: 0x00000000 kfdhdb.ub4spare[29]: 0 ; 0x170: 0x00000000 kfdhdb.ub4spare[30]: 0 ; 0x174: 0x00000000 kfdhdb.ub4spare[31]: 0 ; 0x178: 0x00000000 kfdhdb.ub4spare[32]: 0 ; 0x17c: 0x00000000 kfdhdb.ub4spare[33]: 0 ; 0x180: 0x00000000 kfdhdb.ub4spare[34]: 0 ; 0x184: 0x00000000 kfdhdb.ub4spare[35]: 0 ; 0x188: 0x00000000 kfdhdb.ub4spare[36]: 0 ; 0x18c: 0x00000000 kfdhdb.ub4spare[37]: 0 ; 0x190: 0x00000000 kfdhdb.ub4spare[38]: 0 ; 0x194: 0x00000000 kfdhdb.ub4spare[39]: 0 ; 0x198: 0x00000000 kfdhdb.ub4spare[40]: 0 ; 0x19c: 0x00000000 kfdhdb.ub4spare[41]: 0 ; 0x1a0: 0x00000000 kfdhdb.ub4spare[42]: 0 ; 0x1a4: 0x00000000 kfdhdb.ub4spare[43]: 0 ; 0x1a8: 0x00000000 kfdhdb.ub4spare[44]: 0 ; 0x1ac: 0x00000000 kfdhdb.ub4spare[45]: 0 ; 0x1b0: 0x00000000 kfdhdb.ub4spare[46]: 0 ; 0x1b4: 0x00000000 kfdhdb.ub4spare[47]: 0 ; 0x1b8: 0x00000000 kfdhdb.ub4spare[48]: 0 ; 0x1bc: 0x00000000 kfdhdb.ub4spare[49]: 0 ; 0x1c0: 0x00000000 kfdhdb.ub4spare[50]: 0 ; 0x1c4: 0x00000000 kfdhdb.ub4spare[51]: 0 ; 0x1c8: 0x00000000 kfdhdb.ub4spare[52]: 0 ; 0x1cc: 0x00000000 kfdhdb.ub4spare[53]: 0 ; 0x1d0: 0x00000000 kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0x00000000 kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0x00000000 kfdhdb.acdb.ents: 0 ; 0x1dc: 0x0000 kfdhdb.acdb.ub2spare: 0 ; 0x1de: 0x0000

Lots of spares! It’s worth noting that kfed can also be used for editing your header if it gets corrupted.

Like this:Be the first to like this post.


Strategies for controlling the af:popup close event

1 hour 27 min ago

In a previous OTN Harvest summary, I discussed how to handle the af:dialog OK and Cancel event: http://www.oracle.com/technetwork/developer-tools/adf/learnmore/77-ok-cancel-support-in-dialog-351871.pdf . In this post, I get back to this though not covering the "Cancel" case.

There are two options developers have to handle the "Ok" event of an af:dialog component in an af:popup

· Using a DialogListener with the default Ok button

· Using a custom command button instead of the default Ok button

The sample use case is quite simple: A command button added to a page opens the popup component that contains a dialog with an input text field in it. Users can provide a value in the input text field and press either a "custom Ok" button or the default "Ok" button to submit the value and close the popup. In both cases, the provided value in the text field is evaluated and if it is not "ADF ROCKS" written in whatever case, an error message is displayed and the popup is not closed.

Example 1: Using the default OK button and a DialogListener

The sample application opens with a single command button visible on the screen. Pressing the command button uses an af:showPopupBehavior behavior tag to open the popup.

Typing "Hello World" into the text field and pressing the Ok button (which is the default Ok button configured in the Type property of the af:dialog component) invokes a managed bean method that is configured as the DialogListener for the dialog component.

<af:dialog …   binding="#{DialogContentHandler.dialogComponent}" contentWidth="300" contentHeight="200"   dialogListener="#{DialogContentHandler.onDialogAction}">

Note that the binding property is set to define a JSF component binding of the dialog to the managed bean to allow the lookup of the input text field in Java. Because the entered text is not "ADF ROCKS", an error message is displayed below the input field To display error messages in a popup, the af:message tag is added to the popup dialog as shown below

<af:dialog …>   <af:panelFormLayout id="pfl1">     <af:panelLabelAndMessage label="Validate Me" id="plam1">      <af:panelGroupLayout id="pgl1" layout="vertical">         <af:inputText id="it1"/>           <af:message id="m1" for="it1"/>         </af:panelGroupLayout>       </af:panelLabelAndMessage>   </af:panelFormLayout> </af:dialog>

The dialog listener managed bean code displaying the error or, in the case of the correct entry, dismissing the dialog is shown next:

/**  * Dialog Listener that validates the input field for ADF ROCKS.  * If the string doesn't match, an error message is shown  *  * @param dialogEvent */ public void onDialogAction(DialogEvent dialogEvent) {  //lookup the text field starting from the dialog component for   //which a JSF component binding has been created   UIComponent inputText = dialogComponent.findComponent("it1");   String inputTextValue = (String)((RichInputText)inputText).getValue();        //If the dialog outcome is OK (the OK button has been pressed)  //validate the entry  if(dialogEvent.getOutcome() == DialogEvent.Outcome.ok){      if(inputTextValue != null &&       inputTextValue.equalsIgnoreCase("ADF ROCKS")){        //ensure the input text value is reset for a second run      ((RichInputText) inputText).resetValue();   }   else{   //show error message so that popup doesn't close   FacesContext fctx = FacesContext.getCurrentInstance();   FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR,                      "Value Validation Failed", "Try: ADF ROCKS");        fctx.addMessage(inputText.getId(), fm); } } } Example 2: Using a custom command button

The af:dialog component renders without default buttons when the Type property is set to none. This is useful if you want to add your own command buttons, which then also are better to customize.

<af:dialog id="…" …>   <f:facet name="buttonBar">     <af:commandButton text="Custom OK" id="cb2"                                                          action="#{DialogContentHandler.onOK}"                                                             partialSubmit="true"/> </af:dialog>

The use case is the same as before and a message displays when the input text field value is not ADF ROCKS. The only difference to the code executed in a DialogListener is that the command button action listener needs to explicitly close the dialog

public String onOK() {       UIComponent inputText = dialogComponent.findComponent("it1");   String inputTextValue = (String) ((RichInputText)inputText).getValue(); if(inputTextValue != null &&      inputTextValue.equalsIgnoreCase("ADF ROCKS")){      RichPopup rp = (RichPopup) dialogComponent.getParent();      //reset input text component      ((RichInputText)inputText).resetValue();     rp.hide();   }   else{     FacesContext fctx = FacesContext.getCurrentInstance();     FacesMessage fm =          new FacesMessage(FacesMessage.SEVERITY_ERROR,                       "Value Validation Failed", "Try: ADF ROCKS");          fctx.addMessage(inputText.getId(), fm);   }          return null; } Sample Download

You can download an Oracle JDeveloper 11g R2 sample workspace from here: https://blogs.oracle.com/jdevotnharvest/resource/PreventPopupFromClosing.zip. The JSF page has both approaches,default Ok button and custom Ok button on a single dialog. You don't need a database for running the sample.


Großes Presse-Echo

1 hour 37 min ago

Oracle und die Partner machen Schlagzeilen - und das gleich zu mehreren aktuelle Themen. Hier eine Auswahl der wichtigsten Berichte für die Oracle Partner:

Next Generation Data Center Index (NGDCI)

Zum zweiten Mal hat Oracle seinen „Next Generation Data Center Index“ veröffentlicht. Laut der Studie haben die Betreiber deutscher Rechenzentren, verglichen mit Skandinavien den Ländern des Nahen Osten, wenig Fortschritte gemacht.

Big Data Appliance

Auch die Release der Oracle Big Data Appliance sorgte für einigen Wirbel. Diese Systemlösung unterstützt Unternehmenskunden dabei, aus sehr großen Datenmengen („Big Data“) den maximalen Wert zu generieren.

HOPE: Hardware from Oracle - Pricing for Education

Dass Oracle nun an die günstigen SUN-Angebote für die Forschung und Lehre anknüpft, stößt auf reges Interesse. Für den Education-Markt liegt nun erstmals wieder eine Reihe vergünstigter Produkte vor, die Details finden sie in unserem Blogbeitrag zum Thema HOPE.


Fusion Middleware 11gR1 – Patch Set 5 is available (at last) – First impressions

1 hour 41 min ago
It had been announced at Oracle Open World 2011 and sort of promised for December 2011 – a promise or at least a suggestion reiterated in early December even. But for whatever reason, it slipped – not shipped – and Christmas break that perfect time of the year for playing with new software came and [...]


And then there were 14 compatible Java EE 6 implementations

3 hours 37 min ago

With the recent addition of JBoss' Java EE 6 Full Platform product, the list of compatible servers is now set to no less than 14, a little after the 2-year anniversary of the platform.

With this much vendor choice (Open Source or not) and platform choice (Web of Full), it's a great time to be a Java EE developer and user.

Note that with all the new JSR's following the JCP 2.8 modus operandi, such public pages of compatible implementations should become the rule. This will of course apply to Java EE 7, but also to individual specifications.


My Bi-directional Replication Using GoldenGate Adventure, Ep5

6 hours 34 min ago

First, I made an amendment to by first post - My Bi-directional Replication Using GoldenGate Adventure, Ep1

I was trying to be creative by practicing the least privilege principle and it turned out to be a nightmare with unintended consequences.

My recommendation is to follow the manual.

 

One of many criteria for a well designed bi-directional replication is to avoid conflict; otherwise, resolve conflict.

The saying goes, “An ounce of prevention is worth a pound of cure.”

One alternate to avoid conflict is to use artificial key with sequence alternating between odd and even.

I have created a stored procedure that will automatically do this.

The prerequisite for using the stored procedure in bi-directional replication is the db_name must contain a numeric to represent odd and even database.

Here is the code:

CREATE OR REPLACE PACKAGE pkg_create IS -- -- mdinh: 2012-Jan-19 -- -- Create ODD and EVEN sequences for bi-directional replication based on DBnn -- PROCEDURE seq (p_table VARCHAR2); END; / CREATE OR REPLACE PACKAGE BODY pkg_create AS PROCEDURE seq(p_table VARCHAR2) IS l_start PLS_INTEGER := TO_NUMBER(REGEXP_SUBSTR(SYS_CONTEXT('USERENV','DB_NAME'), '\d+')); BEGIN EXECUTE IMMEDIATE 'create sequence '||p_table||'_seq start with '||l_start||' increment by 2'; EXCEPTION WHEN OTHERS THEN RAISE; END; END; /

Here is an example of how it is used:

A sequence is created by appending SEQ to the table name, the starting value is determined based on the numeric portion of db_name.

demo_app@HA01> start pkg_create.sql Package created. Package body created. demo_app@HA01> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- CUSTOMERS TABLE INVENTORIES TABLE LOGON TABLE ORDERENTRY_METADATA TABLE ORDERS TABLE ORDER_ITEMS TABLE PRODUCTS VIEW PRODUCT_DESCRIPTIONS TABLE PRODUCT_INFORMATION TABLE PRODUCT_PRICES VIEW WAREHOUSES TABLE 11 rows selected. demo_app@HA01> exec pkg_create.seq('WAREHOUSES'); PL/SQL procedure successfully completed. demo_app@HA01> select WAREHOUSES_seq.nextval from dual; NEXTVAL ---------- 1 demo_app@HA01> / NEXTVAL ---------- 3 demo_app@HA01> / NEXTVAL ---------- 5 demo_app@HA01> demo_app@xgoldengate02> start pkg_create.sql Package created. Package body created. demo_app@xgoldengate02> select * from tab; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- CUSTOMERS TABLE INVENTORIES TABLE LOGON TABLE ORDERENTRY_METADATA TABLE ORDERS TABLE ORDER_ITEMS TABLE PRODUCTS VIEW PRODUCT_DESCRIPTIONS TABLE PRODUCT_INFORMATION TABLE PRODUCT_PRICES VIEW WAREHOUSES TABLE 11 rows selected. demo_app@xgoldengate02> exec pkg_create.seq('WAREHOUSES'); PL/SQL procedure successfully completed. demo_app@xgoldengate02> select WAREHOUSES_seq.nextval from dual; NEXTVAL ---------- 2 demo_app@xgoldengate02> / NEXTVAL ---------- 4 demo_app@xgoldengate02> / NEXTVAL ---------- 6 demo_app@xgoldengate02>


Classifying ADF Task Flow Navigation Choices

6 hours 37 min ago

Having written the Angels in the Architecture: An ADF Application Architectural Blueprint presentation in 2011 it spawned a number of side projects which I had scribbled down but taken no further. Starting at Oracle has given me a little more time to rummage through my notebooks and turn these ideas into blogs posts hopefully to help others.

In the Angels in the Architecture presentation there was an in depth look at how Bounded Task Flows (BTF) in JDeveloper 11g+ could be placed in their own workspace and published as ADF Libraries for reuse in a master composite ADF application. In consuming the BTFs in the master application, it isn't uncommon to make use of the consumed BTFs in a parent composite BTF that brings the moving parts together. This is truly one of the delights of BTFs, the ability to shuffle the bits around like Lego to build any application you want.

It was in this composition that I discovered another interesting area of BTFs yet to be documented, that of the different navigation models used beyond just the concepts of Unbounded Bounded Task (UTFs) vs Bounded Task Flows (BTFs). This blog posts takes a stab at describing the different models. It shouldn't be considered complete, just a starting point to help you understand the options, and a chance for me to change my scribbled notes into something more substantial.

Unbounded Task Flows vs Bounded Task Flows

Of course for ADF beginners it's worth going over the basics and describing the characteristics of Unbounded Task Flows (UTFs) and Bounded Task Flows (BTFs).

Unbounded Task Flows of which every application has at least one comprise the main page flow of your application. Whether you're building an application with many separate pages each with their own URL, or a single page desktop like application with portals/regions, you'll have a UTF.

In terms of navigation an example UTF looks as follows:


The navigation characteristics of a UTF many of which been documented before include:

  • There is no set start or end to the UTF (thus the name "unbounded"), the user can enter the application at any activity.
  • Navigation is a combination of user free-form and design time structured (explained further next)
  • Free-form allows the user to access any view activity via a URL.
  • Because of the free-form navigation model, the minimum amount of steps to get to any view activity is 1.
  • Isolated activities are still accessible thanks to their URLs.
  • Structured allows developers to optionally define uni or bi directional navigation between nodes.
  • Wildcards provide a uni-directional leap from a source activity to a defined destination activity.
  • The UTF has no defined exit points for the user. In fact every activity is an exit point, the user can leave the application at any point.

Bounded Task Flows navigation takes a more constrained approach to navigation:


The characteristics of navigation within BTFs include:

  • As the name suggests, they're bounded, with one entry point and one or more exit points for the user.
  • There is no free-form navigation, all navigation (both uni and bi-directional) must be through predefined navigation rules or wildcards.
  • You cannot access any activity inside the BTF by an addressable URL.
  • Because of the structured navigation model, the minimum number of steps to get to any activity within the BTF is dictated by the developer (unlike the free-form nature of UTFs).
  • Isolated nodes are inaccessible.
Inter-Task Flow navigation - task flow calls and regions

Before we investigate task flow navigations further, readers need to be familiar that the two mechanisms for tasks flows to call each other:

1) To call a task flow based on pages we must use a task flow call

2) To call a task flow based on page fragments, we must embed the page fragment task flow as a region in a page or another page fragment.

Note how I use the term task flow here rather than Unbounded or Bounded Task Flows. The mechanisms for the different types of task flows to call each other is the same across both.

In addressing point 2 above it is an interesting one as the idea of embedding brings us to the idea of the "stack".

Stack navigation

At its simplest "stack navigation" is when one task flows call another without terminating the first:


To be precise stack navigation occurs when:

  • A source task flow calls a destination task flow
  • Control is passed to the destination task flow until it terminates
  • Upon which control is passed back to the source/caller
  • During the stack the state of the source task flow is persisted
  • The state of the destination task flow only exists for its life

The easy analogy here for developers to understand is the 3GL equivalent of functions calling functions.

Of course the "stack" model can be extended and we can have a set of task flows calling each other in a deep stack:

Some points on the stack:

  • It's suitable for both page or page fragment task flows
  • Task flow calls and returns are what allow the stack to grow and shrink.
  • As we progress deeper into the stack, as the previous task flows are still live and their state stored in memory, we will consume more memory
  • On returning to a previous item in the stack, its state is restored in tact with out modifications needed.
  • It is well suited to logical drill up/down solutions.
  • There are no short cuts from the stack.
  • It's messy at design time to reorganize the stack if we get the stack order wrong.
  • Task flow parent actions or contextual events to manipulate the calling task flow are not possible.
  • Task flow calls allow a terminating task flow to pass parameters back to the caller.
Network navigation

"Network navigation" is where we chain a number of task flows together in one composite master.

Relevant points of the network navigation model:

  • It is suitable for both page or page fragment task flows
  • Navigation between flows is controlled by a master composite task flow.
  • It's very easy to reorganize the calling order in the composite task flow.
  • At most there's only the two task flows on the stack, the composite or the called task flow, thus reducing concerns on the memory consumed.
  • If we do return to a previously visited called task flow in the composite, to provide a seamless experience for the user where it appears we never left the task flow, we need to reestablish it's similar state to when we left it. This will optionally require more task flow parameters and more logic internally to reexecute previous processing.
  • Task flow parent actions or contextual events to manipulate the calling task flow are not possible.
  • Task flow calls still allow a terminating task flow to pass parameters back to the caller.
  • Better suited to logic path or wizard style interfaces (noting the similarity to trains).

At this point we can start to see one of the key differentiators technically with stack vs network navigation is the stack model takes more memory (depending on it's depth), while network takes less but may require more processing. Readers should be careful not to make an ill formed decision here as I've not given you any empirical evidence on which one is better or worse from an overhead point of view. As example if stack navigation only takes up 1k per user, who cares. But if it takes up megabytes, there's something to worry about. The actual numbers will be dependent on your custom solution and you need to take your own measurements to make this judgement.

Hybrid navigation

Of course it's possible to have a combination of both stack and network navigation:


I wont go into details of the pro's and con's here as they are just a combination of the stack and network navigation characteristics.

Nested region navigation

"Nested regions navigation" is my name for when a page or page fragment embeds one or more separate regions to one or more separate Bounded Task Flows based on fragments. Unfortunately there's not an easy JDeveloper screenshot to describe this so we'll use a diagram instead:


The characteristics of this model:

  • The call from a region to a BTF can be thought of as a 2 level stack but where the state of the caller and the nested region BTF run in parallel.
  • Navigation within each BTF is independent of the parent task flow and as such can be any combination of the navigation models: stack, navigation or hybrid.
  • The nested BTF can communicate to the parent and other nested BTFs through parent actions or contextual events.
  • On termination of a nested BTF there is no way for the BTF to return parameters.
  • This includes the notion of inline popups containing regions within the parent page or fragment.
  • The more regions you have, the more memory and processing required for the page.
Parallel navigation

Finally returning to the model where one task flow calls another through a task flow call, task flow calls allows BTFs based on pages to be called either as an inline popup or external window.

The inline popup navigation is a kin to the "Nested region navigation" previously described.

The external window navigation is more complicated as this navigation occurs separately in a new browser window separate to the current browser window, thus the title "parallel navigation". While it doesn't have a separate HTTP session, it does have it's own pageFlowScope and it's operation is separate to that of the main window.

Conclusion

What can be seen from the different navigation models is they support different user experiences, different technical challenges and different features that can be utilised in each. It's simply not an understanding of task flows and their features ADF architects need. Rather an understanding of the different navigation models will help architects design new ADF applications.

If any readers come up with different navigation models I'd be glad to hear about them.


Classifying ADF Task Flow Navigation Choices

6 hours 37 min ago

Having written the Angels in the Architecture: An ADF Application Architectural Blueprint presentation in 2011 it spawned a number of side projects which I had scribbled down but taken no further. Starting at Oracle has given me a little more time to rummage through my notebooks and turn these ideas into blogs posts hopefully to help others.

In the Angels in the Architecture presentation there was an in depth look at how Bounded Task Flows (BTF) in JDeveloper 11g+ could be placed in their own workspace and published as ADF Libraries for reuse in a master composite ADF application. In consuming the BTFs in the master application, it isn't uncommon to make use of the consumed BTFs in a parent composite BTF that brings the moving parts together. This is truly one of the delights of BTFs, the ability to shuffle the bits around like Lego to build any application you want.

It was in this composition that I discovered another interesting area of BTFs yet to be documented, that of the different navigation models used beyond just the concepts of Unbounded Bounded Task (UTFs) vs Bounded Task Flows (BTFs). This blog posts takes a stab at describing the different models. It shouldn't be considered complete, just a starting point to help you understand the options, and a chance for me to change my scribbled notes into something more substantial.

Unbounded Task Flows vs Bounded Task Flows

Of course for ADF beginners it's worth going over the basics and describing the characteristics of Unbounded Task Flows (UTFs) and Bounded Task Flows (BTFs).

Unbounded Task Flows of which every application has at least one comprise the main page flow of your application. Whether you're building an application with many separate pages each with their own URL, or a single page desktop like application with portals/regions, you'll have a UTF.

In terms of navigation an example UTF looks as follows:


The navigation characteristics of a UTF many of which been documented before include:

  • There is no set start or end to the UTF (thus the name "unbounded"), the user can enter the application at any activity.
  • Navigation is a combination of user free-form and design time structured (explained further next)
  • Free-form allows the user to access any view activity via a URL.
  • Because of the free-form navigation model, the minimum amount of steps to get to any view activity is 1.
  • Isolated activities are still accessible thanks to their URLs.
  • Structured allows developers to optionally define uni or bi directional navigation between nodes.
  • Wildcards provide a uni-directional leap from a source activity to a defined destination activity.
  • The UTF has no defined exit points for the user. In fact every activity is an exit point, the user can leave the application at any point.

Bounded Task Flows navigation takes a more constrained approach to navigation:


The characteristics of navigation within BTFs include:

  • As the name suggests, they're bounded, with one entry point and one or more exit points for the user.
  • There is no free-form navigation, all navigation (both uni and bi-directional) must be through predefined navigation rules or wildcards.
  • You cannot access any activity inside the BTF by an addressable URL.
  • Because of the structured navigation model, the minimum number of steps to get to any activity within the BTF is dictated by the developer (unlike the free-form nature of UTFs).
  • Isolated nodes are inaccessible.
Inter-Task Flow navigation - task flow calls and regions

Before we investigate task flow navigations further, readers need to be familiar that the two mechanisms for tasks flows to call each other:

1) To call a task flow based on pages we must use a task flow call

2) To call a task flow based on page fragments, we must embed the page fragment task flow as a region in a page or another page fragment.

Note how I use the term task flow here rather than Unbounded or Bounded Task Flows. The mechanisms for the different types of task flows to call each other is the same across both.

In addressing point 2 above it is an interesting one as the idea of embedding brings us to the idea of the "stack".

Stack navigation

At its simplest "stack navigation" is when one task flows call another without terminating the first:


To be precise stack navigation occurs when:

  • A source task flow calls a destination task flow
  • Control is passed to the destination task flow until it terminates
  • Upon which control is passed back to the source/caller
  • During the stack the state of the source task flow is persisted
  • The state of the destination task flow only exists for its life

The easy analogy here for developers to understand is the 3GL equivalent of functions calling functions.

Of course the "stack" model can be extended and we can have a set of task flows calling each other in a deep stack:

Some points on the stack:

  • It's suitable for both page or page fragment task flows
  • Task flow calls and returns are what allow the stack to grow and shrink.
  • As we progress deeper into the stack, as the previous task flows are still live and their state stored in memory, we will consume more memory
  • On returning to a previous item in the stack, its state is restored in tact with out modifications needed.
  • It is well suited to logical drill up/down solutions.
  • There are no short cuts from the stack.
  • It's messy at design time to reorganize the stack if we get the stack order wrong.
  • Task flow parent actions or contextual events to manipulate the calling task flow are not possible.
  • Task flow calls allow a terminating task flow to pass parameters back to the caller.
Network navigation

"Network navigation" is where we chain a number of task flows together in one composite master.

Relevant points of the network navigation model:

  • It is suitable for both page or page fragment task flows
  • Navigation between flows is controlled by a master composite task flow.
  • It's very easy to reorganize the calling order in the composite task flow.
  • At most there's only the two task flows on the stack, the composite or the called task flow, thus reducing concerns on the memory consumed.
  • If we do return to a previously visited called task flow in the composite, to provide a seamless experience for the user where it appears we never left the task flow, we need to reestablish it's similar state to when we left it. This will optionally require more task flow parameters and more logic internally to reexecute previous processing.
  • Task flow parent actions or contextual events to manipulate the calling task flow are not possible.
  • Task flow calls still allow a terminating task flow to pass parameters back to the caller.
  • Better suited to logic path or wizard style interfaces (noting the similarity to trains).

At this point we can start to see one of the key differentiators technically with stack vs network navigation is the stack model takes more memory (depending on it's depth), while network takes less but may require more processing. Readers should be careful not to make an ill formed decision here as I've not given you any empirical evidence on which one is better or worse from an overhead point of view. As example if stack navigation only takes up 1k per user, who cares. But if it takes up megabytes, there's something to worry about. The actual numbers will be dependent on your custom solution and you need to take your own measurements to make this judgement.

Hybrid navigation

Of course it's possible to have a combination of both stack and network navigation:


I wont go into details of the pro's and con's here as they are just a combination of the stack and network navigation characteristics.

Nested region navigation

"Nested regions navigation" is my name for when a page or page fragment embeds one or more separate regions to one or more separate Bounded Task Flows based on fragments. Unfortunately there's not an easy JDeveloper screenshot to describe this so we'll use a diagram instead:


The characteristics of this model:

  • The call from a region to a BTF can be thought of as a 2 level stack but where the state of the caller and the nested region BTF run in parallel.
  • Navigation within each BTF is independent of the parent task flow and as such can be any combination of the navigation models: stack, navigation or hybrid.
  • The nested BTF can communicate to the parent and other nested BTFs through parent actions or contextual events.
  • On termination of a nested BTF there is no way for the BTF to return parameters.
  • This includes the notion of inline popups containing regions within the parent page or fragment.
  • The more regions you have, the more memory and processing required for the page.
Parallel navigation

Finally returning to the model where one task flow calls another through a task flow call, task flow calls allows BTFs based on pages to be called either as an inline popup or external window.

The inline popup navigation is a kin to the "Nested region navigation" previously described.

The external window navigation is more complicated as this navigation occurs separately in a new browser window separate to the current browser window, thus the title "parallel navigation". While it doesn't have a separate HTTP session, it does have it's own pageFlowScope and it's operation is separate to that of the main window.

Conclusion

What can be seen from the different navigation models is they support different user experiences, different technical challenges and different features that can be utilised in each. It's simply not an understanding of task flows and their features ADF architects need. Rather an understanding of the different navigation models will help architects design new ADF applications.

If any readers come up with different navigation models I'd be glad to hear about them.


slides from Saturday class

6 hours 51 min ago
Hi, Python students from Saturday! Hope you enjoyed the class, and thanks for your patience as we struggled with wireless issues.

Here's the updated class materials I promised - if you can, install Visual Python on your machine and try out some of the suggestions given in the comments at the bottom of move.py and gravity.py.

I'm very fortunate to be able to go to PyCon this year, and I plan to come to the Dayton Dynamic Languages meeting the following Wednesday (March 14) bubbling over with stuff I learn there - I'd love to see you there! Bring whatever Python project you've been working on and we'll help push you over any bumps you've hit, or strategize on ideas for new projects.


Upgrade Workshop in Bangkok - Slides

7 hours 32 min ago

Thank you very much for the warm welcome today at the Upgrade and Migration Workshop in Bangkok. Roy and me are very happy to be finally here.

You can download the most recent version of the slides via this link:
Upgrade and Migration to Oracle 11.2 Workshop Slides

Have successful upgrades - and let us know your experiences with the upgrades and migrations!
And hope to see you next time again!


Oracle Fusion Middleware 11g R1 (11.1.1.6.x) released !

7 hours 57 min ago
We are proud to announce the release of Oracle Fusion Middleware 11g R1 (11.1.1.6.x). This includes the following products: • Oracle WebLogic Server 11g R1 (10.3.6) • Oracle SOA Suite 11g R1 (11.1.1.6.0) • Oracle Business Process Management 11g R1 (11.1.1.6.0) • Oracle Complex Event Processing 11g R1 (11.1.1.6.0) • Oracle Service Bus 11g R1 (11.1.1.6.0) • Oracle Enterprise Repository 11g R1 (11.1.1.6.0) • Oracle Service Registry 11g R1 (11.1.1.6) • Oracle Application Integration Architecture Foundation Pack 11g R1 (11.1.1.6.0) • Oracle Data Integrator 11g R1 (11.1.1.6.0) • Oracle WebCenter Portal 11g R1 (11.1.1.6.0) (previously known as Oracle WebCenter Suite) • Oracle WebCenter Content 11g R1 (11.1.1.6.0) (previously known as Oracle Enterprise Content Management) • Oracle Identity Management 11g R1 (11.1.1.6.0) • Oracle Forms, Reports, Portal & Discoverer 11g R1 (11.1.1.6.0) • Oracle Traffic Director 11g R1 (11.1.1.6) • Oracle Repository Creation Utility 11g R1 (11.1.1.6.0) • Oracle JDeveloper & Application Development Framework 11g R1 (11.1.1.6.0) Download it from OTN : http://www.oracle.com/technetwork/indexes/downloads/index.html


And we're back.....

8 hours 48 min ago

The informal laws of blogging require every new blog to start with a special announcement "this is my first blog" so here's mine. (Phew, now the blogging police wont come after me).

Except of course this isn't my first blog at all.  As some readers will know this is just a continuation of my previous ADF blog on Blogger.  But now everything I say of course is from the other side of the fence as an Oracle employee, not a consultant.

Expect more ADF content soon!


This blog has moved!

8 hours 49 min ago
No really, it has! You can find my new Oracle blog here.

For the record this older blog will stay to allow readers to continue to benefit from the existing posts.

I hope to see you on the new blog!


Free Webinar Feb. 28, 2012: Oracle Fusion Applications – Financials Highlights

9 hours 17 min ago

Would you like to learn more about Fusion Financials? Are you pressed for time and have a limited travel budget?

If yes, then be sure to tune in to next Tuesday's free one hour Webinar on Oracle Fusion Applications – Financials Highlights. This is a virtual event that you can attend in the comfort of your desk.

What: Oracle Fusion Applications – Financials Highlights Lunchtime Webinar

Date: Tuesday February 28, 2012 

Time: 1:00 to 2:00 pm CET  (This means 4am PST and 7am EST).

Note: For those of you in the U.S. who don't want to wake up that early, this training will be recorded to be viewed after the event.
Click here to learn more and regster.

To access all the Fusion Applications training events held virtually and in the classroom, click here.


Why Telstra Chose Oracle Entitlements Server

9 hours 37 min ago

Telstra is an Australian telecom services company. This recent news article  highlights why organizations like Telstra are choosing Oracle Entitlements Server to simplify their identity and access management needs. 

There are instances where a telco customer can have multiple roles. For instance, a customer could be a mobile phone consumer. The same customer could also have a corporate account through his employer. And he could also be a guardian to his child’s mobile phone account. In Telstra’s case, this meant the customer would need three different logins to access each one of his accounts. This presents not just a difficult user experience for the customer. At the backend the application requires decoupling between a user and his roles at several different layers. One of the outcomes of this was slower response to change and slower service levels. The other challenge was higher costs and architectural complexity.

With Oracle Entitlements Server (OES), organizations like Telstra  can externalize and centralize fine grained authorization policies based on industry standards. Externalization of entitlements removes the complexity of building security policies into each application. Because security policies are maintained and evolved separately, organizations can focus their resources on streamlining business logic which leads to better operational efficiencies.

In Telstra’s case, deployment of OES enables a consumer to access all of his or her accounts from a single login using the same web interface. As customers navigate between accounts, policies are dynamically enforced and page content is customized at run time. Since users and their entitlements are decoupled from the application itself, changes to security policies can be decoupled from the application resulting in simpler architecture, better service levels and significant cost savings. And since OES is well integrated with other Oracle Access Management solutions, Telstra customers will be able to access and manage their accounts using their favorite social network login credentials.

To learn more about Oracle Entitlements Server, register here for a live product review webcast of OES hosted by SANS.


Streamlined Page Creation With WebCenter Portal Framework - Part 2

10 hours 1 min ago
Introduction 

On part 1 of this series of posts on streamlining the page creation process for WebCenter Portal applications I demonstrated how you can create a custom Task Flow that leverages the WebCenter's Page Service API. This is all good, but the next logical question is, how can I add this to an existing site navigation?

The Navigation Model

WebCenter Portal has a component called Navigation Model. It is responsible for managing all navigable resources on your website: simple pages, page queries, UCM content, custom resources, etc. It also provides a way of controlling how the resource URL will look like - this is what is called pretty URL. The Navigation Model is represented usually by an XML file called default-navigation-model.xml, but you can create your own navigation files:

At runtime this XML file representation is managed by MDS and you can modify it - add, remove, change resource nodes - through the Administration UI.All modifications are handled and stored by MDS which keeps track of the changes made at runtime:  


Extending The Sample Application 

Going back to the sample application provided on part 1, we can notice that after the page has been created the user is redirected to the page and it is already in edit mode on Oracle Composer - which is great, but we can also notice that the URL on the browser address bar is pointing to a rather clumsy page link that is all but pretty or friendly, or easy to remember: 


A  page is only as good as it can be accessed in an easy way after it is created. This is where we will leverage the Navigation Model to provide us a standard way of registering the page and navigating to it using a pretty URL.

The Navigation Model has two representations: one is its definition which is managed by MDS and it is represented as a Catalog - you can think of it as analog to a java class. The other is the actual navigation model which is analog to an instance of the Catalog. The navigation model instance is immutable, but the Catalog is mutable, and any changes to it will be reflected on the navigatiom model instance;

What this extended example does is

  • Get the current selected navigation resource where the newly created page is going to be inserted under.
  • Retrieve the Navigation Manager and look up the catalog element that defines the navigation resource. 
  • Create a new catalog element for the newly created page and add it as child of the catalog element found.
  • Flush MDS changes
  • Find the new navigation resource by its path and set it as the current selection
  • Navigate to the new navigation resource by forwarding to the GoLinkPrettyUrl property which keeps parameters such as _adf.ctrl-state. It is important to issue a forward because this way we can reflect the right pretty URL path in the brower's address bar. 
  • Display the page into Composer's Edit Mode. 

You can test this extended example (DOWNLOAD IT HERE) this way:

The landing page is the Home page. Log in as weblogic/weblogic1. You will see the "Create Page" button. Notice that there are three links on the navigation bar: "Accounting", "Marketing", and "Operations":


Create a new page,  call it  "Human Resources", pick the "Web Page" style, and hit OK.

You will see the created page in Edit Mode:


Close the edit mode and you will see the new page reflected on the Navigation Model, and the pretty URL correctly displayed in the address bar:


Now with  "Human  Resources" already selected, create a new "Benefits" page. This will put it as a child of  "Human Resources":


If you open the Administration UI this is what you will see.


To Be Continued... Again!!

So far we were able to simplify the creation of pages (part 1) and now we were able to take a step further and also modify the navigation model at runtime, with a 1 step process, pretty cool, uh? But wait, there's more! On part 3 of this series you will learn how you can seamlessly integrate with UCM  if there's a Content Presenter Task Flow on the page and automatically open it in contribution mode. Stay tuned!!



Streamlined Page Creation With WebCenter Portal Framework - Part 2

10 hours 1 min ago
Introduction 

On part 1 of this series of posts on streamlining the page creation process for WebCenter Portal applications I demonstrated how you can create a custom Task Flow that leverages the WebCenter's Page Service API. This is all good, but the next logical question is, how can I add this to an existing site navigation?

The Navigation Model

WebCenter Portal has a component called Navigation Model. It is responsible for managing all navigable resources on your website: simple pages, page queries, UCM content, custom resources, etc. It also provides a way of controlling how the resource URL will look like - this is what is called pretty URL. The Navigation Model is represented usually by an XML file called default-navigation-model.xml, but you can create your own navigation files:

At runtime this XML file representation is managed by MDS and you can modify it - add, remove, change resource nodes - through the Administration UI.All modifications are handled and stored by MDS which keeps track of the changes made at runtime:  


Extending The Sample Application 

Going back to the sample application provided on part 1, we can notice that after the page has been created the user is redirected to the page and it is already in edit mode on Oracle Composer - which is great, but we can also notice that the URL on the browser address bar is pointing to a rather clumsy page link that is all but pretty or friendly, or easy to remember: 


A  page is only as good as it can be accessed in an easy way after it is created. This is where we will leverage the Navigation Model to provide us a standard way of registering the page and navigating to it using a pretty URL.

The Navigation Model has two representations: one is its definition which is managed by MDS and it is represented as a Catalog - you can think of it as analog to a java class. The other is the actual navigation model which is analog to an instance of the Catalog. The navigation model instance is immutable, but the Catalog is mutable, and any changes to it will be reflected on the navigatiom model instance;

What this extended example does is

  • Get the current selected navigation resource where the newly created page is going to be inserted under.
  • Retrieve the Navigation Manager and look up the catalog element that defines the navigation resource. 
  • Create a new catalog element for the newly created page and add it as child of the catalog element found.
  • Flush MDS changes
  • Find the new navigation resource by its path and set it as the current selection
  • Navigate to the new navigation resource by forwarding to the GoLinkPrettyUrl property which keeps parameters such as _adf.ctrl-state. It is important to issue a forward because this way we can reflect the right pretty URL path in the brower's address bar. 
  • Display the page into Composer's Edit Mode. 

You can test this extended example (DOWNLOAD IT HERE) this way:

The landing page is the Home page. Log in as weblogic/weblogic1. You will see the "Create Page" button. Notice that there are three links on the navigation bar: "Accounting", "Marketing", and "Operations":


Create a new page,  call it  "Human Resources", pick the "Web Page" style, and hit OK.

You will see the created page in Edit Mode:


Close the edit mode and you will see the new page reflected on the Navigation Model, and the pretty URL correctly displayed in the address bar:


Now with  "Human  Resources" already selected, create a new "Benefits" page. This will put it as a child of  "Human Resources":


If you open the Administration UI this is what you will see.


To Be Continued... Again!!

So far we were able to simplify the creation of pages (part 1) and now we were able to take a step further and also modify the navigation model at runtime, with a 1 step process, pretty cool, uh? But wait, there's more! On part 3 of this series you will learn how you can seamlessly integrate with UCM  if there's a Content Presenter Task Flow on the page and automatically open it in contribution mode. Stay tuned!!



Things that make the internet great…

11 hours 10 min ago

Google Search Auto-complete.

Nuff said!

Cheers

Tim…


Immersion in Identity Talks Tomorrow (Feb 23)

11 hours 21 min ago

If Identity Management is top of mind for you then we have a healthy dose of Identity talks lined up for you tomorrow (Thursday, February 23).

IOUG Webcast: Analyzing Identity as a Platform Approach

Thursday, February 23, 12p EST/11a CST/9a PST

Join Michael Neuenschwander, a well known name in the industry and Senior Director, Oracle Identity Management, on an IOUG webcast to discuss Identity as a Platform approach. Hear first-hand Mike's take on the Platform approach, the rationale behind the same and the results from a study conducted on the subject.

Register to catch the webcast live tomorrow.

And then, right after the IOUG webcast, we have got a live webcast lined up for the Higher Ed industry. 

Live Webcast: Managing Identities and Roles in Higher Education

Thursday, February 23,  1p EST/12p CST/10a PST

At Oracle, we understand that higher education’s environment can be one of the most complex and dynamic environments for managing identities. There are many individuals coming and leaving each semester. Many individuals have more than one responsibility at the same time (Professor, Student, Researcher, Employee etc). These factors present a unique challenge in how to accurately determine what a users role should be so that least privilege security can be obtained and in doing so, regulatory compliance and security requirements can be fulfilled. An intelligent identity analytics solution is the answer.

Join the webcast tomorrow and you'll learn how Oracle Identity Analytics is already playing a crucial role in helping higher ed organizations achieve their security and compliance objectives. Learn the key capabilities required of an identity analytics solution that can help you scale your compliance across your entire IT infrastructure (on premise or in the cloud) in a cost effective manner. This webcast will feature Neil Gandhi, Principal Product Manager at Oracle.

Register today for the live webcast.


WebLogic Server 11g R1 (10.3.6) & JDeveloper & Application Development Framework 11g R1 (11.1.1.6.0) & Traffic Director 11g R1 (11.1.1.6) available for download

Thu, 2012-02-23 00:32

Your first experience #PS5 – let us know @wlscommunity – send us your tweets and blog posts! #WebLogicCommunity:

Maciej Gruszka WebLogic 11g PS 5 is ready for download. Great job

Jon petter WLS 10.3.6 New features, ex better logging of jdbc use: http://docs.oracle.com/cd/E23943_01/web.1111/e13852/toc.htm#NOTES185

Simon Haslam Downloaded #WebLogic & Coherence 10.3.6 fine from e-delivery. Will be a good use for 2h train journey home tomorrow evening

Lucas Jellema New in ADF 11g R1 PS5 Web UI Developer Guide: http://docs.oracle.com/cd/E23943_01/web.1111/b31973/whatsnew_adfui.htm#sthref8

Simon Haslam Handy: #WebLogic 10.3.6 includes a wildcard SSL hostname verifier – I had to write my own in the past. http://bit.ly/AfYOf3

Lucas Jellema FMW 11gR1 PS 5 – documentation library: http://docs.oracle.com/cd/E23943_01/index.htm

Edwin Biemond Support for MySQL: MySQL 5.5 is now a supported environment for Fusion Middleware, including the MDS database repository

ADF Code Corner Get Oracle JDeveloper 11.1.1.6 http://bit.ly/wGYrwE

Jon petter hjulstad Adminguide New and Changed Features for PS5, ex GridLink data sources: http://docs.oracle.com/cd/E23943_01/core.1111/e10105/whatsnew.htm#ASADM11777

OTNArchBeat Become a WebLogic Application Grid Specialist with our Free Vouchers! | @wlscommunity http://bit.ly/xGeIq6

The complete release of Oracle Fusion Middleware 11g R1 (11.1.1.6.x). includes the following products:

  • Oracle WebLogic Server 11g R1 (10.3.6)
  • Oracle SOA Suite 11g R1 (11.1.1.6.0)
  • Oracle Business Process Management 11g R1 (11.1.1.6.0)
  • Oracle Complex Event Processing 11g R1 (11.1.1.6.0)
  • Oracle Service Bus 11g R1 (11.1.1.6.0)
  • Oracle Enterprise Repository 11g R1 (11.1.1.6.0)
  • Oracle Service Registry 11g R1 (11.1.1.6)
  • Oracle Application Integration Architecture Foundation Pack 11g R1 (11.1.1.6.0)
  • Oracle Data Integrator 11g R1 (11.1.1.6.0)
  • Oracle WebCenter Portal 11g R1 (11.1.1.6.0) 
    (previously known as Oracle WebCenter Suite)
  • Oracle WebCenter Content 11g R1 (11.1.1.6.0)
    (previously known as Oracle Enterprise Content Management)
  • Oracle Identity Management 11g R1 (11.1.1.6.0)
  • Oracle Forms, Reports, Portal & Discoverer 11g R1 (11.1.1.6.0)
  • Oracle Traffic Director 11g R1 (11.1.1.6)
  • Oracle Repository Creation Utility 11g R1 (11.1.1.6.0)
  • Oracle JDeveloper & Application Development Framework 11g R1 (11.1.1.6.0)

WebLogic Partner Community

For regular information become a member in the WebLogic Partner Community please visit: http://www.oracle.com/partners/goto/wls-emea (OPN account required). If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn Mix Forum Wiki

Technorati Tags: ,,,,,,,,,