290 likes | 719 Views
Me. Simon HugginsPeopleSoft Consultant atnee AllinityNow Compel Business Solutions [ STAND 47-48 ]Part of Compel[ Free Roulette! ]Part of 2e2So I am an instance of employee class called consultant".2e2 is Parent Class, Compel is SubClass, Compel Business Solutions Sub-SubClass. Abstrac
E N D
1. PeopleSoft Application Classes -Easing the Path to Fusion
2. Me Simon Huggins
PeopleSoft Consultant at
nee Allinity
Now Compel Business Solutions [ STAND 47-48 ]
Part of Compel [ Free Roulette! ]
Part of 2e2
So I am an instance of employee class called “consultant”.
2e2 is Parent Class, Compel is SubClass, Compel Business Solutions Sub-SubClass Spin of the roulette wheelSpin of the roulette wheel
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 and App Development 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. Fusion Upgrades 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. Case for “Skilling Up” 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. Potential Issues 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. Case for implementingclass-based business model 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. Case against implementingclass-based business model 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. Object Orientation 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. Classes & Plato 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”
Talk about classes – e.g. Animals / Primates / HumansTalk about classes – e.g. Animals / Primates / Humans
12. Prize Question
Plato, they say, could stick it away….
… How much every day? Half a crate of whiskyHalf a crate of whisky
13. Objects 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. Example Class of Human PeopleSoft
Class Human
method Human();
property string hair;
property string clothes;
property string job;
End-Class; String is a standard variable type, but can also be seen as a “class” in its own right – e.g. in string.length() to get the length of a string object.
In reality would have a type – e.g. “JobType” which might have subclasses called “Smart Wear”, “Casual Wear” – and “Casual Wear” might have a subtype called “Student Wear” and “Goth Wear”String is a standard variable type, but can also be seen as a “class” in its own right – e.g. in string.length() to get the length of a string object.
In reality would have a type – e.g. “JobType” which might have subclasses called “Smart Wear”, “Casual Wear” – and “Casual Wear” might have a subtype called “Student Wear” and “Goth Wear”
15. Properties or Attributes 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. Inheritance 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. Sample of subclassingPeopleSoft Class Human
method Human();
property string hair;
property string clothes;
property string job;
End-Class;
18. Methods 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. Example of “Get” and “Set” class Human
method Human();
property string Hair get set;
private
instance string &myHair;
end-class;
20. Polymorphism 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. … And The Rest 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. PeopleTools 8.48Web Service Integration 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 Gateways service multiple Nodes
Within each Node are Queues
Queues run multiple Service Operations
Service Operations are comprised of Services, Routings and Messages
Message Subscription PeopleCode is now handled with App Packages and is configured online,
but the AppPackage is still editted using AppDesigner
An App Engine is provided as part of the Tools upgrade from 8.47 to 8.48 to migrate Subscription
PeopleCode to App Packages and create the new Service Operations, but its not foolproof, and
took several Tools patches to resolve everything. Lots of things that weren't considered are
handled by 'deprecated' handlers.
As usual, errors in Publishing-Subscribing are still a process of digging thru each layer
to the next til an error is identified. Starting/stopping domains, shutting down / restarting
PUBSUBs are same as usual. Theres still no easy way to identify stuck queues or messages
in error before the queue starts to backup and things fail. Service Operations Monitor helps,
but its a reactive not a proactive screen.
Gateways service multiple Nodes
Within each Node are Queues
Queues run multiple Service Operations
Service Operations are comprised of Services, Routings and Messages
Message Subscription PeopleCode is now handled with App Packages and is configured online,
but the AppPackage is still editted using AppDesigner
An App Engine is provided as part of the Tools upgrade from 8.47 to 8.48 to migrate Subscription
PeopleCode to App Packages and create the new Service Operations, but its not foolproof, and
took several Tools patches to resolve everything. Lots of things that weren't considered are
handled by 'deprecated' handlers.
As usual, errors in Publishing-Subscribing are still a process of digging thru each layer
to the next til an error is identified. Starting/stopping domains, shutting down / restarting
PUBSUBs are same as usual. Theres still no easy way to identify stuck queues or messages
in error before the queue starts to backup and things fail. Service Operations Monitor helps,
but its a reactive not a proactive screen.
23. PeopleSoft Enterprise TalentAcquisition Manager Framework Uses Application Class Type Setup to allow you to create types of classes, classes, map these to records for easy lookup to define engines used for integrating with Open Ingration FrameworkUses Application Class Type Setup to allow you to create types of classes, classes, map these to records for easy lookup to define engines used for integrating with Open Ingration Framework
24. CDM (CRM) Business Object Relationship Model (BORM) The BORM provides a configurable way to define and capture relationships about customers, suppliers, contacts or any other people or organizations that are meaningful to your business. The fundamental structure of the BORM consists of six tables that define the types of business objects to be managed in the system, the roles these objects can play, and the relationships the objects can participate in when acting in these roles.
The BORM provides a configurable way to define and capture relationships about customers, suppliers, contacts or any other people or organizations that are meaningful to your business. The fundamental structure of the BORM consists of six tables that define the types of business objects to be managed in the system, the roles these objects can play, and the relationships the objects can participate in when acting in these roles.
25. CDMApplication Class Hierarchy In computer Science terms, Reflection provides the ability for a class to expose meta-data to other programs that describe the properties and methods available to the consumer of the class. Many CDM applications use this ability, namely Quick Create and Basic Data Summarization. The Reflection class allows its sub classes to expose their properties and methods at run time.
In computer Science terms, Reflection provides the ability for a class to expose meta-data to other programs that describe the properties and methods available to the consumer of the class. Many CDM applications use this ability, namely Quick Create and Basic Data Summarization. The Reflection class allows its sub classes to expose their properties and methods at run time.
26. CDM Customization Chris Collins – 2004
Customization – CRM Site Component
E.g. New Site Class extending PS Site class
27. Portal 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 Not time to investigate / doNot time to investigate / do
28. Excel Reporting Library 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. Links 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. Thanks to… 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.