AMIS Oracle and Java Blog » Marcel van de Glind https://technology.amis.nl Friends of Oracle and Java Wed, 22 Jul 2015 12:28:48 +0000 en-US hourly 1 http://wordpress.org/?v=4.2.3 My first experiences with ThreadLogic https://technology.amis.nl/2015/04/16/my-first-experiences-with-threadlogic/ https://technology.amis.nl/2015/04/16/my-first-experiences-with-threadlogic/#comments Thu, 16 Apr 2015 18:20:41 +0000 https://technology.amis.nl/?p=35538 Share this on .. A while ago I came into touch with ThreadLogic. Most of the people whom I was talking about it, did not know the tool. This unfamiliarity with ThreadLogic made me decide to write this blog. I think that every WebLogic Administrator should know ThreadLogic and that it is also a very interesting [...]

The post My first experiences with ThreadLogic appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

A while ago I came into touch with ThreadLogic. Most of the people whom I was talking about it, did not know the tool. This unfamiliarity with ThreadLogic made me decide to write this blog. I think that every WebLogic Administrator should know ThreadLogic and that it is also a very interesting tool for Fusion Middleware Developers.

But let me start at the beginning. A while ago Michael Sahadat, a SOA/Integration Architect at Oracle, came over to help me solve a performance issue. He was using ThreadLogic and explained me how it helped us at the end to detect the performance bottleneck. But that I will explain later on. First I will tell about ThreadLogic.

Image 1

What is ThreadLogic?

ThreadLogic is a Thread Dump Analysis tool. Thread Dump Analysis is a key tool for performance tuning and troubleshooting of Java based applications.

Most TDA tools don’t mention the type of activity within a thread, should it be treated as normal or deserving a closer look? Can a pattern or anti-pattern be applied against them? Any possible optimizations? Are there any hot spots? Any classification of threads based on their execution cycles? ThreadLogic is created by the Oracle Fusion Middleware Architect Team (A-Team) to address these deficiencies.

Once a thread dump is parsed and threads details are populated, each of the thread is then analyzed against matching advisories and tagged appropriately. The threads are also associated with specific Thread Groups based on functionality or thread group name.

The current version of ThreadLogic is V2.0.217. Since version 2.0.215 it contains support for SOA 12c.

How did ThreadLogic help us?

After creating two threaddumps in WebLogic we loaded them in ThreadLogic. ThreadLogic immediately gave a Warning. Bottleneck among threads.

Image 2
Opening the dump tree and selecting the Advisory Map show a Map with information about the health of the system under investigation. Each of the advisory has a health level indicating severity of the issue found, pattern, name, keyword and related advice. As you can see in the picture below, our system has a number of FATAL and WARNING issues.

Image 3
When we selected Monitors in the tree, we saw that there was one red marked thread. 49 other threads where waiting for this one. Something’s seems to be wrong with the SchemaManager.

Image 4
After searching on Oracle Support we came to the following know issue: SOA Server Hangs Waiting for WSDLManager or SchemaManager (Doc ID 1546325.1)

Image 5
The solution for our performance issue turned out to install a missing patch.
Without getting in all the details of ThreadLogic I hope I have done my bit to increase the knowledge of ThreadLogic.

References:

ThreadLogic — Project Kenai – Java.net
Introducing ThreadLogic
ThreadLogic documentation page

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post My first experiences with ThreadLogic appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2015/04/16/my-first-experiences-with-threadlogic/feed/ 1
Updating composite properties on runtime (and being misled by the mbean browser) https://technology.amis.nl/2015/03/11/updating-composite-properties-on-runtime-and-being-misled-by-the-mbean-browser/ https://technology.amis.nl/2015/03/11/updating-composite-properties-on-runtime-and-being-misled-by-the-mbean-browser/#comments Wed, 11 Mar 2015 20:02:36 +0000 https://technology.amis.nl/?p=34646 Share this on .. Recently I walked into something strange. I had developed a simple composite application. The application is used to read a file and route the content to another service. The composite application contains composite properties as shown through the property inspector. Within the composite I am using a file-adapter to read a [...]

The post Updating composite properties on runtime (and being misled by the mbean browser) appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

Recently I walked into something strange.
I had developed a simple composite application. The application is used to read a file and route the content to another service.

image1

The composite application contains composite properties as shown through the property inspector.

image2

Within the composite I am using a file-adapter to read a file. The content of this file is pre-processed in an associated valve.
How to pre-process this file, depends on the value of the composite properties. When specifications are changing over time I want to change the value of these properties on runtime via the Enterprise Manager.

For this I user the System MBean Browser. In the MBean I selected: ‘Application Defined MBeans –> oracle.soa.config –> SCAComposite –> the SCAService in question’ –> and finally the properties. There I updated some of the properties and pressed the apply button to save my changes.

If you do not know exactly how to do this, the following six screenshots might be useful.

image3
image4
image5
image6
image7
image8

After updating some properties it was time for a test. To my suprise, the valve did not saw the updated values, but still retrieved the old values.
How could that be? To find this out I returned to the MBean browser. It still had the new values. So why are the not used?

The properties are also accessible via the service/reference properties. So I checkt these.

image9

Here I also saw the new values (even a reboot of the server did not change this). But stil the question: why are they not used?

image10

I found the solution in this screen. When I pressed the apply button in this screen, I got the question whether I would like to save my changes. After confirming this, the valve recognized the new values.

image11

So What did actually happened?

Some testing, brought me to the following analysis:

Applying in the MBean saves the values in the MBean. This MBean is part of/stored in weblogic. During application deployment the composite properties are extracted and added to this MBean.
Via the MBean browser these values are updated, and not the values in the composite. The valve I made is reading from the composite (using the getPipeline().getPipelineContext().getProperty() operations). These properties (and also the MBean properties) are updated when I used the method to update the properties via the service/reference properties. So in this use case the MBean browser is not useable and even very misleading.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Updating composite properties on runtime (and being misled by the mbean browser) appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2015/03/11/updating-composite-properties-on-runtime-and-being-misled-by-the-mbean-browser/feed/ 1
SOA/BPM Suite 12c: Oracle Business Rules – Verbal Rules https://technology.amis.nl/2014/06/27/soabpm-suite-12c-oracle-business-rules-verbal-rules/ https://technology.amis.nl/2014/06/27/soabpm-suite-12c-oracle-business-rules-verbal-rules/#comments Fri, 27 Jun 2014 18:55:23 +0000 http://technology.amis.nl/?p=28662 Share this on .. In this blog post I will transform a Decision Table step-by-step into the new Verbal Rules. As a starting point I created a composite with a BPM, a BPEL and a Rules component. Both BPM and BPEL components use the same Rules component. See the following three screenshots. You can download [...]

The post SOA/BPM Suite 12c: Oracle Business Rules – Verbal Rules appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

In this blog post I will transform a Decision Table step-by-step into the new Verbal Rules. As a starting point I created a composite with a BPM, a BPEL and a Rules component. Both BPM and BPEL components use the same Rules component. See the following three screenshots. You can download the sample application with this starting point from here.

image1
Composite View

image2
BPM Process

image3
BPEL Service

Open the sample application in JDeveloper 12c to follow the step-by-step example for a hands-on experience.

This blog is divided into the following four part:

  • Explore the sample Business Rule
  • Why Verbal Rules?
  • Creating Business Phrases
  • Creating Verbal Rules

Explore the sample Business Rule

Open the Business Rules file. You have access to it from two different places. From the BPM branch and the SOA branch.
image4
The excel integration is implemented for Decision Tables. As you can see in the image above there is a decision table ‘PensionDT’ available.  Open this table by double clicking on it’s name. The table has the following content:
image5
The input payload for this rule is information about a pension participant. The following information is supplied:

  • dateOfBirth
  • dateOfDeath (filled if participant past away)
  • dateOfJobEnd (when participant is not being productive anymore)
  • applicable Pension Products (OP: Old-age pension, WP: Orphan pension, PP: Widow’s pension)
  • Partner information
    • dateOfBirth
    • DateOfDeath (filled if partner past away)
  • Child(ren) information (for simplicity of the example, the rule currently supports only one child)
    • dateOfBirth
    • DateOfDeath (filled if child past away)

The output payload of this rule is a statement about the current pension status. Possible outcomes are:

  • Contributor (participant is productive and is paying contribution).
  • Sleeper (participant is not productive in this trust and is not paying contribution).
  • Notified contributor  (participant is productive, but get’s retired within a year).
  • Retired (participant has ended his working career and receives an old-age pension).
  • Widow and / or Orphan (participant has died. The widow and / or orphan’s receive a pension).
  • Out Of Scope (e.g. participant and relatives all died).

Why Verbal Rules?

Usually procedural knowledge can be communicated only by demonstrating its application in specific cases. The concise, linguistic form of verbal rules permits the communication of general procedural knowledge in a relatively easy manner; the linguistic form may also be easier to memorize and retrieve than sequences of actions. Thus, verbal rules may be a useful instructional method for procedural tasks. For example, that the rule “a before b, except after c” is easy to communicate, memorize and retrieve is probably verified by the reader’s experience with this rule. Traditional (before 12c) Business Rules and Decision Tables point out to be difficult to understand for Business Analysts and Users. The possibility to formulate them in a more natural way was lacking. Verbal Rules potentially might bridge this cap.

Creating Business Phrases

A verbal rules can be constructed by concatenating several phrases in business language. Depending on the rules input and output data a number of default phrases are available, but it is also possible to define custom phrases. In this paragraph I will show how to do this.
To create verbal rules as a substitute for the PensionDT decision table the phrases required is somewhat arbitrary. Select the Business Phrases tab to start creating phrases. Click the green plus sign in the right upper corner to start creating a new phrase. You have the possibility to create a test phrase and an action phrase. First lets start with a test phrase.
image2
The Business Phrase editor appears.
Now lets define a phrase for a living old-age pension participant. First define a parameter of type ‘member’. The member contains information about the participant which was defined as the input payload of the business rule. After that specify the phrase in the value field. In here define the position of the parameter by entering it’s name between parenthesis. Finally define the mapping as a general rule.
image3
Besides this test phrase I defined eight other test phrases (listed below) and one action phrase (pension status) for the outcome of the rule.

  1. participant has beneficiary relatives –> indicated whether the participant has a living beneficiary partner or children
  2. participants age between .. and ..
  3. participant is living
  4. participant is not living
  5. participant is older than ..
  6. participant is younger than ..
  7. participant is working
  8. participant is not working

Some of these phrases are show below.
image4
image5
image6
image7

Creating Verbal Rules

After creating these phrases it’s time to start defining the verbal rules. For this select the Verbal Rules tab and then click the create Verbal Rule button.
image13
We will start to define the ‘Relatives Pension Payment’ rule. This rule check whether the pension participant past away and has beneficiary relatives. When this is the case the pension status is set to ‘Widow and/or Orphan’. First select the field. From here it is possible to construct the rule by entering the required business phrases. We want to know if the participant is not living anymore. When you type the letter ‘l’ a wizard will show all business phrases containing this letter. Select the phrase ‘member is not living’ we earlier defined.
image14a
Continue to construct the rest of the rule. Play a little around with the phrase selector to get a good feeling of how it works. After creating all five rule you should have some basic understanding of the new verbal rules feature.
image14
image15
image16
image17
image18
The overview tab shows the final result.
image19

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post SOA/BPM Suite 12c: Oracle Business Rules – Verbal Rules appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/06/27/soabpm-suite-12c-oracle-business-rules-verbal-rules/feed/ 2
SOA/BPM Suite 12c: Oracle Business Rules – MS Excel Integration https://technology.amis.nl/2014/06/27/soabpm-suite-12c-oracle-business-rules-ms-excel-integration/ https://technology.amis.nl/2014/06/27/soabpm-suite-12c-oracle-business-rules-ms-excel-integration/#comments Fri, 27 Jun 2014 17:23:56 +0000 http://technology.amis.nl/?p=28660 Share this on .. In this blog post I will give a step-by-step example of the Excel integration for Business Rules. As a starting point I created a composite with a BPM, a BPEL and a Rules component. Both BPM and BPEL components use the same Rules component. See the following three screenshots. You can [...]

The post SOA/BPM Suite 12c: Oracle Business Rules – MS Excel Integration appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

In this blog post I will give a step-by-step example of the Excel integration for Business Rules. As a starting point I created a composite with a BPM, a BPEL and a Rules component. Both BPM and BPEL components use the same Rules component. See the following three screenshots. You can download the sample application with this starting point from here.

image1
Composite View

image2
BPM Process

image3
BPEL Service

Open the sample application in JDeveloper 12c to follow the step-by-step example for a hands-on experience.

This blog is divided into the following four part:

  • Explore the sample Business Rule
  • Export the Business Rule to MS Excel
  • Edit the Business Rule in MS Excel
  • Import the Business Rule from MS Excel

Explore the sample Business Rule

Open the Business Rules file. You have access to it from two different places. From the BPM branch and the SOA branch.
image4
The excel integration is implemented for Decision Tables. As you can see in the image above there is a decision table ‘PensionDT’ available.  Open this table by double clicking on it’s name. The table has the following content:
image5
The input payload for this rule is information about a pension participant. The following information is supplied:

  • dateOfBirth
  • dateOfDeath (filled if participant past away)
  • dateOfJobEnd (when participant is not being productive anymore)
  • applicable Pension Products (OP: Old-age pension, WP: Orphan pension, PP: Widow’s pension)
  • Partner information
    • dateOfBirth
    • DateOfDeath (filled if partner past away)
  • Child(ren) information (for simplicity of the example, the rule currently supports only one child)
    • dateOfBirth
    • DateOfDeath (filled if child past away)

The output payload of this rule is a statement about the current pension status. Possible outcomes are:

  • Contributor (participant is productive and is paying contribution).
  • Sleeper (participant is not productive in this trust and is not paying contribution).
  • Notified contributor  (participant is productive, but get’s retired within a year).
  • Retired (participant has ended his working career and receives an old-age pension).
  • Widow and / or Orphan (participant has died. The widow and / or orphan’s receive a pension).
  • Out Of Scope (e.g. participant and relatives all died).

Export the Business Rule to MS Excel

In the top menubar of the Decision Table a new <strong>Excel menu is available. Select ‘Export To Excel..’ from this drop-down menu.
image6
The ‘Export To Excel’ dialog appears. Specify the filename (and location) for the Excel file.
image7
After that, click the green plus sign to select the Decision Table that’s being exported.
image8
Then click the Export button to actually create the file.
image9
Because JDeveloper is running (in my case) on a Linux machine without MS Excel, I first have to move the created Excel file to a machine with Excel. After that we can start to use it.

Edit the Business Rule in MS Excel

Open the created ‘OBR_Excel.xslm’ file. It is an Excel file with macro’s. So macro’s must be enabled, as shown on the ReadMe sheet. The ReadMe sheet also describes the structure of the Excel file and the supported operations. It’s best to read and understand these before starting to edit the sheet.
image11
Besides the ReadMe sheet, there’s a sheet with the used ValueSets and a sheet with de PensionDT Decision Table. The ValueSets sheet contains a bucket set for the supported products and a bucket set for the different age ranges.
image12
image13
The Oracle Business Rules menu provides convenient options to perform the following operations.

  • Add/Delete Rule
  • Modify Rules
    • Edit a Decision Table cell
    • Merge/Split Cells
  • Add description to a Rule/Condition/Action using their Labels

image14

Change Bucket Value

Currently the ValueSet has an age range whereas the ‘Old-age pension’ starts at an age of 65. Lets assume the law is changing this to 66. To implement this change, update all the bucket values as shown below.
image14

Add Bucket

Next assume that participants younger than 25 have to pay a lower contribution. To implement this, we need an additional bucket and a new rule in the decision table. First add the bucket. For this, select one of the buckets (e.g. <65). Then click the ‘Add Value’ menu button.
image15
A popup appears where you can enter the new range splitter. Enter 25.
image16
As you can see the ranges are automatically updated.
image17
As you like, you can also update the bucket names. These will be shown in the decision table.
image18
Now we are going to modify the decision table. Select the PensionDT sheet. Then first update the used age labels via the drop-down lists on the C4 row. Implicitly this also means that we have update the used age range from 65 tot 66.
image19

Add Rule

Next we also need to add a rule for the youngster. For this click the ‘add rule’button in the ‘Oracle Business Rule’ menu. As a result of this the Decision Table is extended with an additional column.
image20
Now it is probably the best time to play arround a little bit with the table. Before continuing, modify the table until you have the following result:
image21
Make sure you have saved the modified Excel file before quitting MS Excel and continuing with the next step. Also make sure the file is at a location where JDeveloper can reach it.

Import the Business Rule from MS Excel

Go back to JDeveloper to import the modified excel file into the Decision Table. In the top menubar of the Decision Table select ‘Import From Excel..’.
image22
The ‘Import From Excel’ dialog appears. Select the modified Excel file to import.
With ‘Perform Diff-Merge On Import’ checked off you have the possibility to create a new Decision Table or to overwrite an existing one.
image23
We will used the ‘Perform Diff-Merge On Import’ checked on to demonstrate the Diff-Merge functionality. In our case it is not needed to specify a Base Dictionary.
image24
After the import a ‘Delta’ sign appears on several places to notify that there are differences between the original Decision table and the imported table. In the top left corner there are two buttons you can use to ‘approve’ or ‘reject’ all changes at once. Don’t do this yet !!!.
image25
Open the Decision Table. There you see the same thing on a lower level. You see that the new added column is there and that the modified Age labels are shown next to their old value.
image26
Right click one one of these changes. You will see a menu that gives the possibility to approve or reject an individual change.
image27
Select the option and a new popup will appear. Select Approve for this change. Repeat this for all changes one-by-one or approve them all at once if you like.
image28
Now something strange happened. All Age label changes result in an error message.
image29
This is caused by the fact that labels are not updated in the translation file.
image30
You have to do these translations by hand.
image31
After saving and reopening the rules file, the problems are solves. The Decision table reflects all the modification made from within MS Excel.
image32
This brings me to the end of this step-by-step overview of the MS Excel integration of Oracle Business Rules. If you like to practice a little more you can try to update the PP-rule so that it is only used for the widow and add an additional rule for the orphan(s).

To my opinion this integration really can help to bring understanding and control over the implemented Business Rules to ‘THE BUSINESS’, where it belongs.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post SOA/BPM Suite 12c: Oracle Business Rules – MS Excel Integration appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/06/27/soabpm-suite-12c-oracle-business-rules-ms-excel-integration/feed/ 1
Humantask Assignment: Names and Expressions Assignment via Rules https://technology.amis.nl/2014/04/13/humantask-assignment-names-and-expressions-assignment-via-rules/ https://technology.amis.nl/2014/04/13/humantask-assignment-names-and-expressions-assignment-via-rules/#comments Sun, 13 Apr 2014 07:19:40 +0000 http://technology.amis.nl/?p=27365 Share this on .. This blog post is part of a series of posts about humantask assignment. You can find the starting point of this series by following the next link. In this post I will give an example of task assignment by Names And Expressions using Oracle Business Rules. I will use the same [...]

The post Humantask Assignment: Names and Expressions Assignment via Rules appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a series of posts about humantask assignment. You can find the starting point of this series by following the next link.

In this post I will give an example of task assignment by Names And Expressions using Oracle Business Rules. I will use the same BPM process as in most of the other posts in this series.
Screenshot12
Now we have the process, we can assign the task to a representative, group of representatives or role. For this open the taskfile and select the assignment tab.
assignment tab
Edit the default.DefaultPerformer. Select Rule-based and specify the ruleset e.g. NamesAndExpressionsRule.
Screenshot
After selecting OK, the business rules can be specified. Because the process does not have a payload it is not possible to use input data to influence the behavior of the business rules. For this reason I have used priority, one of the many task properties, to control the bussiness rule behavior.
Screenshot-1
The picture below shows the two implemented rules. The first rule “High Priority” assigns the task to taskGroup1 when the priority has the value 1 or 2. The second rule “Low Priority” assigns the task to taskGroup2 when the priority has a value of three or higher.
Screenshot-2
The priority can be set on the General tab of the task. This is during development time. This means that the process must be redeployed when the priority is changed.
Screenshot-3
After deployment of the process we can start new instances via the EM.
Screenshot-4
As a first example I will test it with priority = 2. The task is assigned to TaskGroup1.
Screenshot-5
As you can see in the trace of the rules the High Priority rule is executed.
Screenshot-6
And a second example with the priority = 4.
Screenshot-7
The Low Priority rule is executed. Which means that the task is assigned to taskGroup2.
Screenshot-8
And the task trace …
Screenshot-9
The example shows a very basic implementation of task assignment with the help of Oracle Business Rules. From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: Names and Expressions Assignment via Rules appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/04/13/humantask-assignment-names-and-expressions-assignment-via-rules/feed/ 0
Humantask Assignment: Assignment via External Routing https://technology.amis.nl/2014/04/06/humantask-assignment-assignment-via-external-routing/ https://technology.amis.nl/2014/04/06/humantask-assignment-assignment-via-external-routing/#comments Sun, 06 Apr 2014 07:15:34 +0000 http://technology.amis.nl/?p=27332 Share this on .. This blog post is part of a series of posts about humantask assignment. You can find the starting point of this series by following the next link. This post gives an example of task assignment via External Routing. I will use the same BPM process as in most of the other [...]

The post Humantask Assignment: Assignment via External Routing appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a series of posts about humantask assignment. You can find the starting point of this series by following the next link.

This post gives an example of task assignment via External Routing. I will use the same BPM process as in most of the other posts.
Screenshot12
The implementation of the External Routing is done in a custom java class that implements the IAssignmentService interface.
Screenshot-5
The following picture shows the implementation of this class. The task is assigned to taskGroup1 in the OnInitiation method. This method is executed when the task is activated for the first time. The OnOutcomeUpdated method is executed every time an outcome is selected in the task. Depending on the user who handled the task, the task is reassigned in this method to taskGroup2 or the task stops by assigning the task to nobody (task is handled by taskUser3).
Screenshot-14
After creating and compiling the class, It must become available for use. For this copy the class to the following location: /Oracle_SOA1/soa/modules/oracle.soa.ext_11.1.1/classes. You must restart the WebLogic Server after you put your class files there.
Screenshot
On the assignment tab of the humantask, click the pencil in the upper right corner to attach the class to the humantask.
Screenshot-9
The Configure Assignment screen appears. Select Use External Routing.
Screenshot-6
Enter the class name.
Screenshot-7
After selecting OK, you get the following warning. Select Yes to continue.
Screenshot-8
Now it’s time to do some testing. After deployment of the process we can start a new instance via the EM.
The following image shows the situation where the task is only handled by taskUser3.
Screenshot-11
The following image shows a situation that the task is first handled by taskUser1 and after that by taskUser3 (which will finish the task).
Screenshot-10
This brings me to the end of this example. The example shows a very simple and straight forward implementation of the External Routing. The example shows the situation where the task is handle by one representative and a situation where it is handled by two representatives. This dynamic length routing is a very powerful feature of the External Routing functionality.
From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: Assignment via External Routing appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/04/06/humantask-assignment-assignment-via-external-routing/feed/ 3
Humantask Assignment: Assignment with Dynamic Approval Group https://technology.amis.nl/2014/03/24/humantask-assignment-assignment-with-dynamic-approval-group/ https://technology.amis.nl/2014/03/24/humantask-assignment-assignment-with-dynamic-approval-group/#comments Mon, 24 Mar 2014 22:55:02 +0000 http://technology.amis.nl/?p=27139 Share this on .. This blog post is part of a series of posts about humantask assignment. You can find the starting point of this series by following the next link. This post gives an example of task assignment with a Dynamic Approval Group. I will use the same BPM process as in most of [...]

The post Humantask Assignment: Assignment with Dynamic Approval Group appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a series of posts about humantask assignment. You can find the starting point of this series by following the next link.

This post gives an example of task assignment with a Dynamic Approval Group. I will use the same BPM process as in most of the other posts.
Screenshot12
The implementation of the Dynamic Approval Group is done in a custom java class that implements the IDynamicApprovalGroup interface.
Screenshot
The following picture shows the implementation of this class for this post. The group consist of the users taskUser1 and taskUser5. This means that one of these users must handle the task.
Screenshot13
After creating and compiling the class, It must become available for use. For this copy the class to the following location: /Oracle_SOA1/soa/modules/oracle.soa.ext_11.1.1/classes. You must restart WebLogic Server after you put your class files there.
Screenshot-1
And of course you must assign the class to the humantask.
Screenshot-4
And finally you must add the dynamic approval group from the Business Process Workspace. Go to the Administration page. Under Task Administration, select Approval Groups. Click the Add (+) button and select Create Dynamic Approval Group.
Screenshot-2
Give the group a name and specify the class name. Click Save to finish the step.
Screenshot-3
After deployment of the process we can start new instances via the EM.
Screenshot14
This brings me to the end of this example. The example shows a very simple and straight forward implementation of the Dynamic Approval Group. In a real business implementation you will probably never see a hard coded implementation like this. For example it would be more obvious as the users were loaded from a database table. I will show this in a future post of this series. From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: Assignment with Dynamic Approval Group appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/03/24/humantask-assignment-assignment-with-dynamic-approval-group/feed/ 0
Humantask Assignment: Assignment by Names And Expressions https://technology.amis.nl/2014/03/09/humantask-assignment-assignment-by-names-and-expressions/ https://technology.amis.nl/2014/03/09/humantask-assignment-assignment-by-names-and-expressions/#comments Sun, 09 Mar 2014 20:39:28 +0000 http://technology.amis.nl/?p=26039 Share this on .. This blog post is part of a series of posts about humantask assignment. You can find the starting point of this series by following the next link. In BPEL it is not possible to assign a task to a lane participant. The most simple assignment in BPEL is by Names and [...]

The post Humantask Assignment: Assignment by Names And Expressions appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a series of posts about humantask assignment. You can find the starting point of this series by following the next link.

In BPEL it is not possible to assign a task to a lane participant. The most simple assignment in BPEL is by Names and Expressions. In this post I will show this kind of assignment for both a BPEL and a BPMN process. In fact there is no difference between BPEL and BPMN. In this example I created a composite with a BPM component and a BPEL component. Both the BPEL process and the BPM process only contain a humantask. Actually it is the same humantask as show in the picture below.
composite
The BPM process model
BPM process
and the BPEL process model
BPEL process
The main difference between BPM and BPEL is that when you add a humantask to the process, BPEL automatically creates branches for all possible task outcomes and BPM does not. You have to create them yourself.

The humantask is created with all the defaults settings.
create task
create task implementation
Now the process is ready, so we can assign the task to a representative or group of representatives. For this open the taskfile and select the assignment tab
assignment tab
Edit the default performer entry. Select ‘Names and Expressions’ in the drop-down list for the Participant list.
Assign taskGroup1 by name and the userName which is part of the payload by expression.
taskGroup1 contains taskUser1, taskUser2 and taskUser3. In the process the userName is filled with taskUser4.
participant type
By Name
By Expression
After deployment of the process and assigning the role to an existing user in the BPM workspace ..
users
.. we can start new instances via the EM.
The BPM Instance
trace
And the BPEL Instance
bpel trace
Opening the BPM workspace and login in as one of the assigned users (taskUser1 .. taskUser4) will show both the open BPEL as the BPM humantask.
tasksBPM
And the BPM worklist also shows them both
tasksSOA
The task form is not actually created but the task does exist, and the outcome can be set via the menu.
approve
This brings me to the end of this example. The example shows the most simple method for taskassignment available in Oracle SOA suite and BPM suite. From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: Assignment by Names And Expressions appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/03/09/humantask-assignment-assignment-by-names-and-expressions/feed/ 0
Humantask Assignment: parallel participants https://technology.amis.nl/2014/03/02/humantask-assignment-parallel-participants/ https://technology.amis.nl/2014/03/02/humantask-assignment-parallel-participants/#comments Sun, 02 Mar 2014 08:30:08 +0000 http://technology.amis.nl/?p=26536 Share this on .. This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link. This post gives an example of the parallel participant assignment. Multiple participants can work in parallel on the same task. The following picture shows the [...]

The post Humantask Assignment: parallel participants appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link.

This post gives an example of the parallel participant assignment. Multiple participants can work in parallel on the same task.

proces

The following picture shows the assignment tab of the humantask.

assignment

As you can see, there are three parallel participants. Each of them is assigned to the current lane participant. Even though this is not a very realistic design (because this results into three tasks at the same time for each representative in the BPM workspace), it really good shows the behavior of parallel assignment.
Lets asume that when two out of the three assignments are handled the process can continue. Handling the third one is not necessary. This functionality can be configured via the routing graph. For this double click the pencil.

Set the voting percentage to any value between 34 and 66 and select ‘Immediately trigger voted outcome when minimum percentage is met’. That’s it.
vote

After deployment of the process and assigning the role to an existing user in the BPM workspace ..

role_group definition

(taskGroup1 contains the users taskUser1, taskUser2 and taskUser3)
.. we can start a new instance via the EM.

trace

Opening the BPM workspace and login in as one of the assigned users will show the open humantask three times (ones for each parallel assignment).

taken1

After approving the task twice, the task has the following trace.

trace

The trace shows that the task is twice approved by taskuser1 and ones (automatically) by the workflowsystem.

This brings me to the end of this very simple example. The example shows the behavior of the humantask in the workspace when applying parallel assignment. From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: parallel participants appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/03/02/humantask-assignment-parallel-participants/feed/ 0
Humantask Assignment: sequential participants (four-eyes principle & sticky user) https://technology.amis.nl/2014/02/23/humantask-assignment-sequential-participants-four-eyes-principle-sticky-user/ https://technology.amis.nl/2014/02/23/humantask-assignment-sequential-participants-four-eyes-principle-sticky-user/#comments Sun, 23 Feb 2014 08:28:17 +0000 http://technology.amis.nl/?p=26460 Share this on .. This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link. If you look at the example in Humantask Assignment: not the same lane participant as previous task (four-eyes principle) you see two sequential humantasks. If these [...]

The post Humantask Assignment: sequential participants (four-eyes principle & sticky user) appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link.

If you look at the example in Humantask Assignment: not the same lane participant as previous task (four-eyes principle) you see two sequential humantasks. If these humantasks are both connected with the same task form there might be another method available to model the four-eyes principle. Namely: assigning participants sequentially to the same humantask. This means that there will be only one humantask in the process model.

processmodel

Open the task file and add a sequential participant block by clicking the green plus sign and then selecting the ‘sequential participant block’ menu option. In the example I used the default name “Stage1.Participant1″. Be sure that both participant are set to the current lane participant. It’s the same as in Humantask Assignment: not the same lane participant as previous task (four-eyes principle). This means that it is possible that both tasks are handled by the same representative. And this is not what we want…

We need to change an overall task setting. For this select the pencil in the right upper corner.
sequential participant block

Select the assignment tab. At the bottom you see the field “Participants Exclusion List”. In here select the “Previous Lane Participant”. This will do the thing. Now the four-eyes principle is implemented. Is it?

configure

After deployment of the process and assigning the role to an existing user in the BPM workspace ..

users

.. we can start a new instance via the EM.

trace

Opening the BPM workspace and login in as one of the assigned users will show the open first humantask.

task in workspace

The task form is not actually created but the task does exist, and the outcome can be set via the menu.

approve

After approving the task, the task has the following trace.

trace1

As you can see the task is assign to the role TaskAssignmentTemplate.FirstTaskRole and is handle by taskuser1. Because of the sequential assignment the task is not closed yet but it is reassigned to the next participant. This means that the second assignment should not be handled by taskuser1. As a result of this, taskuser2 who is also a member of the swimming lane role must handle the task. If we compare it with Humantask Assignment: not the same lane participant as previous task (four-eyes principle) then both taskuser1 and taskuser2 will see the task in there BPM workspace where only taskuser2 can handle the task.
In this case, this is not true. Both participants can handle the task. To me this is an unexpected result. I was expecting the same behavior as in the example with two tasks.
The trace after handling the task by taskuser1 again.

trace2

Lets see if we can change the example to the sticky user example of Humantask Assignment: same lane participant as previous task (sticky user) to find an explanation for this behavior. For this change the assignment of the “Stage1.Participant1″ to “Previous Lane Participant” and redeploy the process. After testing this I became a bit confused. The sticky user seems to work fine. Am I doing something wrong, is it not implemented or is it a bug?

trace3
As a conclusion, using sequential participants assignment simplified the process model, but in this simple form the functionality is limited. Sequential participants assignment is not solving the four-eyes principle requirement. The sticky user requirement is working fine but I do not really can think of a use-case for it.

This brings me to the end of this example. From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: sequential participants (four-eyes principle & sticky user) appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/02/23/humantask-assignment-sequential-participants-four-eyes-principle-sticky-user/feed/ 2
Humantask Assignment: not the same lane participant as previous task (four-eyes principle) https://technology.amis.nl/2014/02/20/humantask-assignment-not-the-same-lane-participant-as-previous-task-four-eyes-principle/ https://technology.amis.nl/2014/02/20/humantask-assignment-not-the-same-lane-participant-as-previous-task-four-eyes-principle/#comments Thu, 20 Feb 2014 07:19:53 +0000 http://technology.amis.nl/?p=26391 Share this on .. This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link. This post handles the assignment of a task to a different participant as the one who handled the previous task (four-eyes principle). This is [...]

The post Humantask Assignment: not the same lane participant as previous task (four-eyes principle) appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link.

This post handles the assignment of a task to a different participant as the one who handled the previous task (four-eyes principle). This is the opposite of the blog Humantask Assignment: same lane participant. The difference is in the definition of the second humantask. For the rest it’s all the same. The following picture shows the resulting composite.

composite

The BPM process model
process

The second humantask is similar to the first humantask. The performer of both the tasks is ‘anyone in role’ / ‘Current Lane Participant’. This means that it is possible that both tasks are handled by the same representative. And this is not what we want…

We need to change an overall task setting. For this select the pencil in the right upper corner.

assignment 4 ogen sprincipe

Select the assignment tab. At the bottom you see the field “Participants Exclusion List”. In here select the “Previous Lane Participant”. This will do the thing. Now the four-eyes principle is implemented.

configure

 After deployment of the process and assigning the role to an existing user in the BPM workspace ..

users

.. we can start a new instance via the EM.

trace

Opening the BPM workspace and login in as one of the assigned users will show the open first humantask.

task in workspace

The task form is not actually created but the task does exist, and the outcome can be set via the menu.

approve

After approving the task, the task has the following trace.

task flow

As you can see the task is assign to the role TaskAssignmentTemplate.FirstTaskRole and is handle by taskuser1. This means that the second task should not be handled by taskuser1. As a result of this, taskuser2 who is also a member of the swimming lane role must handle the task. Both taskuser1 and taskuser2 will see the task in there BPM workspace. Only taskuser2 can handle the task. Taskuser1 does not have the menu options to handle the task.

workspace

The trace of the second task

trace

This brings me to the end of this example. From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: not the same lane participant as previous task (four-eyes principle) appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/02/20/humantask-assignment-not-the-same-lane-participant-as-previous-task-four-eyes-principle/feed/ 2
Humantask Assignment: same lane participant as previous task (sticky user) https://technology.amis.nl/2014/02/16/humantask-assignment-same-lane-participant-as-previous-task-sticky-user/ https://technology.amis.nl/2014/02/16/humantask-assignment-same-lane-participant-as-previous-task-sticky-user/#comments Sun, 16 Feb 2014 12:18:30 +0000 http://technology.amis.nl/?p=26313 Share this on .. This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link. This post handles the assignment of a task to the same participant as the one who handled the previous task (sticky user). To demonstrate this [...]

The post Humantask Assignment: same lane participant as previous task (sticky user) appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link.

This post handles the assignment of a task to the same participant as the one who handled the previous task (sticky user). To demonstrate this I have extended the example of the blog Humantask Assignment: current lane participant. A second humantask is added to the process. This task is assigned to the same participant as the previous task. The following picture shows the resulting composite.

composite

The BPM process model
process

The second humantask is created with almost all the defaults settings. Instead of selecting ‘anyone in role’ as performer the ‘previous performer’ is selected. That’s all the difference.

task2create

It is still posible to change the assignment after creating the task. For this open the taskfile.
project tree

Select the assignment tab
assignment tab

Select the ‘Previous lane participant’.
participant type

After deployment of the process and assigning the role to an existing user in the BPM workspace ..

users

.. we can start a new instance via the EM.

trace

Opening the BPM workspace and login in as one of the assigned users will show the open first humantask.

task in workspace

The task form is not actually created but the task does exist, and the outcome can be set via the menu.

approve

After approving the task, the task has the following trace.

task flow

As you can see the task is assign to the role TaskAssignmentTemplate.FirstTaskRole and is handle by taskuser1. This means that the second task also should be handled by taskuser1. The task is assigned to taskuser1. As a result of this, taskuser2 who is also a member of the swimming lane role won’t see the task in the BPM Workspace. Taskuser1 has restricted access to the task.

second assignee approved

This brings me to the end of this example. From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: same lane participant as previous task (sticky user) appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/02/16/humantask-assignment-same-lane-participant-as-previous-task-sticky-user/feed/ 0
Humantask Assignment: current lane participant https://technology.amis.nl/2014/02/13/humantask-assignment-current-lane-participant/ https://technology.amis.nl/2014/02/13/humantask-assignment-current-lane-participant/#comments Thu, 13 Feb 2014 08:44:28 +0000 http://technology.amis.nl/?p=25949 Share this on .. This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link. Assigning a task to the current lane participant is more or less the default setting when using humantasks. To demonstrate the assignment of the [...]

The post Humantask Assignment: current lane participant appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is part of a blog post serie about humantask assignment. You can find the starting point of this series by following the next link.

Assigning a task to the current lane participant is more or less the default setting when using humantasks.

To demonstrate the assignment of the humantask to the current lane participant I have created a simple BPM process that only contains a humantask activity. The following picture shows the resulting composite.
composite1

The BPM process model

BPM process

The humantask is created with all the defaults settings (performer is anyone in role).

create task

create task implementation

The process is ready, so we can assign the task to a representative or group of representatives. For this open the taskfile

project tree

Select the assignment tab

assignment tab

Edit the default performer entry. You see the task is assign to the current lane participant. This means the name of the role / swimming lane the task is in. This is as meant, no change required.

participant type

After deployment of the process and assigning the role to an existing user in the BPM workspace ..

users

.. we can start a new instance via the EM.

trace

Opening the BPM workspace and login in as one of the assigned users will show the open humantask.

task in workspace

The task form is not actually created but the task does exist, and the outcome can be set via the menu.

approve

After approving the task, the task has the following trace.

task flow

As you can see the task is assign to the role TaskAssignmentTemplate.FirstTaskRole and is handle by taskuser1.

This brings me to the end of this example. The example shows the most simple method for taskassignment available in Oracle BPM suite. From here you can download the sample project.

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment: current lane participant appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/02/13/humantask-assignment-current-lane-participant/feed/ 0
Humantask Assignment in Oracle BPM Suite and SOA Suite https://technology.amis.nl/2014/02/13/humantask-assignment-in-oracle-bpm-suite-and-soa-suite/ https://technology.amis.nl/2014/02/13/humantask-assignment-in-oracle-bpm-suite-and-soa-suite/#comments Thu, 13 Feb 2014 08:37:46 +0000 http://technology.amis.nl/?p=25920 Share this on .. This blog post is the starting point of a series of posts about humantask assignment. From here you can find references to all kind of humantask assignments blogs, articles and examples. You can download example projects, and are encourage to supply additional content and improvements. Humantasks can be assigned to an [...]

The post Humantask Assignment in Oracle BPM Suite and SOA Suite appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

This blog post is the starting point of a series of posts about humantask assignment. From here you can find references to all kind of humantask assignments blogs, articles and examples. You can download example projects, and are encourage to supply additional content and improvements.

Humantasks can be assigned to an individual user, a group of users and to a role. Oracle BPM Suite and SOA Suite offer many different ways to assign these humantasks to a respresentative. For example it is possible to use references to lane participants, organizational structures like job-level and supervisory, business rules and external routing components.

The remaining of this starting blog consists of a list with references and backlog topics. The content of this list is periodically updated. All topics are strictly related to humantask assignment.

Humantask Assignment

Task assignment topics

lane participants

by names and expressions

Approval groups

Job Level

  • value based
  • Rule-based

Position

  • Rule-based

Supervisory

  • value based
  • Rule-based

Parametric roles

Management Chain

  • value based
  • Rule-based

Rule base

types

  • Single
  • Parallel
  • Serial
  • FYI

Route tasks to all participants, in order specified

Use Advanced Rules

Use external routing

 

Call for content:

if you like to supply content for this post, you can add a comment to this blog.
You can deliver full content for a (new) list topic. In that case I will add the content to the AMIS Technology blog.
Or you could deliver references to a topic. Then I will add the references to the list.

 

 

Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post Humantask Assignment in Oracle BPM Suite and SOA Suite appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2014/02/13/humantask-assignment-in-oracle-bpm-suite-and-soa-suite/feed/ 1
AYTS: Summary of Oracle Business Intelligence Applications – Customizations https://technology.amis.nl/2013/04/01/ayts-summary-of-oracle-business-intelligence-applications-customizations/ https://technology.amis.nl/2013/04/01/ayts-summary-of-oracle-business-intelligence-applications-customizations/#comments Mon, 01 Apr 2013 13:41:32 +0000 http://technology.amis.nl/?p=22317 Share this on .. Three months ago started the Oracle program: Are You The Smartest. For me it is an opportunity to test my current knowledge level and to extend my knowledge. After every session I follow, I will write a brief summary as part of the preparation for the test. I will continue with the summary of the [...]

The post AYTS: Summary of Oracle Business Intelligence Applications – Customizations appeared first on AMIS Oracle and Java Blog.

]]>
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

Three months ago started the Oracle program: Are You The Smartest.
For me it is an opportunity to test my current knowledge level and to extend my knowledge.
After every session I follow, I will write a brief summary as part of the preparation for the test.
I will continue with the summary of the following session.

ARCHITECTS TRAINING – BUSINESS INTELLIGENCE – Oracle Business Intelligence Applications – Customizations

This 1 hour during session was divided into the following parts:

  • Introduction to customization
  • Types of customizations
  • Typical cases of customization

Introduction to Customization

  • By customization we mean changing the data warehouse structure, ETL logic and OBIEE repository and front-end to cover the customer specific needs that aren’t covered by the out-of-the-box solution
    • Each business has it’s own reporting requirements and they might be very special
    • Business environment changes and new requirements come up constantly
  • The out-of-the-box BI Apps offers a good framework to build custom reporting
  • Best practice customization is additive so we don’t lose the out-of-the-box objects when we customize BI Apps

Reasons for Customization

Transactional Applications Modifications 

The source system might have been customized for customer’s needs
• User Interface
• Data model extensions
• New entities (business components)
• Different relationships between components
• Modified visibility rules
• Different authorization/authentication
• These changes have to be addressed in BI Apps, too, with customization

BI Applications Extensions

When it comes to reporting, these are some of the typical requirements
• Company-specific dashboards, analysis, navigation
• New KPI’s or refining out-of-the-box ones
• Custom hierarchies
• Differences in change data capture logic
• New facts and/or dimensions for unsupported functionality
• Additional source systems or data warehouses which have to be integrated

Typical Effort & Customization Balance

img1

80% of time is spent on dashboards en reports. 20% on more complex things.

OBIEE (Oracle Business Intelligence Enterprise Edition) Dashboard Customization 

Easiest and most frequently done customization, for example

  • Changes of format, structure, navigation etc. in the existing reports, say
    • Data format such as date or currency format
    • Data presentation in pivot table, graph etc.
    • Grand totals, ordering, new filters, selection steps, dashboard prompts
    • Custom navigation from one report to another
  • Adding new out-of-the-box or custom attributes or measures to the reports
  • Building new dashboards and analyses using out-of-the-box or custom objects

img2

OBIEE Metadata Customization

  • Changes in OBIEE repository, the following are some typical changes
  • Changing the structure of subject areas:
    • Drag and dropping more presentation columns
    • Deleting unnecessary columns from the presentation layer
    • Reordering and renaming objects
    • Changing the security (visibility) of subject areas
    • Creating new subject areas with different contents to different user groups
    • With OBIEE 11g combining several subject areas in the same report is so easy that they should be kept small
    • Implement repeating changes ones in the repository and not over and over again in every report.
  • Creating new fact measures
    • OBIEE fact columns can be :
      • Base measures, which come from the data warehouse and do not involve any calculation in OBIEE
      • Derived measures, which are derived in OBIEE repository from base measures
    • New derived measures can easily be calculated from the base measures
      • Level-based measures to create totals on different levels of dimensions are another extremely powerful option in OBIEE
      • Case-statement and filters can often help you create custom measures based on the out-of-the-box measures
  • Sometimes new attributes can also be built in OBIEE based on the existing attributes
  • Changing logical dimensions
    • Adding new levels to the logical dimensions
    • Changing preferred drill-down path
    • Changing drill-down display columns
    • Creating new logical dimensions
  • Adding new logical and physical data sources
    • Mapping new custom columns or custom tables
    • New aggregate tables
    • Aliasing out-of-the-box tables, for example to create new custom date dimensions
    • Adding additional data sources, for example relational databases or Essbase cubes

img3

 ETL Customization

ETL customization involves changes in the data warehouse structure and Informatica mappings

  • The main effort is done in the database and Informatica, but the changes have to be mapped also in DAC and OBIEE repository

Customization Scenarios

  • Type 1 – New columns from source systems added to the data warehouse
  • Type 2 – New fact or dimension tables added to the data warehouse
    • We have to build the corresponding SDE and SIL mappings
  • Type 3 – New data from additional data sources extracted using the universal adapters

Type I Customization

Typical Steps to Extend Mappings

  • Copy the appropriate workflows, sessions and mappings to a custom Informatica folder
    • Only modify objects in the custom folders
    • Update DAC task properties to point to the custom folders
  • Add the new column(s) to staging and target tables
    • Create the column(s) in the database
    • Then import them to Informatica, DAC and OBIEE repository
    • Add new query indexes for the target table columns in DAC, if needed

Adding Columns to Existing Tables

  •  Customize the out-of-the-box SDE and SIL mappings
    •  Modify the extract query to include the new column(s)
    •  If new tables are needed import them and be careful that no rows are lost or unwanted rows returned because of new joins
    •  Take the new column(s) through the two mappings following the path of the placeholder column X_CUSTOM
    •  After changes validate the corresponding Informatica sessions
  • Modify DAC execution plan
    • Generate parameters and set values for the custom DAC folders
    • Re-build the execution plan
  • Map columns in the logical and presentation layer in OBIEE

Safe Path 

  • Most mappings have a single placeholder column, named X_CUSTOM, that marks a safe path through the mapping.
  • All extension logic should follow the same route through the mapping as X_CUSTOM. You can add additional transformations to the mapping, but they should follow the same route through the mapping as X_CUSTOM. The graphic shows the pre-configured logic in grey. You should not modify anything contained within these objects. You should add customizations to the existing mapping, which allows them to run parallel to the existing logic.

img4

Points to Remember

  • Encapsulated objects must never be customized unless directed by Oracle
    • An exception are the extract mapplets in SDE mappings which can be modified
  • Exposed objects can be extended but must never be otherwise modified
  • Minimize the number of changes to exposed objects by using custom objects
    • Custom objects are never changed during an upgrade

Type 2 Customization

Adding Additional Tables

  • Sometimes we have to create new dimension and fact tables
  • Custom SDE and SIL mappings have to be created to populate each custom table

Table Definitions

  • Create new table(s) in database
    • Remember to include the required system columns
    • Then import them to Informatica, DAC and OBIEE repository
    • Add ETL indexes and new query indexes in DAC
    • Define table type and foreign key columns in DAC – important for dependency detection

More on Indices

  • Staging tables typically do not require indices
  • Create indices on all columns that the ETL uses for dimensions and facts
  • Define indices to improve query performance
  • If you create indices in the database be sure to register them in DAC

Custom Mappings

  • Create new mappings in Informatica to contain your ETL logic
    • Always create custom objects in your custom folders
    • There should be only one target table per mapping
    • Thanks to the change capture and update logic we can normally use the same mapping for a full load and incremental load of a table
    • However, if necessary, you can create a different mapping for full and incremental ETL
  • Reuse existing source and target definitions, transformations, mapplets and mappings to save development time and to follow the best practices
    • Take advantage of the out-of-the-box encapsulated logic such as lookups and mapplets to retrieve ETL_PROC_WID, convert
      currencies etc.
    • Adapt the out-of-the-box logic to your custom mappings, for example:
      • Treatment of surrogate keys and system columns
      • Change capture and update strategy logic
      • Creation of unspecified records, slowly changing dimension, aggregates etc.

Custom Workflows

  • Create a session for each mapping
    • Set the appropriate source and target connection values in Workflow Manager
  • Create custom workflows
    • Each workflow should load only one table
    • The workflow name should match a session name that is used inside the workflow
  • You have to create a workflow and session for both full load and incremental load
    • Usually the sessions and workflows can simply be duplicated with two different names

DAC Development 

  • Create new tasks in DAC
    • In the properties of a DAC task you can define the command for incremental and full load – these are the names of workflows in Informatica
    • Other important settings are for example execution type, folder name, source and target and task phase
    • Synchronize the tasks to add the source and target tables
      • Set the properties for the tables, for example the target table truncate options 
  • Create new subject area in DAC
    • If your customization is an enhancement of an existing star then assemble the corresponding DAC subject area again
    • If you’ve built a new star then create a custom subject area in DAC
  • Create new execution plan
    • Reuse existing execution plan or create a new one
      • Add the new subject areas, if any
    • Generate and set the parameters
    • Build

More on Truncating Target Tables

  • Truncating should be done through the DAC
  • A single DAC task has one placeholder for a full load, and one for an incremental load

img5

OBIEE Development

  • New data warehouse tables need to be mapped in OBIEE
    • Tables imported, aliased and joined in the physical layer
    • New logical dimensions, dimension tables and facts defined in the logical layer
    • New subject areas created in the presentation layer

Naming Conventions

Data Warehouse Object Naming Standard
Custom DWH tables WC_<table_name>_<table_type>, for example WC_CUSTOMER_D
Custom column in OOTB table X_<column_name>
  • Separate your custom development as well as possible from out-of-the-box with naming convention in OBAW, Informatica, DAC and OBIEE
    • For example prefixes Custom_ and C_ can be used
    • In OBIEE dummy columns can be used to separate the out-of-the-box and custom columns
Share this on .. Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+Email this to someoneShare on TumblrBuffer this page

The post AYTS: Summary of Oracle Business Intelligence Applications – Customizations appeared first on AMIS Oracle and Java Blog.

]]>
https://technology.amis.nl/2013/04/01/ayts-summary-of-oracle-business-intelligence-applications-customizations/feed/ 0