14. OA Framework 12,
2007
or maybe move to
ADF?
“My general advice is to stick with OAF so
long as you are working with the E-Business
Suite, and wait until you move to the Fusion
Applications before moving to ADF” Java
-- Steven Chan
15. Oracle E-Business
Suite today
ADF?
Java
“Extending Oracle E-Business Suite with
Oracle ADF and Oracle SOA Suite”
APEX?
PL/SQL
“New Whitepaper: Extending E-Business Suite
12.1.3 using Oracle Application Express”
19. Ruby is
object-oriented
dynamic
programming language
simple from outside
Yukihiro
Matsumoto
or “Matz” powerful inside
20. Ruby on Rails
Web applications development framework
Developed in Ruby
Extracted from 37signals Basecamp application
Open source software
Focused on developer productivity
Agile software development approach
21. Main principles
DRY - Don’t Repeat Yourself
Convention over Configuration
Opinionated software
22. MVC Architecture
Request Router Database
SQL
Browser
Response
Action Active
Controller Record
Action
View
23. Active Record (Model)
class CreatePosts < ActiveRecor::Migration
def self.up
create_table :posts do |t| CREATE TABLE posts (
t.string :title id NUMBER(38) NOT
t.text :body NULL,
t.timestamps title VARCHAR2(255),
end body CLOB,
end created_at DATE,
end updated_at DATE
);
CREATE SEQUENCE posts_seq;
class Post < ActiveRecord::Base
# nothing here!
end
post = Post.new
post.title = "First post"
post.save
post = Post.find(1)
puts post.name # output: "First post"
24. Action Controller
class PostsController < ApplicationController
def index
@posts = Post.all
end
def show
@post = Post.find(params[:id])
end
def new
@post = Post.new
end
# ...
end
28. Oracle Data Types
Ruby Rails Oracle
Fixnum :integer NUMBER
Float :float NUMBER
BigDecimal :decimal NUMBER, DECIMAL
Time :datetime DATE
Time :time DATE
Date :date DATE
String :string VARCHAR2
String :text CLOB
String :binary BLOB
True/FalseClass :boolean NUMBER(1), CHAR(1)
33. class Employee < ActiveRecord::Base
set_create_method do
plsql.employees_pkg.create_employee(
:p_first_name => first_name,
ActiveRecord :p_last_name => last_name,
:p_employee_id => nil
)[:p_employee_id]
with end
set_update_method do
PL/SQL plsql.employees_pkg.update_employee(
:p_employee_id => id,
:p_first_name => first_name,
CRUD )
:p_last_name => last_name
procedures end
set_delete_method do
plsql.employees_pkg.delete_employee(
:p_employee_id => id
)
end
end
46. Why Rails?
Fast agile / iterative development
Test-driven development support
Flexible HTML/CSS/JavaScript front-end
Easy to put on top of legacy applications
Libraries for all new “cool” technologies
Open-source with liberal license
47. More information
Demo app source code:
https://github.com/rsim/rails_ebs_demo
http://github.com/rsim/oracle-enhanced
http://blog.rayapps.com