Usecase – business requirements |
Business Requirement : James Smith Corp : has an Education Division that allows students to apply online for their university courses, students are given academic seats on various reservation category as per the government rules, the fees structure also varies based on some of the student parameters like reservation category, parents income etc. Students also pay the fees online through net banking , access online portal through their mobile devices or desktop machines,
Applications go through series of review from admin officer to finance officer and finally checked by the principal himself.
the system has tie ups with various Business Partners for providing books and id cards to new Joinee students as soon as they come onboard to the university.
Management also keeps track of various reports that helps them plan next year cut off percentages and revenue generated from various category of students. also lets them open up fresh admissions in-case they have some vacant seats available to be filled up
technnology focus |
Technical Requirements: James Smith Corp already have technical expertise around Oracle SOA BPM products, they plan to use following
- Oracle Database,
- Oracle SOA layer for Application Integration ,
- Oracle BPM for Business Process Orchestration,
- Rules Engine
- Webcenter Portal
- Enterprise Content Management
- ADF for Mobile and Portal Development
end to end demonstration of usecase |
Step 1 : Student (Jcooper) Uses his mobile phone to access James Smith Inc website and to apply online
Step 2 : The Application is validated against application business rules, if accepted the documents are manually checked and approved by the Admin Officer Jstein , who logs into webcenter Spaces and checks his task notifications
Step 3 : Once Admin has approved, Student Fees is collected through Net Banking , which actually means the fees amount is transferred from student account to university account, on valid transaction, the finance officer cdoyle needs to approve the student data to next level.
Step 4: Principal wfaulk does a final application review , if approved the system registers the student, student is informed about successful application acceptance, University partners are informed to get the badges done and also procure student books.
Also Principal can also view various reports that help him set up cut off percentages and future development plans.
hardware and load test on ram |
I am using one of the best possible Hardware i could have afforded AMD 6 core processor, with 12 GB RAM on ASUS Motherboard, Linux based Ubuntu 11.10 Operating System. Yes at full throttle you might need all that RAM and Core , see for yourself.
Under Production Environment you would be recommended to check the latest Hardware Offerings from Oracle
My Development Environment
All Softwares Running are latest patchset PS4, extension software_11.1.1.5.0_extension
Sun JDK 1.6.0_30 Installed
- Running XE Database + Admin Server (SOA+BPM+OSB+EM) = 3.1 GB RAM
- Adding BAM (bam_server1) Managed Server = 4 GB RAM
- Adding UCM (UCM_server1) Managed Server = 5.2 GB RAM
- Adding Webcenter Spaces (WC_Spaces) Managed Server = 6.5 GB RAM
- Adding WC_Utilities Managed Server = 7.2 GB RAM
- Adding WC_Portlet Managed Server = 8.5 GB RAM
- Adding WC_Collaboration Managed Server = 9.5 GB RAM
- Adding IBR_server1 Inbound Refinery Managed Server = 10.6 GB RAM
- JDeveloper 11.1.1.5.0 SOA + Webcenter Extensions added = 11.0 GB RAM
- I still need a Windows VM to fireup Internet Explorer as BAM works only on that IE .
Anyway Ideally you would not run all the servers on same machine, and JDeveloper aswell on same Box, you would stick to Original client server architecture. may be even have database on some other physical machine.
softwares to download |
Download Link :http://www.oracle.com/technetwork/indexes/downloads/index.html
My Current Generic Downloads installed on Linux based Ubuntu 11.10 OS
- Oracle XE Database oracle-xe-universal_10.2.0.1-1.0_i386.deb
- Sun JDK jdk-6u30-linux-x64.bin
- JDeveloper jdevstudio11115install.jar
- JDeveloper BPM Extensions bpm-jdev-extension.zip
- JDeveloper SOA Extensions soa-jdev-extension.zip
- Webcenter Customization oracle.webcenter.customization_bundle.zip
- Webcenter Framework oracle.webcenter.framework_bundle.zip
- RCU Linux ofm_rcu_linux_11.1.1.5.0_disk1_1of1.zip
- ECM ofm_ecm_generic_11.1.1.5.0_disk1_1of2.zip and 2of2.zip
- Webcenter ofm_wc_generic_11.1.1.5.0_disk1_1of1.zip
- SOA Generic ofm_soa_generic_11.1.1.5.0_disk1_2of2.zip and 2of2
- BPM Process Spaces processportal_installer_bpmps4fp.zip
- Oracle Service Bus ofm_osb_generic_11.1.1.5.0_disk1_1of1.zip
- Weblogic Server wls1035_generic.jar
- Install JDK ( I use Sun JDK )
- Install Oracle XE Database ( refer my Blog on How to Install XE on Ubuntu )
- setup JAVA_HOME and RCU_JDBC_TRIM_BLOCKS=TRUE
- root@james:/home/james# gedit ~/.bashrc
- On Oracle XE database set the below mentioned processes and restart XE DB
- alter system set processes=400 scope=spfile;
- sudo /etc/init.d/oracle-xe restart
- Install RCU select SOA, Webcenter, Portal, UCM during Installation.
- Install Weblogic Server let it create Middleware home
- Install SOA Suite as a part of Admin Server
- BAM would be a Managed Server taking different port.
- Install Oracle Service Bus
- Install ECM that consists of UCM and IBR Managed Servers
- Install Webcenter
ORACLE FUSION MIDDLEWARE LINKS to BOOKMARK |
- Enterprise Manager : http://localhost:7001/em
- WLS Console : http://localhost:7001/console
- Content Server : http://localhost:16200/cs/
- BPM Workspace : http://localhost:7001/bpm/workspace
- BPM Composer : http://localhost:7001/bpm/composer
- Oracle Service Bus : http://localhost:7001/sbconsole
- Webcenter : http://localhost:8888/webcenter
- Demo Seed Community : http://localhost:7001/integration/SOADemoCommunity/DemoCommunitySeedServlet
- XE Database : http://localhost:8080/apex
- Inbound Refinery : http://localhost:16250/ibr
- BAM (IE Only on Windows) : http://localhost:9001/OracleBAM
- Activity Graphs : http://localhost:8891/activitygraph-engines/Login.jsp
- Pagelet Producers : http://localhost:8889/pageletadmin/login/loginpage.jspx
- Discussion Forums : http://localhost:8890/owc_discussions/index.jspa
- B2B Console : http://localhost:7001/b2bconsole
- Oracle Identity Manager : http://localhost:14000/oim
- Oracle BI Publisher : http://localhost:7001/xmlpserver/
database configurations |
DATABASE Adapter Configurations : I assume that with the schema available in the source you have already created University Database, lets make it talk with Weblogic Server, login to WLS Console, go to Data sources, create Generic Datasource by Name UniversityDS JNDI Name jdbc/UniversityDS
Under Configuration -> Connection Pool tab, give required parameters and Test for DB Connection
go to Deployments , Under DB Adapter create a new Outbound connection Pool , this comes under Configuration -> Outbound connection pools, this name should match the one thats defined in SOA Database Connection eis/DB/University
set xADataSourceName to jdbc/UniversityDS our pre-configured JNDI Name
Update the Database DBAdapter Deployment, No need to restart, Most often people forget this step.
BAM Adapter Configurations: Go to Oracle BAM Adapter, ensure that eis/bam/soap outbound connection is defined
check the ports, if changed update BAM Adapter deployment
integrating webcenter with UCM |
For PS5 Webcenter and UCM Integration Click here
setting up bpm process spaces on webcenter |
For Webcenter and BPM Process Spaces Integration PS5 click here
RESULT
setting up bam with bpm process |
Login to EM, Edit BPMNConfig.bpm , Disable Action = blank, see the below figure as to how to Navigate to BPMN Config MBeans
Edit BAMICommandConfig.xml
:~/Oracle/Middleware/Oracle_SOA1/bam/config$ gedit BAMICommandConfig.xml
Add
<ICommand_Default_User_Name>weblogic</ICommand_Default_User_Name><ICommand_Default_Password>welcome1</ICommand_Default_Password>
just above
</BAMICommand>
Save the file. Next Run Monitoring Express Sample Scripts, these creates out of box available BPM Reports on BAM Dashboard
james@james:~/Oracle/Middleware/Oracle_SOA1/bam/samples/bam/monitorexpress/bin$ ./setup.sh
RESULT : Login to BAM, You can see out of Box BPM based BAM reports
I need to fireup windows VM to load IE , which i really dont like doing as i am already running couple of Servers and this adds overhead to the memory. I tried Installing IETabs and Different IE versions like IE for Linux on Ubuntu and run them on WIne, Unfortunately none of those IE things ever worked on Linux. I would be looking forward to a day when i can run BAM reports on my Linux Machine with the same level of performance that BAM offers as of today.
Admission sequence flow & usecase |
I would not be explaining this sequence in detail , but this is the flow of events across various actors ( systems and subsystems ) . this can be done using JDeveloper
Student Applies and Pays fees online, If Application found valid meeting the required criteria, admin reviews the application, if Admin finds the application correct and valid, the fees is collected by Net Banking transferring fees amount from the student account to University account, Finance Officer and Principal do the final review, If everyone clears the student gets admitted into University system, the system also informs the student about the admission status as well as gets connected with partners to procure Books and Id cards to on-boarding student
setting up net banking – soa process |
throughout this blog section we will use a university schema as shown below. that captures basic student information along with the fees money that he needs to pay to the university on successful selection, student enters his own bank name, account number and pin. In reality these details would not be handled by any university but through a payment gateway.
the system checks if the student has enough funds in his bank account to pay the fees, if found true, then a handshake is established between student account and the university account, fees money is debited from student account and credited into university bank account, we are simulating this using database table, for the sake of simplicity its assumed that HDFC bank is used Account Number 12345678 and Passcode 1234, other values will fail transaction.
the corresponding BPEL process is here, and its a part of source code download available on this blog
RESULT : Fees Amount Collected from the student is Debited from Student Account and is transferred into University Bank Account, if the transfer gets rejected the student application is also rejected and is not processed for further approvals.
setting up admission rules – rules engine |
Rules Engine has a beautiful concept of decision tables, where various criterias can be applied to accept a student application or reject as a first level screening, we will use decision table to allocate seats to students based on their percentage and reservation category as per the govt rules.
We will use Bucketsets to decide on ranges of percentage for example students scoring marks above 80% are considered as Distinction students, First Class, Second class etc, also there are various reservation groups such as OBC, GEN , SC/ST and each of those students are allocated seats based on their percentages and parents annual income.
BPM also provides out of Box Option through BPM Composer to Edit these Rules without further deploying the whole application ,
Refer this link on runtime edit through BPM Composer
http://jamessmith73.wordpress.com/oracle-soa-bpm-11g/bpm-composer-runtime-edit/
RESULT : We have set up Rules Engine Decision table to accept or deny student admission to college based on reservation category and his/her percentage
setting up partner network – osb |
Student ID card makers are a Simple SOA Service , as of now once the registration is complete BPM invokes this SOA service, through a OSB layer , the implementation of this service is pretty simple , it writes into a File System, but this Service can be enhanced to include B2B Option or any other complex logic based on the real partner to partner integration needs at Enterprise level.
lets deploy this on Weblogic Server, lets consume this service with in OSB , first as a Business Service, and then add a wrapper on top of it as Proxy Service,
We will use the Proxy Service from our University Application, to show OSB integration with BPM through SOA Layer.
Also you can avoid SOA layer and directly call OSB Service through BPM using Direct Binding
setting up bpm process orchestration |
Setting Organization Roles, Based on our Use-case diagram We have identified 4 major roles as per the usecase jcooper as Student, jstein as Admin Officer who views the application after initial screening, cdoyle as Finance officer who verifies that finance has been settled by the student through Bank payment using Net Banking, wfaulk as Principal who does final level approval. All these student details are stored in Weblogic LDAP, You can also setup Organization based Holidays and Calendar. All these are to be Configured in our University Admission BPM Process
Swim-lane : Student Role + Admin Officer -> Starts by receiving input format Request through a Message , this input can be from Any User Interface device such as Desktop Browser or a Mobile Application hooked into James Smith University website. certain business rules are executed to determine if the student can be given seat or not, based on lot of factors such as Parents Income, Reservation Category of student, Student Percentage etc
One Application is accepted, the attached documents are physically checked by the Admin Officer, if admin officer Approves then the fees is collected by the student through a Simulated Net Banking Process, that Debits from Student Account and Credits into University Account.
If all goes well it goes to next level or next role , but if it gets rejected the process stops,
Enhancements : This can be further enhaced to send a Notification SMS or Email Message to the student about the rejection , and also refund the collected Fees
Swim-lane : Finance Officer Role + Principal Role -> Once Bank transaction is successfully completed, Finance Officer reviews the Student Application, If its approved, the application moves to next level thats Principals Review, if Principal also reviews, The student is actually admitted into the system by writing in the university student database, the Partners are informed about new student joining , his ID cards and Books are Procured.
Enhancements : This can be further enhaced to send a Notification SMS or Email Message to the student about the Candidate acceptance, but also interface with Oracle B2B or use E-Business Suite Iprocurement to automate procurement to the student.
During Process Execution in Enterprise Manager
bam monitoring |
Business Indicators are primarly of 2 types string and integers, these are also sometimes referred as Measurements and Dimensions, these are pushed to BAM Data Objects, during process execution the data is fed in real time to BAM Data Object, and the Dashboard Reports reflect real time data. also please make a Note that these BAM data objects are automatically created during process deployment and should NOT be manually created.

Select Enable BAM to create Data Object in a Specific Folder inside BAM

The Data is actually Pushed into BAM from BPM by using Script Activity from BPM View in the Process.

BPM FEATURE PACK – UPDATES ! |
Feature Pack has fixed some BPM related Bugs and Added New Features to BPM Composer and Workspace, One major observation is earlier attachements were not getting saved in BPM Task lists detail page, now after applying patch the attachments and comments are getting saved, and also some reports Standard Dashboard are Visible earlier (Before Patching Feature Pack) they were not .
Please read the readme.txt that comes along with the download to Install this Feature Pack
WARNING : Most often before applying ANY Patch please take backups and test the whole patching process on a non production system with similar hardware and software configurations as the production system, read documentation carefully follow all steps, only when things go right apply it on a production system, else there can be very serious consequences.
RESULT: After all the patching work Attachments and Comments would be working fine, I would not be explaining all the new features of BPM Feature Pack, please look into official documentation.
business intelligence – reporting & service invocation |
This is a huge topic in itself, Oracle BI helps Analyse data from discrete data sources, even work on Historical and Multi-Dimensional data, BI Publisher helps creating reports based on data analysed, while BAM is a good candidate for real time reporting BI is an excellent technology for Analyzing some of complex data from multiple data sources like various databases, xml files, flat files, LDAP directory, etc.
Use-case: We will be demonstrating how student reports and student welcome letter post admission will be generated using BI Publisher. we will be using Oracle BI OBIEE to analyse student data and decide on cut off percentage through BI Agents Web-service invocation functionality. since this is a huge topic its covered in a different link below.
http://jamessmith73.wordpress.com/oracle-fusion-middleware/business-intelligence/
Identity and Access Management |
We would be using Oracle Identity Management for Organization Hierarchy creation, Role creation, user creation and user access policy management. this would help James Smith University’s Administrative and Management staff to be in local LDAP directory and allows self service in terms of registration and managing their user profile. this topic is discussed in depth here.
http://jamessmith73.wordpress.com/oracle-fusion-middleware/oracle-access-and-identity-mangement/
download source codes – THANK YOU ! |
Click here to Download PS4 version of the above source code
Software Downloads at
http://www.oracle.com/technetwork/indexes/downloads/index.html#middleware
AUTHOR PROFILE |





















































Remember when you write SQL Query based DB Adapters , the syntax is similar to below query
select studentname, rescategory, status from students where studentind = #studentidvar