Sunday, 22 September 2019

Integration Architecture Layers - Oracle Integration Services

In software  architecture there are always "layers"  to simply the task of understanding. Oracle integration services are based on multiple layers which work cohesively to integrate and communicate message from one system to other.

I have tried to divide entire architecture in few layers to get full understanding of ICS.






Network Layer - Network layer is responsible for communication between end systems and integration layer.  In ICS its very much hidden and been taken care by the Oracle itself. Once your system is exposed to internet then rest is been care of. One component as an architect you can visualize in this area is, "connectivity agent" which provide connectivity between the end systems and ICS. These agents installed on end systems and use ssl port. Other decision point  open for architects is location of the availability domain. It has to be choose based  on the proximate location of the end systems required integration. Example if all the end system or client in Canada then obvious choice for availability  domain is Canada, if not then any other proximate location, to reduce latency between the integration layer and target systems. Current protocol been supported by ICS in this layer is https, ftp, http, sftp.






Interface Layer :- Interface layer is first touch point of the any integration. This is layer from which message enters into integration system's area of work. Be its service call  or message service or  file based integration, in cloud everything start by an connection. Its very important for a cloud architect to have a clear visibility about connections and its type, right now oracle provide no restriction over the number of the connection been created in ICS, but from manageability prospective its important that a cloud architect have a proper inventory of connections and avoid duplicate as much as possible.  Advice to have a Exl or any form of inventory of connections, there message structure and  end points and possible number of message that connection will be sending or receiving on hourly basis.

Under the connections, other important stuff to be decided by architect is technology adapters. These adapters abstract complexity of underlying system and provide almost a uniform way to interact. Right  now there are more then 50+ technology adapters are available to choose.




Instruction or Application Layer :-  Application layer or the orchestration layer in ICS,  is play area of an architect/integration developers. This layer contain set of  instructions been written during design time to integrate two or multiple connections. There are multiple patterns which are been provided by Oracle and as an architect we need to choose best fit for our use-case.

 This layer where architects has to laid down processing of the message and also contain business logic or instructions for message processing, transformation or enrichment. This layer as architect we can think of gluing agent where everything is connected.





Instruction Execution Layer (Oracle Provided and Controlled):-  Instruction or  execution layer as architecture point of view is hidden and managed by Oracle itself.  This layer execute every instruction been configured by us in instruction layer,  What ever logs and information available it looks very much written in java and borrowed from Oracle previous technologies like BPEL, JCA adapters and messaging, but this layer is not having anything for an architect to think or done about. Container to server everything has been hide by Oracle under the ICS platform.d





Logging or monitoring Layer (Oracle Provided, user Controlled):-  This is an extended layer of the execution layer. From top-view both these layers are fused into each other, because for every information this layer log is been provide by the execution layer. This layer expose multiple configurations to increase or decrease the logging level or provide more information during the logging. We can assume these instructions as levers which can be pull or push to give instructions to execution layer to write or not write information about execution.  This layer also include configurations at adapter level also which can be tweak to force execution layer to write more information by adapter code.   

Saturday, 21 September 2019

Take database schema dump and export

Its a post written long time back, doing consolidation all my posts to one blog.

Today due to some reason I need to migrate my schema from oracle xe in my system to another system which is a Linux box. I had to revisit a number of command, which is quite helpful.

lets use the export import utility provided by oracle. Its quite easy and straight forward.

Step 1 Exporting schema to a dump file

D:\Oracle\db\app\oracle\product\10.2.0\server\BIN>expdp system/**** schemas=
hr directory=C:\Temp dumpfile=hrdump.dmp logfile=rexp.log

Export: Release 10.2.0.1.0 - Production on Monday, 31 January, 2011 5:51:24

Copyright (c) 2003, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Productio
n
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name C:\TEMP is invalid

Then l relised that oracle does not know my directory. Then create this directory by login to database with user name and password system/******

sqlplus> create directory hrdump as 'C:\Temp\hrdump';
sqlplus> commit;

After that re-run the export command.

expdp system/******* schemas=
hr directory=hrdump dumpfile=hrdump.dmp logfile=rexp.log

Now its finish successfully, which also give certain output in the log
===================================
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** schemas=hr directory=
hrdump dumpfile=hrdump.dmp logfile=rexp.log
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 640 KB
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "HR"."PS_TXN" 14.60 KB 6 rows
. . exported "HR"."COUNTRIES" 6.085 KB 25 rows
. . exported "HR"."DEPARTMENTS" 6.632 KB 27 rows
. . exported "HR"."EMPLOYEES" 15.77 KB 107 rows
. . exported "HR"."JOBS" 6.609 KB 19 rows
. . exported "HR"."JOB_HISTORY" 6.585 KB 10 rows
. . exported "HR"."LOCATIONS" 7.710 KB 23 rows
. . exported "HR"."OPTIONAL_REQUIRED_TEST" 5.867 KB 2 rows
. . exported "HR"."REGIONS" 5.289 KB 4 rows
Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
C:\TEMP\HRDUMP\HRDUMP.DMP
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 05:57:02

=============================



Step 2 -- Importing to the database.

While importing I used the export utility provide by oracle.

1. Create the directory in oracle where I have copied my dump files.

$sqlplus system/******
sqlplus> create directory hrdump as 'C:\Temp\hrdump';
sqlplus> commit;

2. Run the command to import the schema, with data.
impdp system/******* schemas=hr directory=hrdum dumpfile=HRDUMP.DMP logfile=hrisimp.log

it failed with the errors
ORA-39083: Object type TABLE:"HR"."DEPARTMENTS" failed to create with error:
ORA-00959: tablespace 'USERS' does not exist

*** Actually same table space I have not created here. So created the users table space by connecting to my db with system user.

sqlplus > create tablespace users datafile '/scratch/oradba/db/apps_st/data/users.dbf' size 10M autoextend on maxsize 200M extent management local uniform size 64K;

in between if you get any issue like temp file does not exists then use this command to crate the temp file directory location you need to modify.

CREATE TEMPORARY TABLESPACE temp TEMPFILE
'/scratch/oradba/db/apps_st/data/temp01.dbf' SIZE 500M autoextend off extent management local UNIFORM SIZE 1m;

Now run the import command again

$ impdp system/****** schemas=hr directory=hrdum dumpfile=HRDUMP.DMP logfile=hrisimp.log

===========================LOG======================================
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01": system/******** schemas=hr directory=hrdum dumpfile=HRDUMP.DMP logfile=hrisimp.log


Processing object type SCHEMA_EXPORT/USER
ORA-31684: Object type USER:"HR" already exists
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
ORA-31684: Object type SEQUENCE:"HR"."DEPARTMENTS_SEQ" already exists
ORA-31684: Object type SEQUENCE:"HR"."EMPLOYEES_SEQ" already exists
ORA-31684: Object type SEQUENCE:"HR"."LOCATIONS_SEQ" already exists
ORA-31684: Object type SEQUENCE:"HR"."PS_TXN_SEQ" already exists
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "HR"."PS_TXN" 14.60 KB 6 rows
. . imported "HR"."COUNTRIES" 6.085 KB 25 rows
. . imported "HR"."DEPARTMENTS" 6.632 KB 27 rows
. . imported "HR"."EMPLOYEES" 15.77 KB 107 rows
. . imported "HR"."JOBS" 6.609 KB 19 rows
. . imported "HR"."JOB_HISTORY" 6.585 KB 10 rows
. . imported "HR"."LOCATIONS" 7.710 KB 23 rows
. . imported "HR"."OPTIONAL_REQUIRED_TEST" 5.867 KB 2 rows
. . imported "HR"."REGIONS" 5.289 KB 4 rows
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
ORA-31684: Object type PROCEDURE:"HR"."ADD_JOB_HISTORY" already exists
ORA-31684: Object type PROCEDURE:"HR"."SECURE_DML" already exists
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/VIEW/VIEW
ORA-31684: Object type VIEW:"HR"."EMP_DETAILS_VIEW" already exists
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" completed with 8 error(s) at 06:21:03
===================================================
-bash-3.2$


It completed successfully but due to some of the objects which does not require users tablespace was created before it gives some error which I can ignore now.

If we need to create the backup only then we can use the first command to create the dump and then use the file as backup.

Monday, 16 September 2019

Creating Oracle database connectivity in OIC - Part 3 (Integration Creation and testing)

This post is an continuation of post 1 and Post 2.  In both the post we laid down the base for the connectivity between OIC and database. Now we need to create an integration which will use this connection.

This example is quite basic example, which create an entry in the order table of inventory schema. This schema is created by me in this database. If you are  new to oracle database, then follow the steps.


DB Schema Creation.
1. Once you are connected to database in part 1 of the post, then create a user "Inventory" and provide resource to connect.
> create user inventory identified by "password";  -- use your own password.
> alter user inventory grant connect, resource;

2. Now login using this user Inventory with password and create a simple table using below command.
CREATE TABLE "inventory"."ORDER_MASTER"
( "ORDER_ID" NUMBER NOT NULL ENABLE,
"USER_ID" VARCHAR2(200 BYTE) NOT NULL ENABLE,
"ORDER_VALUE" FLOAT(126),
"INVENTORY_ITEM_ID" NUMBER NOT NULL ENABLE,
"USER_TYPE" VARCHAR2(200 BYTE) DEFAULT 'N'
);
Once above step is complete, we have a table to store our information.


Integration Creation.

1. Connection:

1. In this example we are a using a rest based integration to post order details, which will be captured in the database table, been created above. Hence now create a rest based connection first, provide below details, test and save.
Connection Type:  Swagger Definition URL
Connection URL: https://<<ICS URL>>/flowapi/rest/CREATE_BULK_ORDER/v01/metadata/swagger
Enable two way SSL for outbound connections (Optional): No
Security Policy: Basic Authentication
Username: <your OIC User Name >
Password:   any password
Agent Group: None


2. Now lets create a new connection based on database as a service, if not clear use  screenshot below
3. One connection is created add following information in detail page and test.
Connection Properties  --- Configure Connectivity
Host : Database host ip address
Port:1521
SID ORCL
Security -- Configure Security
Security -- Policy Username Password Token
Username "inventory"
Password     <password for inventory db>
Agent Group ---  Configure Agents
Agent Group OracleDatabaseConnectivityAgent
5. Once tested and validated we will be able to see below screen like this for success.


Creation of integration


1. Lets go to integration and then we will choose to create an App driven Orchestration and fill all the details.


2. Now we will  create this integration and open the integration to edit and add the connection CREATE_BULK_ORDER. Once added configure the following properties, set method as GET,


3) Now lets create a few parameter which this request will take add this to request parameter as given below.


4. Now lets set some response parameters.
6. Once its done lets take the cursor on the line and add OracleDBAAS on the line. It will open a wizard to configure the database adapter.


7. Now first choose operation, you want to do on the database, in this demo we are  choose to insert but you can choose any method.
8. Select and choose the table on which operation need to be performed and then export this table using the button below.


9. Next screen on wizard will ask about the primary key, Provide the primary key of the table. Next screen will be summary, choose done there.


 10. Once we add this to integration, a mapping will come in between, the parameter which Rest is receiving and parameter which we are setting in DB Adapter. lets set it and right now hard code value for user type as "O".

11. Once everything is done,  toggle the integration button to make it active.



12. Use following URL to test the integration, it will ask for password provide the password of our user.
https://<OIC URL>/ic/api/integration/v1/flows/rest/INVENTORYUPDATE/1.0/inventoryOrderId/1?InventoryUserId=<your userid>&ValidRequestFlag=Y&OrderValue=92000&IventoryItemId=304&OrderQuantity=9000


13. Once above transaction is done lets check the database table if the data is there in the table or not, we can see data is inserted in the table which confirms everything is working.



14. We can now explore other database adapter options like executing plsql. Right now its adapter does not support complex pl/sql parameters, which oracle SOA Suite use to support by adapter design pattern.

Creating Oracle database connectivity in OIC - Part 2 (Agent Installation)

  Creating Oracle database connectivity in OIC - Part 2  (Agent Installation)


This blog is continuation of the first blog.

Oracle agents are programs that create connectivity between on premise database or database as a service to OIC, These agents can be consider tiny programs runs on the same port as the SSL is and allow direct connectivity between OIC and database.

OIC does not connect to database directly but always use this agent to connect for two way communication. Agents are not pre-installed on DBCS or on-premise database. Hence we need to install Agents on these machines. In this post we will see how to install agent on a DBCS, steps are very much similar post login to machine where database is hosted. Also firewall should be open for default port between internet and your on-premise machine. In DBCS you need not to care about firewall, oracle itself provide a public IP to connect.

Tools required - winscp, putty, puttygen, OIC console


1.)  Keys - Oracle DBCS is well guarded by SSH keys hence we need Keys created in last post. Now go to this location and unzip this zip file. We can see two files, one is private key and other is public key file.






2) Now we need to open the puttygen tool, if you don't have you can download and install putty software which will install puttygen too.  Once tool is open and let's click on load button and select the private key file been extracted in step 1.


3) Once key is loaded, we can add a pass phrase (password to this key) and save it on your machine. This pass phrase will protect this file, everything we login putty will ask to provide the passphrase we entered now.



4) Now open the putty and we  are required to provide  following information

             1. ip address - This you have from post 1.
             2.  connection --> Data --> Enter opc
             3.  Connection --> ssh --> Auth --> browse the key been saved in step 3.
             4.  go to session --> save session use same IP and click on save for future use.




5. Once all the information entered, we can click on open a new session and once screen request, we can provide the pass phrase been used in step 3, once its been done we are now login to system where our dbcs is hosted. This also mean your keys are working fine, hurrey !!!!!!





6) Now we  need to download the installer from ICS instance, we need to login to ICS again. Let go to ICS console and click on agent link, it will take us to screen where agents are listed  and also have a  download button to download connectivity agent. Lets download and save it to local machine.







7.  Now lets create a new connectivity agent in ICS, Click on create a new agent group. In the popup provide all the information, just note down the name of the identifier and also url of the ICS service, we will need it in future steps. Click on create and leave this page.




8. Now we are again back on agent creation, we  need to login to winscp using the same credentials, use advance setting of the winscp to provide the key generated and used earlier.



9) Now login, it will again ask us pass phrase  lets provide and login. Once login we can copy the downloaded file oic_connectivity_agent.zip(which we have downloaded from OIC)  to home folder of your opc user. It will take sometime based on the network bandwidth we have. Once finish close Winscp.



10) Now lets login back to putty, and go to home location and unzip the file, just uploaded. Once file is extracted, we will be able to see multiple files here.




11) Now from the files, lets  open the file InstallerProfile.cfg and provide the following information, we should not worry about providing username and password, as it will be encrypted post first run.

oic_URL=<your OIC URL>:443
agent_GROUP_IDENTIFIER=Identifier created in Step1

#Optional Parameters
oic_USER=OIC User Name
oic_PASSWORD=OIC Password.

12) Now we need to run the following command, it will start connectivity agent in background and will keep it running, even if we close the putty.

>>   java -jar connectivityagent.jar &
 
   we can utilize, below command to verify if agent is running.
>>    ps -ux |grep agent





13) Lets  login back to OIC console and go to designer -> Agent. If we see now number of agents, it should be increase by 1.






Basic infrastructure is now ready, our  connection has now been establish and its good to go with creating a database adapter based OIC integration.


We will see in our next blog about creation of the integration, which can interact with database. Mean while we can create another dbcs instance, and add connectivity to ICS.



Creating Oracle database connectivity in OIC - Part 1 (DBCS Creation)

Creating Oracle database connectivity in OIC

Part 1 - Creating a DBCS instance


In OIC many time integration demand database connectivity from an Oracle database, which can either be on-premise or a database service configured in an oracle cloud database(DBCS). This 3 part post, and an step by step guide to create  connectivity between the OIC and databsae in oracle cloud or from an on premise database. 


Architecture 

OIC use connectivity agent to connect to an on-premise database or an database service in cloud. You have to install connectivity agent manually on the on-premise machine or dbcs instance. This agent is responsible for the communication between the database and OIC.







In this post first we will talk about creating and oracle database service, if you want to connect to an onpremise database then you can start from the agent installation.  

Creating and Oracle Database Service:
 

1)  This step require access to oracle cloud instance, please login to cloud instance,  if you already have acces to oracle cloud. Once login click on icon below and choose databsae.




2) Once database home page loaded, click on the create instance button, by this you are asking oracle to provison an oracle database instance, which will be used for the connectivity 




3) Click on the next page,  and fill all the parameter, I have opt for not adding the backup as this is kind of demo instance been created in this blog, but you can choose based on your requirement for creating a backup.


4) Add the SSH keys by creating new keys, if you already have keys you can use them instead of creating new, you should download keys safely as these keys will be required to login to this machine.





5)   Once  all the parameter is filled, click next to go to confirmation page and then click on create, Oracle cloud will take some time and your instance will be provisoned.  Once provisioned please click on the instance name to get information about the instance. 


6) Instace overview page provide information like connect string, public ip and also memory been used by this database instance. 


7)  Lests try to connect to this database using the sql developer. you need following parameter

1. IP - given on the page above.
2.  Port - given on the page above
3. User - Sys or system
4. Password - used while provisioning this service.

Open the sql developer and create a new connection once filled all the information from above use test button to test and save to save.  Once connected its open as a normal database you can create a new schema or add table to existing schemas.





8) Once this is done mean our database instance is ready for the agent installation lets go to next page to install the agent.



Click here to move to agent installation.


Thursday, 12 September 2019

Oracle ICS vs Oracle SOA Suite 12c

This post we are talking about ICS and Its sibling Oracle SOA suite.

There are quite a buzz around oracle ICS(integration cloud services).  Its been considered as next version of oracle SOA suite, and there are various trends and Oracle road map says its the only solution going to exits after sometime.  Based on my experience I have compared both and tried to provide my point of view on both the solutions methodologies , I am saying solution methodologies, because ICS is not a functionality rich framework like oracle soa Suite.  Lets see both for various point.
  1. Architecture - Oracle SOA Suite follow the SCA service component architecture while ICS is also follow same architecture but that is behind the walls of Cloud, hence its not fairly visible as its in SOA Suite.
2.  Development  environment - SOA suite need a comprehensive ide (jdev) and development environment with weblogic installed along with minimal one managed server,  this is very made workable using integrated weblogic support. Still every development machine require a minimal machine require a jdev.  While ICS primarily does not need anything like this but to create wsdl and other artifacts can use eclipse or jdev.

3.   Tooling capabilities - ICS looks limited if we see tool available right now, ICS is a service not a development framework and hence there are limitations, till now there is no MDS support in ICS, WSDL is supported only if inline. scheduling is additional aspect of ICS but advance feature like sub processes template, are missing.   ICS provide minimal ways to provide integration between cloud applications. But moving towards maturity.
4. Reference Data - Oracle SOA suite has multiple ways to save reference data, like DVM, xref and preference variables. While in ICS reference data can be save in lookups.

5. Mapping Resources- SOA has a wide variety of mapping technology. ICS mapping can be done using mapper and xlst but to create mapper we need an external editor.


SOA Suite                         ICS
XSLTXSLT - No editor support
JQUERY


6.  Pattern to Trigger - There coluld be different ways to trigger a composite like invocation of service, polling, message, schedule  invocation of service, JMS adaptor, while in the ICS possible ways of trigger are almost same but use a different terminologies.

7. Common components.  SOA suite has a robust mechanism to handle common artifacts like WSDL, Schema, reference data while ICS is not mature enough for all of this, still to handle common artifacts.

8. Manageability :- Oracle SOA suite has a lot parameter to manage, it require minimum an apps DBA having experience over the weblogic and database to manage infrastructure while a developer to manage an Oracle  ICS you need just an ICS developer.



For new projects, there are quite a few things you need to consider, before moving to cloud


A. Is it a fresh development or upgrade.
 The project for which you are considering ICS, if its an upgrade project then better to discuss with Oracle first. To me project has to go through the normal upgrade to 12c first and then to ICS. There should not be any confusion ICS is strictly a fresh development. Hence effort will be drastically increased for an upgrade project.

B. Does project already have an Infrastructure and the integration you are creating is a addition to already existing integrations.

This is again where it should be developed with SOA Suite, ICS is a costly affair to develop a new integrations, while you already have infrastrure and already have existing running integration system.

C.  A new implementation of ERP Cloud .
This is a prefect case to  use ICS,  here you have already subscribe to one of the ERP cloud where infrastructure  is with service provide and for just integrations you may not want to stand up a team for support. With ICS adaptors half of the work may already been solved and it will just be few easy mapping need to be drawn. Hence should propose ICS.

D.  Cloud to On premise ERP integrations
This can be a case with a hybrid architecture where your client might be using a on premise ERP but other systems in cloud and want an integration between them, ICS can be a prefect case for this.

E.  On Premise to On Premise
This is a case where you should choose SOA suite over ICS. There is no point having integration layer in cloud when having both the end system in the client intranet.

Tuesday, 3 September 2019

Oracle Jet vs Oracle ADF - A Design comparison

Oracle Jet vs Oracle ADF  

(When technology talk to each other)


Oracle Jet is in market from quite sometime now, almost 3 years and this product is not able to break any ice among the business and developer community. Its again a half backed product which Oracle has push to market. This product is good to develop small POCs and to be honest till now only POCs are been developed in JET its hardly seen a light of the production till now.

Lets compare both the product for the design aspects.



Lets try if Oracle jet and ADF can speak to each other then conversation.


Hi I am coming from Oracle's home grown framework and next generation of OAF. I am oracle propriety framework to develop services and pages, I have everything from transaction management to high availability. I use a lot of java principals and code to extend further and provide a number of files to add java to add business logic.

 Hi ADF,  I have seen you :-), in fact I born when you was a tall boy, but you behave like a old man which has lost speed and power,  sometime you load after a complete day pass, I am also design by Oracle but built on industry's best and stable java script framework. Only things required on a page get loaded when page run. I am quick fast and use minimum server resource. You are so complicated to understand and need a lot concept to learn before become productive.  I am totally a java script toolkit.


Development Efforts and Complexity

 Lets not talk about complexity, I know you are simple but you are too simple to develop, a simple flow of business will take ages to develop with you, which can be developed in a day  or 2 with me.  Lets first talk about simple page with data insert/update. I think it will take hardly any time to develop a simple page doing CURD operation with me,  but you don't have a simple way to develop this, in fact you go round and round to develop and test each model at your end and at last you will need REST which I have by default.


Yes I am a bit complex to develop by code, but VBCS provide a visual way to build applications where time taken is almost same. I agree many complexity like taskflows, antonyms flows are not with me, but that give me an edge to develop a simple pages and flows with quick data replication across component. I am here for simplicity not for the development of data intensive complex flows.


Architecture 

I follow best  java standard layed down by industry. I am based on MVC (model view controller) pattern which segregate each layer involve in the transaction. My model layer is based on ADFBC framework which give a quick way to design view to be shown in the page. Each of ADFBC component have multiple functionality available with just a click to enable.


Agree, being a java script tool kit I also follow best MVVM (model view view model) architecture. This architecture support a quick update of any change across the page. I am based out of industry based java script modules, which is at run-time load by require. I have kept the transaction implementation to developer. My whole architecture is a mix of different java script technologies like promise provide me loading of the pages at runtime. knockout provide me modelling of the data and jquery provide me a easy way to manipulate page without event bubbling. tell me something about internationalisation.

Internationlization and DB Support 

 I am providing support to internationlization since my early days. This support come using the string bundles and I myself take care of Locale. I have a direct connectivity to database, and view (ADFBC View) has direct binding with the database.  Your knockout model and my entity object are almost same.  I can expose Rest or Soap webservices using my view wih just  2-3 clicks.


Inernationlization Support is available with me too,  developer can enable the internationalization support by writing a few line of code in appsControler.js. Yes database is my weak point as I am not meant to do data interaction directly but again its my strong point too, I am open for rest webservices open from any kind of technology.


Future - In Cloud.

- Future of mine look little down, as due to response time and heaviness, I need a few more server to support same kind of transaction. Right now cloud does not have any option to develop ADF page in cloud,  its all and everything to VBCS which is nothing but flavoured jet application,

Mine future looks good, but its again depend on the adoption of VBCS, which is not very much positive so far. But Oracle is pushing really hard to make me future technology. I am the only way to develop extensions in Oracle fusion applications.



 

Based on above conversation, its easy to understand what to choose when. But in Oracle cloud there is no place for ADF very much like no place for BPEL and OSB.

Hence on case by case basis we need to decide architecture of the application and choose the technology.

Feature Selection in AI

In artifical intelegance/machine learning, everything start and end with data and in current world everyday by using facebook, insta we all ...