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 :ïŹoat 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