|
1
|
- PeopleSoft Application Classes -
Easing the Path to Fusion
|
|
2
|
- Simon Huggins
- PeopleSoft Consultant at
- nee Allinity
- Now Compel Business Solutions [
STAND 47-48 ]
- Part of Compel [ Free Roulette! ]
- So I am an instance of employee class called “consultant”.
- 2e2 is Parent Class, Compel is SubClass, Compel Business Solutions
Sub-SubClass
|
|
3
|
- Application Classes have been available for a while now as an
alternative to function libraries in PeopleTools. The object-oriented
thinking that embodies this technology can be seen as the road forwards
to the final Fusion development architecture.
- This seminar gives some real-life examples of how to use Application
Classes as a framework for your business logic, and goes through some of
the pros and cons for Designers, Programmers and Managers.
- It also shows examples of how this technology is actively employed
within PeopleSoft Application and Portal technology.
- It argues the advantages of reusable and extensible coding, and that it
is a mid-path shift in mindset that will ease the eventual change from
PeopleCode to Java, and make the transition from PeopleCode to
class-based Java far more intuitive, thus minimising the transitional
learning curve and business impact of developer retraining.
- Time to get object oriented.
|
|
4
|
- Fusion Architecture here now
- Applications will be Java-based
- Development using JDeveloper
- Might be an idea to investigate Oracle Apps…
- … As JDeveloper now replacing Forms development
- Java is Object Oriented – Class based
- Application classes exist in PeopleSoft
|
|
5
|
- First Oracle Apps due in the next few years
- No guarantee of porting of PeopleCode
- “Apps Unlimited” says we will all be supported for a good long time…
- … But this is a bit hazy on supported platforms when you look at your
contracts - what when these go out of date?
- May be looking at a rewrite of PeopleSoft business logic in Java
|
|
6
|
- PeopleSoft traditionally event-based
- Triggers from limited set of objects – e.g. records, components,
messages
- Java class based. Events are class “Methods”.
- PeopleSoft Application Classes can model this
- Classes are based on real-life entities – so can map better to business
processes
- Use classes now, developers have most of the skills required to develop
in Java
- When porting, easier to map classes-to-classes
|
|
7
|
- The Object Model for Fusion is not yet available. Difficult to know how
to accurately model classes
- If you don’t skill up now, it’s a steeper learning curve when Fusion
arrives
- Replace existing Function Libraries or Introduce Application Classes /
Packages with new implementations?
- More work associated with creating App Classes than creating a quick
one-off function
|
|
8
|
- No idea of structure to be used in Fusion
- If to be class based, create classes for business objects now in
PeopleSoft
- Reuse and extend classes for future projects
- When need to upgrade, could potentially keep much of existing class
hierarchy and map this to Oracle classes using transformational classes
- Or reimplement the business model at lower class levels in terms of
Fusion access model
|
|
9
|
- Extra training-up (even if informal)
- Debugging is more complex / haphazard – e.g. watching variables can be
temperamental
- Complex hierarchies can be difficult to follow / maintain as the
business logic can be over-abstracted
- Function Libraries are known and loved (!?)
- Code looks more complex
- More difficult to optimise database access due to abstraction from
entity to business model
|
|
10
|
- Wikipedia Definition:-
- Object-oriented programming (OOP) is a programming paradigm that uses
"objects" and their interactions to design applications and
computer programs. It is based on several techniques, including
inheritance, modularity, polymorphism, and encapsulation.
|
|
11
|
- Plato invented these really – believed that every object was stamped
from an idealised “form” – e.g. an idealised form a human exists which
we all mimic. This form are archetypes of many types & properties.
- A “Class” (or Plato’s “Type”) represents an idealised, pared-down view
of an object in reality – e.g. a “Human”
- Application Classes are PeopleSoft’s implementation of a “Class”
|
|
12
|
- Plato, they say, could stick it away….
- … How much every day?
|
|
13
|
- Sometimes “Object” used when mean “Class”. Careful!
- Object is an example (or “instance”) of a class – e.g. if have a class
called “Human”
- Jim is an object of class human with yellow hair and dodgy clothes and
job: DBA
- Hema is an object of class human with black hair amazing clothes and
job: HR Person
- Objects are created, instantiated (i.e. given an initial state),
used/abused, and destroyed (often automatically according to scope)
|
|
14
|
- PeopleSoft
- Class Human
- method Human();
- property string hair;
- property string clothes;
- property string job;
- End-Class;
|
|
15
|
- Property (or attribute or message) can be seen in various different
ways:-
- A measurable property of an object – e.g. hair colour
- A part of an object’s state (i.e. the property is maintained during the
life of the object)
- A way of defining how data goes into and out of an object (i.e. an
interfacing method – hence message)
- A variable with specific scope (not strictly true, but the nearest
programmatic analogy)
- A property has a type – often that type is another Class (e.g. job:
class of AllowedJobs)
|
|
16
|
- Class: “Human”
- Subclass “Employee”
- Has properties of Human (i.e. Hair Colour, Job etc.)
Thus “inherits” properties of “Human” class
- Has extra properties such as “Pay Reference” and “Department” – so
“extends” the “Human” class
- Application classes allow for base abstract classes (as does Java) –
which means at “Human” level we may declare that (e.g. Hair Colour) must
be specified in subclasses, but not define how. Implemented in
“Employee”
|
|
17
|
- Class Human
- method Human();
- property string hair;
- property string clothes;
- property string job;
- End-Class;
|
|
18
|
- Properties define the interface to the “state” of an object.
- Methods are the functional “engine” of an object – the doing bit that
changes the “state” of an object and retrieves info about that state.
- In Application Classes, can define a property dynamically by defining
its input and output using “set” and “get” methods.
|
|
19
|
- class Human
- method Human();
- property string Hair get set;
- private
- instance string &myHair;
- end-class;
|
|
20
|
- Create a “Human” class
- Create an object of type “Human”
- Write some code using Human objects
- Create a subclass of “Human” called “Employee”
- Add some code to change the object code is working on to “Employee”.
Code stays the same, but now working from “Employee” object
- “Knows” which object to use based on what object
- Can only use methods/properties from “Human”
- Use Downcasting for methods etc. from “Employee”
|
|
21
|
- There’s a lot more – for example:-
- Application Packages hold application classes – i.e. a sort of class
library
- Multiple inheritance (e.g. where a class has more than one parent) is
not supported
- Encapsulation – i.e. scope of properties and method within objects
- Abstraction – i.e. hiding details of lower levels in a class hierarchy
by generalising at higher levels
- You can use Java from within PeopleSoft – it’s a bit clunky, bit can be
done
|
|
22
|
- Services and Service Operations
- Services Component: create and manage services.
- Service Operations Component: create and manage service operations
(creating operations, assigning messages, adding handlers, etc.)
- Integration PeopleCode
- Extend delivered application classes to create messaging logic.
- Logic is attached to handlers instead of messages.
- New object called IntBroker with many of the methods and functions of
the Message object
- Provide/Consume Web Services
|
|
23
|
|
|
24
|
|
|
25
|
|
|
26
|
- Chris Collins – 2004
- Customization – CRM Site Component
- E.g. New Site Class extending PS Site class
|
|
27
|
- No Portal Examples – Sorry!
- Portal is class-based
- Can do some sneaky “customisations” by playing with these classes.
Careful! These changes will inevitably be unsupported.
- Investigate by all means – look in app packages – e.g. PT_NAV /
PT_BRANDING (v. interesting to customise!!!)
- When tracing through code – you’ll inevitably stumble across these
classes
|
|
28
|
- Create Base Excel reporting Class
- Worksheet Class
- Instatantiate using Run Control & Data Record Source
- Multiple Worksheets can be instantiated from different sources
- Row class, Column class etc. to define spreadsheet (either automatically
from data structure or programatically)
- Generate Excel report using XML schema in potentially 4 lines
|
|
29
|
- Basic Java Course:
- http://simonhuggins.com/courses/javaweb
- Presentation not posted on UKOUG web site yet – will post shortly.
- Will also post presentation + sample project as Change Package on http://ww.simonhuggins.com/peoplesoft/UKOUG/2007
ASAP
- May even give instructions on how to extract the project to avoid using
Change Assistant (bleugh!)
- http://www.compelbs.co.uk – Compel Business Solutions
|
|
30
|
- Andrew Terrell (pointer to CRM & CDM Red Paper)
- Chris Collins (Sample of Inheritance & Casting to prevent
customisation)
- (Dr) Dave Gaff & Manish Patel (overviews of Application Messaging)
- My Wife
- My Agent (!?)
- My Cat etc etc. blub blub.
|