The siebelhub.GetFieldValue Method

Transcription

The siebelhub.GetFieldValue Method
aMind’s
Mobile
Platform
Drives Door-to-Door Sales
Transformation
for
Cablevision Monterrey
Robust offline sync, rapid deployment, flexibility, and easy
in-house maintenance put TethrOn’s mobile development platform
head and shoulders above competitive solutions.
The Challenge
Selling cable services door-to-door is highly effective for
Cablevision Monterrey. Customers appreciate in person
explanations of different bundles matched to their unique
viewing devices, content preferences, and budget.
However, the job of the door-to-door sales representative is
no easy task. Frequently changing product bundles and
promotions with complex options are difficult to present to
customers. Cablevision Monterrey’s comprehensive product
offerings require ongoing training, and their complexity
creates confusion, reducing conversion rates. Complicating
matters, many residential areas have spotty internet access
making many mobile apps unreliable.
With sketchy internet access, sales representatives rely on
paper to print their daily schedule, neighborhood addresses,
and promotional bundles. Paper-based processes are
highly
inefficient, reducing the number of visits that can be made in
a day.
Cablevision Monterrey didn’t need convincing that mobilizing
cumbersome paper process could greatly improve the performance
of their door-to-door selling team. The challenge was finding
an affordable solution that would launch in less than 60 days
and deliver:
Robust offline support for door-to-door field workers.
A platform that becomes the standard for mobile
application development.
Flexibility to scale with the company’s growth.
Simplicity for in-house development and maintenance.
Management performance data to track each individuals
performance in real time.
Quick time to market.
Cablevision’s Director of I.T. José Quiñónez López reports,
“Our requirement was to get a framework to accelerate mobile
applications development. Our first project is a door-to-door
selling application. We needed the project implemented in less
than two months. TethrOn met this challenge.”
The aMind Solution
After an extensive review of mobile development platform
alternatives, Cablevision selected TethrOn for high
performance offline sync and support for exceptionally rapid
app development.
TethrOn’s “no code” development approach means that
comprehensive mobile applications can be built rapidly. The
TethrOn enterprise mobility platform includes prebuilt backend
connectors, data access code, synchronization of data and
security. This frees developers to focus on defining business
processes and creating a branded user interface.
Using the TethrOn development platform the IT group within
Cablevision Monterrey built their first proof of concept doorto-door selling app in less than 60 days.
The Result
The selection of the TethrOn mobile development platform has
been a win-win-win for the company.
The IT department is thrilled at how simply and cost effective
it was to get up to speed on the TethrOn platform and deliver
the first version of their door-to-door selling app.
Sales people appreciate having digital territory information
available at their fingertips and with future releases will be
able to easily quote and order services while working directly
with customers.
And managers are excited by the collection of data that
supports tracking and adjusting sales performance in realtime.
Discover how you can transform your field sales and service
with aMind Solutions. >>
siebelhub.js – Documentation
(Part 2)
Today we continue having a closer look at the methods provided
by the Siebel Hub JavaScript library for Siebel Open UI.
For recent articles, please refer to the links below:
Downloading and Installing siebelhub.js
Documentation Part 1
The siebelhub.GetControlValue Method
Getting the current value of a control can be tricky. It can
only be done through the PM’s ExecuteMethod method. The
siebelhub.GetControlValue method acts as a simple wrapper.
siebelhub.js
GetControlValue
method (click to enlarge)
To access the code example as text, please click here.
Input Arguments of siebelhub.GetControlValue
The siebelhub.GetControlValue function has the following input
arguments:
context: an instance of a PM, PR or Applet
control: an Applet Control instance
Output Arguments of siebelhub.GetControlValue
The siebelhub.GetControlValue function returns the current
value of the Applet Control object.
Flow of siebelhub.GetControlValue
The code accomplishes the following:
Get the PM of the context object
If the PM is valid, use the ExecuteMethod API method to
execute the GetFieldValue method against the control
instance
Return the value
Use Case for siebelhub.GetControlValue
The following code example from a custom Physical Renderer
demonstrates how to use the siebelhub.GetControlValue method.
var oControlSet = PM.Get("GetControls");
var accControl = oControlSet["Account2"];
var sAccountName = siebelhub.GetControlValue(PM, accControl);
The siebelhub.GetFieldValue Method
On some occasions, we might want to get a Field value. This
value represents the current Business Component Field’s
content and can be extracted from the logical “Record Set”.
The siebelhub.GetFieldValue method facilitates this by
providing the developer with a variety of options, such as
providing the field name in “dot notation”.
siebelhub.js GetFieldValue method
(part)
To access the code example as text, please click here.
Input Arguments of siebelhub.GetFieldValue
The siebelhub.GetFieldValue function has the following input
arguments:
field: the name of a BC field or BC.Field (dot
notation); e.g. “Id” or “Opportunity.Id”
context (optional): an instance of a PM, PR or Applet;
if not provided, the code uses the active applet’s PM as
the context
Output Arguments of siebelhub.GetFieldValue
The siebelhub.GetFieldValue function returns the value of the
field.
Flow of siebelhub.GetFieldValue
The code accomplishes the following:
Split the field name to separate business component and
field name (Note: at the time of writing, this function
does not work with field or BC names that actually
contain a period (dot) character! A todo has been
added).
If a context is provided, get the PM instance.
If
only
a
BC
name
was
provided,
use
the
siebelhub.GetAppletsByBCName method (see below) to find
any applet in the current view that uses that BC and get
that applet’s PM instance.
If no context was provided and no applet uses the BC,
get the currently active PM (see below for a description
of the siebelhub.GetActivePM method).
If there is a mismatch between the input BC name and the
applet’s BC, raise an error message.
Use the siebelhub.GetRecordSet method (see below) to get
the raw record set of the PM.
Identify the active record using the GetSelection PM
property.
Get and return the value of the field.
Use Case for siebelhub.GetFieldValue
The following code snippet comes from a custom Presentation
Model function that retrieves Account data for the current
Opportunity record. The original lines are commented out to
demonstrate the benefit of the siebelhub.GetFieldValue method.
function GetAccountData(){
//var oRaw = this.Get("GetRawRecordSet");
//var index = this.Get("GetSelection");
//var opptyId = oRaw[index].Id;
//using siebelhub.GetFieldValue replaces the 3 lines above:
//var opptyId = siebelhub.GetFieldValue("Opportunity.Id");
//alternatively, pass current PM context
var opptyId = siebelhub.GetFieldValue("Id", this);
The siebelhub.GetAppletsByBCName Method
As discussed above, it can come handy sometimes to find
applets (in the active view) that use a certain business
component.
The
siebelhub.GetAppletsByBCName
method
accomplishes this.
siebelhub.js GetAppletsByBCName
method (click to enlarge)
To access the code example as text, please click here.
Input Arguments of siebelhub.GetAppletsByBCName
The function has the following input argument:
bcname: the name of a Business Component
Output Arguments of siebelhub.GetAppletsByBCName
The function returns an array that contains all applet
instances referring the the BC.
Flow of siebelhub.GetAppletsByBCName
The code accomplishes the following:
Get the array of applets of the active view (aka ‘applet
map’).
Iterate through the array of applets.
For each applet, get the business component name and
compare to the input string.
If there is a match, add the applet instance to the
output array.
Use Case for siebelhub.GetAppletsByBCName
The following code example demonstrates how to use the
function and get all applets in the current view that use the
Account BC.
var
allAccountApplets
siebelhub.GetAppletsByBCName("Account");
=
The
GetActiveApplet,
GetActivePM, GetActivePR Methods
These three methods are very similar in nature and do what it
says on the tin. These methods are used a lot across
siebelhub.js internally but can also do a lot of good when you
want to quickly establish context to the currently active
applet, its PM or PR.
GetActiveApplet: returns the currently active Applet
instance.
GetActivePM: returns the Presentation Model instance of
the currently active applet.
GetActivePR: returns the Physical Renderer instance of
the currently active applet.
Use Case for siebelhub.GetActiveApplet
The
following
code
example
shows
how
to
use
the
siebelhub.GetActiveApplet method. The GetActivePM
GetActivePR methods can be used in a similar fashion.
and
var
currentRowId
= siebelhub.GetFieldValue("Id",siebelhub.GetActiveApplet());
The example code calls the siebelhub.GetFieldValue method to
retrieve the value of the Id field (ROW_ID) of the currently
active record in the currently active applet.
The siebelhub.GetRecordSet method
Accessing the record set of an applet is often required in
Siebel Open UI. The “record set” only includes the currently
visible data (more fields are exposed in the ‘raw’ record
set). The siebelhub.GetRecordSet method makes it easy for
developers to get the current record set.
siebelhub.js GetRecordSet method
(click to enlarge)
To access the code example as text, please click here.
Input Arguments of siebelhub.GetRecordSet
The function has the following input argument:
raw: boolean; true to retrieve the ‘raw’ record set,
false to retrieve normal record set
context (optional): PM, PR or Applet instance, defaults
to active PM
Output Arguments of siebelhub.GetRecordSet
The function returns the PM’s record set.
Flow of siebelhub.GetRecordSet
The code accomplishes the following:
Instantiate the PM from context or use the active PM.
Depending on the raw argument, either get the value of
the GetRecordSet or GetRawRecordSet PM property.
Use Case for siebelhub.GetRecordSet
This code snippet is from the siebelhub.GetFieldValue method
and shows how to use the siebelhub.GetRecordSet method:
var recordset = siebelhub.GetRecordSet(true,pm);
OK, that’s it for today. Please stay tuned for more
siebelhub.js documentation right here on the Siebel Hub blog.
Siebel Hub JavaScript Library Guide
As a special treat, we have put together the complete
documentation for siebelhub.js as a Kindle e-book, available
for a small fee on Amazon.
Or if you prefer PDF, you’ll find it on the Siebel Hub Shop.
Siebel
Hub
JavaScript
Library Guide
have a nice day
@lex
OnTheMove – Siebel Mobility
with a new Focus #2
OnTheMove – Siebel Mobility with a
new Focus #2
In Part Two of this article I would like to continue to
review the OnTheMove solution from Customer Systems, and
provide some further information as to the hard technical
stuff that has gone on to produce this new User Interface and
approach, as well as giving readers a number of places where
they can get more information about OnTheMove. Firstly though,
a reminder from the last part of the article:
What is OnTheMove?
OnTheMove for Siebel is a set of applications that aim to
solve the “Siebel Mobile” and “Siebel Disconnected Mobile”
conundrums. Unlike other applications in the same space, which
attack the problem first from a technical perspective,
OnTheMove concentrates on what makes Siebel successful – it is
a tool to let users get their job done. And when it gets that
part right, the user adoption challenge is already greatly
lessened. So the process is the key.
Rich Process-based User Experience
The OnTheMove Field Service experience that I am using as my
demonstration has everything you would expect – parts,
invoicing, customer confirmation through electronic signature
capture, wrap up screen for the engineer to capture any
further requirements before moving off and so on. Here is a
little gallery to let you see some more of this well-designed
application.
OnTheMove – My
Work Day
OnTheMove –
Signature Capture
OnTheMove –
Wrapping Up
Strong Patent-pending Offline Support
And just in case you think this Application is “just a pretty
face” you would be wrong – notice the Synchronize tab on the
left hand side. The OnTheMove application has a strong
offering to provide offline use and has a vastly simplified
User Interface for that too. As someone who believes that the
standard Siebel Open UI “Mobile Disconnected” user interface,
with tiny aeroplane icons (or satellite dishes depending on
your version) is both frustratingly small and over
complicated, I love this:
OnTheMove – Synchronize
Hiding behind this simple initial screen is a powerful
synchronization engine – handling complex scenarios with finegrained rules, using caching structures to optimize speed and
providing audit facilities to see “who did what”. All of these
solutions are dedicated to providing
most appropriate, simple process they
done, whilst helping speed up
administration for the business at
the End User with the
need to get their job
the deployment and
the same time.
Get the Job Done Right
The title of this paragraph seems to me to sum up the basic
premise of OnTheMove – provide developers, Siebel customers
and Siebel users with solutions that just work, letting them
focus on getting the job done whether they are consultants,
business owners or technicians on the move.
Other Applications
My walk-through described in this post was based on a Field
Service scenario, but the OnTheMove concept is far broader
than that – there are any number of business processes that
can benefit from this new user interface and new mobilefriendly platform. Duncan says he has customers using
OnTheMove for Siebel for Sales, CPG in-store execution, doctor
detailing, clinical trials and donor management as well as
field service.
I was lucky enough to be able to examine another, orderfocused application with a slightly different use case. I
could see that the same attention to business users and
business process was evident in that application too.
OnTheMove –
Account Details
OnTheMove – Order
Details
OnTheMove –
Account List
Getting more information
OnTheMove is a really exciting addition to the Siebel Mobile
space. By taking a different approach to most of the other
providers, they have produced a really convincing platform. To
get more information, there are several places I can
recommend.
Video and Register for a Webinar
Find an Office near you
Contact Directly
I encourage you all to find out more about Customer Systems
and OnTheMove. Seeing such a long-time Siebel team as Customer
Systems focusing their firepower on this problem is great news
for the Siebel Community.
Open UI is just a waste of
time…
Open UI is just a waste of time……or
is it?
My apologies for the clickbait title. But
I want to thank one of our loyal readers
from France, JDL, for his excellent
suggestion for the new January 2016
Siebel Hub Snap Poll. He proposed to ask
the Siebel Hub Community what they really
feel about Siebel Open UI Development. How much workload have
we gained or lost in development with the arrival of Siebel
Open UI. Is your development workload typically longer or
shorter compared to the Siebel High Interactivity development
phase?
Please help us feel the pulse of the Siebel Hub Community and
answer this single question survey. Thank you all for your
time. And of course do not forget that if you have a good idea
for a Snap Poll, you can submit it using our User Submitted
Article feature.
Have a nice day, and help the Siebel Hub continue to build out
it’s library of reference information about our favorite
product and it’s positive and negative aspects.
Rich@rd
aMind
Solutions
Enables
“Mobile
First”
iPad
Application for AT&T
aMind’s mobile infrastructure and APIs enable innovative
mobile app for AT&T sales and partners, improves efficiency
and showcases mobile capabilities.
The Challenge
AT&T had an enterprise-wide mobility initiative to mobilize
its B2B direct and indirect sales forces.
While sales teams were equipped
with Apple iPads, their Oracle
Siebel 8.1 SFA system was heavily
customized, and the desktop UI was
not adequate to support selling in
the field. Customer data and
processes spanned more than 13
systems and required users to log
into each system separately to look
up information and complete the
sales process.
The company carefully evaluated multiple options including
SaaS/Cloud offerings, Oracle Open UI, or building a mobile app
from the ground up in-house before selecting aMind Solutions.
Read the full story.
The aMind Solution
To mobilize AT&T’s sales team, aMind integrated multiple
disparate systems, including Siebel CRM system and its 20
million records and related processes. Data.com company and
business contacts, IBM Connections social collaboration
platform, and 13 additional disparate systems for trouble
tickets, billing, orders, contracts, revenue, data warehouse
and customer intelligence were all integrated together in one
app to mobilize sales.
The aMind architecture then exposed these systems through a
set of API’s to a single mobile SFA app developed by AT&T. In
addition, numerous new features and capabilities were added by
in-house developers, leveraging the aMind APIs, to improve the
mobilized sales user process:
Sleek, Intuitive User Interface: UI optimized
specifically for the device that includes tabs for Home,
Accounts, Opportunities, Leads, People, Communities, and
Search. UI offers recently viewed (accessed) records,
Dashboards, Lead and Opportunity drill-downs, and
advanced search capabilities.
Collaboration & Socialization: Enterprise social
collaboration (IBM Connections) was integrated into the
sales process allowing users to post social updates
within the app. Crowd-sourced data (Data.com) enabled
new contact discovery.
Additional features include:
social profile management, social communities, search
feeds, etc.
Financial, Business Intelligence & Reporting: Analytics
stored locally to enable real-time financial, revenue,
and drill-down analytics. Preferences also stored
locally to enable Dashboard personalization and
customization.
Electronic Signature Capture: Electronic document
signing enabled on the iPad to allow customers to sign
contracts on the spot.
GPS Mapping: Location-based account proximity mapping
integrated with multiple data sources.
“The aMind solution fulfilled our ‘Mobile First’ strategy,
providing the latest in mobile tools and an application that
improves sales and partner efficiency, and showcases
capabilities to our customers.”
The Result
aMind Solutions developed the infrastructure and APIs
delivering significant businesses benefits for AT&T and its
mobilized sales and partner teams. Some of the key results
include:
Improvement in Sales Effectiveness
Multiple systems seamlessly integrated into a single
mobile API, allowing the entire sales process to be
easily and efficiently managed on the mobile device.
Centralized Information Reduced Cycle TImes
New and enhanced features – dashboards, social
integration, location-based mapping, electronic
signature capture, trouble ticket integration, drill
down, search, and more − further streamline the process,
increase sales effectiveness and together worked to
reduce sales cycle times.
Improved Close Rates
Through a single, holistic account dashboard that
provides users with a 360-degree view of key account
information (contacts, opportunities, solutions, orders,
trouble tickets, etc.). Sales and partners are able to
more effectively and efficiently manage existing
accounts and close business more quickly.
Improvement in System Performance
The mobile application runs faster than native Oracle
Siebel. Long running operations are performed in the
background so the user does not need to wait for them.
Reduction in Training Time
The UI is designed to intuitively guide sales and
partners through the sales process, virtually
eliminating training.
Showcases AT&T Capabilities to its Customers
Providing an intuitive, highly efficient app on the
latest mobile devices enables AT&T’s sales and partners
to improve efficiency and showcase the
leading capabilities to its customers.
company’s
aMind Solutions’ technology, coupled with aMind’s expert
professional services, enabled the rapid development of highly
efficient mobile friendly APIs against Siebel and other
systems, enabling AT&T’s 32,000 sales and partner users to
easily and effectively access data from Oracle Siebel CRM and
other enterprise applications via their iPads.
Based on the success of the application, AT&T is actively
expanding the solution across the entire enterprise,
leveraging the aMind solution as the mobile platform to
achieve enterprise-wide “Mobile First” success.
Learn more about AT&T’s mobile success at aMind Solutions >>
Siebel Hub Snap Poll Results
– IP2015 Innovations
Siebel Hub Snap Poll Results
And so we present the results of the first Siebel Hub Snap
Poll of 2016. As could have been expected, a low number of
voters due to the Holiday Season and the New Year. The results
of the question “What is the most useful new Innovation
in Innovation Pack 2015.5?” are displayed below. Watch out in
the coming days for a new, exciting reader-suggested Snap
Poll.
Don’t forget – the Siebel Hub Community Snap Polls are all
available as historical reference points. Find them in the
Siebel Hub Snap Poll Archive.
siebelhub.js – Manifesto and
Documentation (Part 1)
Now that we have discussed how to download and install the
Siebel Hub JavaScript library for Siebel Open UI
(siebelhub.js), we can start exploring the main functionality.
First, let’s define what siebelhub.js is all about:
The siebelhub.js Manifesto
siebelhub.js is an educational, phenomenal, inspirational,
comprehensive (epic) JavaScript library for Siebel Open UI.
Its main purpose is to serve as an example how to create a
custom Siebel Open UI library of utility functions.
siebelhub.js provides wrapper functions that allow Siebel Open
UI developers to focus on implementing functionality rather
than solving common problems. For example, instead of spending
valuable productive time to figure out how to securely access
the label/header for any given Applet Control or List Column,
developers can use the siebelhub.GetLabelElem function.
Another goal of siebelhub.js is to provide examples how to use
generic code in Siebel Open UI. This means that the code
should work in any ‘context’, be it called from a Presentation
Model, Physical Renderer, Plug-in Wrapper, Event Listener or
any other Open UI code file. Finally, code in siebelhub.js
supports the principle of language independency by providing a
simplistic way of keeping translatable strings separate from
the code.
siebelhub.js is open source and is provided ‘as-is’ without
any liability or support. Being a purely educational exercise,
no parts of siebelhub.js are intended for use in production
systems (however, we do hope it inspires you to write your own
library). The Siebel community is hereby invited to
contribute, comment and improve the library on GitHub.
OK, so now we cleared that up, let’s have a look at some of
the functions that siebelhub.js provides:
The siebelhub.SetControlValue Method
One of the best kept secrets of the Siebel Open UI API is how
to set a control value programmatically. Anyone who has ever
implemented a custom Plug-in Wrapper knows what this means.
And you probably know that you have to call the PM ‘focus’ and
‘blur’ events. Personally, I always found the lack of a simple
function to do that a bit disturbing (but there’s hope).
The siebelhub.SetControlValue method wraps the repetitive
calls to the PM’s OnControlEvent method and allows Siebel Open
UI developers to use a single line of code to set a control
value. Here’s the current code:
siebelhub.SetControlValue (click
to enlarge)
To access the code example as text, please click here.
Input Arguments of siebelhub.SetControlValue
The siebelhub.SetControlValue
arguments:
function
has
three
input
context: an instance of a PM, PR, PW or Applet (see
below for more details on the siebelhub.js context
model)
control: an Applet Control instance
value: the new value of the control
Output Arguments of siebelhub.SetControlValue
Currently, siebelhub.SetControlValue returns nothing.
Flow of siebelhub.SetControlValue
The logical flow of the function is as follows:
Since most code in siebelhub.js is context independent,
we
can
call
it
from
anywhere.
The
siebelhub.ValidateContext method (see below) equalizes
the context and always returns the PM instance of the
context object. So we call it first and verify we have a
valid PM instance.
Next, we verify whether the control argument is a real
Control instance (we check for the GetInputName API
method).
Now we’ve equalized the context and verified the
control, we can call the ‘magic’ PM control events.
The code also features exception handling by means of
try and catch blocks. As you notice, we use the
siebelhub.ErrorHandler (see below) function to define
how error messages are handled.
Use Case for siebelhub.SetControlValue
The following code example is a snippet from a custom Plug-in
Wrapper for textarea controls that displays a pop-up dialog to
allow users to edit long text. The original code calls the
OnControlEvent API method twice to achieve the task of setting
the control value.
click: function() {
//code has been omitted, this is part of a PW that displays a
pop-up dialog for editing textareas
//this is the click event handler of the dialog's OK button
//call focus/blur events of PM
that.OnControlEvent(consts.get("PHYEVENT_CONTROL_FOCUS"),
that.control);
that.OnControlEvent(consts.get("PHYEVENT_CONTROL_BLUR"),
that.control, $(this).find("#dlg_txtarea").val());
//close dialog
$(this).dialog("close");
};
The
next
snippet
shows
how
to
use
the
siebelhub.SetControlValue method in this situation:
click: function() {
//code has been omitted, this is part of a PW that displays a
pop-up dialog for editing textareas
//this is the click event handler of the dialog's OK button
//next line shows how to use siebelhub.SetControlValue from
within a PW:
siebelhub.SetControlValue(that,that.control,$(this).find("#dlg
_txtarea").val());
//close dialog
$(this).dialog("close");
};
The siebelhub.ValidateContext Method
As stated above – trying to reach the lofty goals of creating
re-usable, generic code – most siebelhub.js functions can be
invoked from any ‘context’. That context could be a (custom)
Presentation Model, Physical Renderer, Plug-in Wrapper or even
a postload (or preload) Event Listener. Good code should be
agnostic to its surroundings and still return predictable
results.
The siebelhub.ValidateContext method supports these goals and
can be considered more of an ‘internal’ method:
siebelhub.js
ValidateContext
method (click to enlarge)
To access the code example as text, please click here.
Input Arguments of siebelhub.ValidateContext
The siebelhub.ValidateContext function has one input argument:
object: an instance of a PM, PR, PW or Applet (see below
for more details on the siebelhub.js context model)
Output Arguments of siebelhub.ValidateContext
The siebelhub.ValidateContext function returns the following:
pm: the Presentation Model instance of the object (if
found), null by default.
Flow of siebelhub.ValidateContext
The code accomplishes the following:
Initialize the pm variable with null.
Check if the object has the GetPModel function, which
means it is an Applet object instance. If so, assign the
output of GetPModel to pm.
Check if the object is a PM already by querying for the
OnControlEvent function. If so, assign the object to pm.
Check if the object has a GetPM function, which makes it
a PR. If so, assign the output of GetPM to pm.
If all the above checks fail, throw an error message.
Use Case for siebelhub.ValidateContext
As mentioned above, siebelhub.ValidateContext is used
internally to equalize the input for other utility functions
such as siebelhub.SetControlValue. The following code snippet
demonstrates how to use the siebelhub.ValidateContext method:
var activeView = SiebelApp.S_App.GetActiveView();
var activeApplet = activeView.GetActiveApplet();
var pm = siebelhub.ValidateContext(activeApplet);
//do something with pm
The siebelhub.ErrorHandler Method
The siebelhub.ErrorHandler method allows for a central
location in the library to define how (error) messages are
handled. It is another internal method and can be easily
expanded. In the current version (1.5 at the time of writing),
the siebelhub.ErrorHandler method implements a simple jQuery
dialog to display any message or exception passed to it.
siebelhub.js ErrorHandler method
To access the code example as text, please click here.
Input Arguments of siebelhub.ErrorHandler
The siebelhub.ErrorHandler function has one input argument:
e: an Exception object or a String
Output Arguments of siebelhub.ErrorHandler
The siebelhub.ErrorHandler function returns nothing.
Flow of siebelhub.ErrorHandler
The code accomplishes the following:
Generate
a
DIV
element
using
the
siebelhub.GenerateDOMElement method (see below)
Set the HTML of the DIV element to the input text.
Invoke the jQuery dialog method with options for an OK
button, modal dialog, class and title attributes.
Use Case for siebelhub.ErrorHandler
The following code snippet – the catch block of the
siebelhub.ValidateContext method –
shows how to use the
siebelhub.ErrorHandler method:
catch(e){
siebelhub.ErrorHandler(e.toString()
"siebelhub.js:ValidateContext");
}
+
The siebelhub.GenerateDOMElement Method
In order to facilitate the effort of generating arbitrary DOM
elements,
the
siebelhub.js
library
includes
the
GenerateDOMElement method. This simple method returns a DOM
element according to the input type and attributes.
siebelhub.js GenerateDOMElement
method(click to enlarge)
To access the code example as text, please click here.
Input Arguments of siebelhub.GenerateDOMElement
The
siebelhub.GenerateDOMElement
following input arguments:
function
has
the
type: a String defining the type of the DOM element,
e.g. “DIV”
attributes (optional): an object containing the
attributes of the DOM element to generate
Output Arguments of siebelhub.GenerateDOMElement
The siebelhub.GenerateDOMElement
generated DOM element.
function
returns
the
Flow of siebelhub.GenerateDOMElement
The code accomplishes the following:
Use the jQuery $ function to generate the DOM element
with the desired type
If attributes are defined, use the jQuery attr method to
apply the attributes
Return the DOM element
Use Case for siebelhub.GenerateDOMElement
The following code snippet – taken from the siebelhub.js
SelfDiagnostics method (briefly mentioned in the previous
post)
–
shows
how
to
use
the
siebelhub.GenerateDOMElement method to create a TEXTAREA
element with an id attribute of “selfdiag_output”.
if ($("#selfdiag_output").length == 0 && display ==
"textarea"){
out
=
siebelhub.GenerateDOMElement("textarea",{id:"selfdiag_output"}
);
$(".siebelhub_details").append(out);
}
That’s it for today. I hope you find this kind of
documentation useful. As with any community project, please
feel free to comment/roast/enhance the library using the
comments or directly on GitHub. Please stay tuned for more
documentation in future articles.
Siebel Hub JavaScript Library Guide
As a special treat, we have put together the complete
documentation for siebelhub.js as a Kindle e-book, available
for a small fee on Amazon.
Siebel
Hub
JavaScript
Library Guide
have a nice day
@lex
OnTheMove – Siebel Mobility
with a new Focus
OnTheMove – Siebel Mobility with a
new Focus
Shortly before the Holiday season came upon some of you, the
Siebel Hub had the opportunity to catch up with long-time
Siebel supporter Duncan Scattergood. During that interview,
the Siebel Hub caught sight of OnTheMove, a unique mobility
solution for Siebel (and other applications). This article
aims to give readers a better view of this product family, and
some of the standout features.
What is OnTheMove?
OnTheMove for Siebel is a set of applications that aim to
solve the “Siebel Mobile” and “Siebel Disconnected Mobile”
conundrums. Unlike other applications in the same space, which
attack the problem first from a technical perspective,
OnTheMove concentrates on what makes Siebel successful – it is
a tool to let users get their job done. And when it gets that
part right, the user adoption challenge is already greatly
lessened. So the process is the key.
The Principles
OnTheMove works by targeting the process rather than the
technology of putting Siebel Applets and Views onto a mobile
device – in fact the focus on process rather than the
technology has lead to a much cleaner, customer-focused user
interface. Obviously a demonstration environment can only give
you some of that experience – as Duncan himself said, often
the “light bulb” moment is when prospects see their own
processes in this new flexible interface. Flexibility is also
extended beyond Siebel data – although the platform was
initially designed for Siebel, it can now also leverage other
data sources like SAP in the same application.
This flexibility is also very clear when considering how
OnTheMove might be customized for each customer process – the
user interface is defined through simple markup tags, and
there is a full scripting API which, according to Duncan, will
be very familiar to any Siebel eScript user. So the cost of
defining new elements is reduced, making for a bigger bang for
lesser bucks.
The Advantages
Not only does it provide a new User Experience for the tablet
user, but on the Siebel side it also provides the capability
to expose any version of Siebel from 7.7 onwards on this
refreshingly simple and easy-to-use interface. Duncan
mentioned to me that there are OnTheMove customers using the
application on a Desktop precisely because it provides the
kind of simple, easy to use, process-based UI that many users
need.
So when I connected my ageing tablet to the demonstration
environments provided kindly by Duncan and his team, the first
things I noticed were a brand new, and refreshingly business
oriented approach. The application I first tried was what you
might call “Field Service” and is squarely aimed at the
technicians – the people who need to get stuff done, to coin a
phrase. So the user interface is clean, friendly and easy to
navigate. In fact, I liked it from the beginning. Too many
solutions seem to focus on the technical stuff and not enough
on the actual users of the application. Here is the initial
screen:-
OnTheMove – Field Service
Field Service – Day in the Life
So I decided to play the role of a Service Engineer who was
going to use the application on their daily route. I clicked
with my finger on the first job and pulled the white van out
of the parking space. I saw that the OnTheMove application was
easily readable from a tablet even with one hand on the
steering wheel – I’m joking – don’t use your device while
driving. But the user interface is quite frankly, one of the
best I have seen – simple, easy to follow and just practical –
it really does feel like it has been designed by the business,
not by technical consultants who are, by definition, far away
from the actual process :
OnTheMove
Activity
–
Field
Service
Clicking on the different Dashboard elements gives me the
overview of the problem, the address to drive to with Google,
the Asset itself, any other items including Opportunities that
may be ongoing. Make no mistake, this is a well-thought-out
Field Service interface, not a cut-down semi-functional
module. I’ll show you some of the screens in a moment but for
now, I will click Start Travel and get underway.
OnTheMove – Field Service En
Route
I accelerated into the traffic with a wave of my fist and
drove to the customer as fast as I could . This User
Experience has been designed by someone who actually
understands what the users do for a living!
After a few
minutes I pulled into the car park at the customer and
reviewed what needed to be done.
OnTheMove – On Site
I liked this page because it is just the sort of thing that
you would expect but you rarely see – a summary of what needs
to be done at the Customer site. And scrolling down with my
finger I can see that Inventory and Product information is
also included, so that I can get a handle on the things I need
to change, take out of the Trunk and so on.
OnTheMove – Inventory Select
I can of course use OnTheMove to make notes – the application
is perfectly good at taking input from the End User as you
would expect as well. The space for writing is quite big (no
16 character text boxes!) and the on-screen keyboard is fine
for note taking. I realize this is not directly the result of
the OnTheMove Application but I am trying to stress once again
that considerable thought has gone into this – font size,
color, layout and the general usability of the platform are
adapted to my needs as a mobile End User.
OnTheMove – Detail Repair
In Part Two of this article
In the second part of this article, which will be available in
a couple of days, I will look into some of the technical work
that has gone into making this solution and also I will
provide readers with resources
information about OnTheMove.
to
help
them
get
more
siebelhub.js – Download and
Installation
Last week we introduced the siebelhub.js library, an
educational example of how to create a utility/helper library
for Siebel Open UI. As announced, the library is open source
and available on GitHub.
Today we will start a series of articles that will go into
detail on how to install and use siebelhub.js. Let’s start
with the task of downloading and installing the library in a
test environment (as indicated often, this is EDUCATIONAL and
not intended nor supported to be used in production systems).
Downloading siebelhub.js
That’s probably the easiest part, all you have to do is go to
GitHub and download the master .zip file. Either by using the
Download button or the link below.
siebelhub.js on GitHub
Click here for the current master archive of siebelhub.js
The .zip archive contains all files that make up the
siebelhub.js library. At the time of writing there are three
files (beside the license):
siebelhub.js: The main JavaScript file (not minified,
you want to read and learn…)
siebelhub.css: Style rules to go with some of the
functionality
BS_Siebel_Hub_Service.sif: Siebel Tools archive file for
the server side business service (needed for retrieving
server resident data)
Installing siebelhub.js
As with any file that you want to load always, we have to
treat siebelhub.js as follows:
1. Copy the siebelhub.js file to the /siebel/custom folder
(where all your custom Open UI scripts reside)
2. R e g i s t e r t h e f i l e i n t h e M a n i f e s t u s i n g t h e
Application/Common entry (if you have no custom entry,
create one)
Siebel Open UI Manifest (click to
enlarge)
Installing siebelhub.css
The style sheet can be either registered separately
(recommended) or you can copy and paste the content of the
siebelhub.css file to any existing custom style sheet.
To register
following:
the
siebelhub.css
file
separately,
do
the
1. Copy the siebelhub.css file to the /files/custom folder
(create the custom folder if it doesn’t exist)
2. R e g i s t e r t h e f i l e i n t h e M a n i f e s t u s i n g t h e
Application/Theme entry (create an entry of this type if
you don’t have a custom one)
3. In the Files list, also include the standard .css file
of the Siebel Open UI theme you’re using (e.g. themeaurora.css)
Importing the Server Business Service
Some of the functionality provided in the siebelhub.js library
invokes methods of a helper business service. To install this
business service, follow these steps:
1. In Siebel Tools, import the BS_Siebel_Hub_Service.sif
file.
2. Verify that a new business service named Siebel Hub
Service has been imported.
3. G o t o t h e A p p l i c a t i o n U s e r P r o p e r t i e s o f y o u r
application (e.g. Siebel Universal Agent) and register
the Siebel Hub Service using the ClientBusinessServiceN
user property (see screenshot below).
4. C o m p i l e t h e B u s i n e s s S e r v i c e a n d A p p l i c a t i o n
definitions.
Siebel Hub Service
Verify
OK, so now we can relaunch our Siebel Web Client and verify
that siebelhub.js is properly loaded. To make things easier,
I’ve added a ‘tramp stamp’ (via postload listner) that should
appear in the bottom right corner of the Siebel application
window.
siebelhub.js tramp stamp
The Siebel Hub logo also serves as a launch button for an Info
Dialog:
siebelhub.js Info Dialog
When you click the Run Self Diagnostics button, a textbox
appears with some information about your environment and the
state of siebelhub.js. It also verifies the server side
business service by running a quick query:
siebelhub.js Self Diagnostics
If you see all this on your screen, you have successfully
installed the siebelhub.js library. Congratulations. Now you
can start exploring. And of course, we will cover the details
in upcoming posts. As they say: “Stay tuned!”.
have a nice day
@lex
Siebel
Open
UI
Template
Generators by Duncan Ford
(Update)
Siebel Open UI Template Generators
by Duncan Ford (Update)
If you’re really earnest in your pursuit of mastering Siebel
Open UI, you already know (and have been using) the splendid
Siebel Open UI Template generators for Presentation Models,
Physical Renderers and Plug-In Wrappers created by fellow book
author and Oraclean Duncan Ford.
Siebel Open UI PR/PM Generator by
Duncan Ford
Recently, Duncan has moved the source code to GitHub and
invites the Siebel Open UI community to help improving the
tool by submitting GitHub issues or (for the more daring)
create a pull request.
Here are the new URLs, so please update your bookmarks.
PR/PM
Generator
http://duncanford.github.io/prpm-code-generator
PW
Generator
http://duncanford.github.io/pw-code-generator
have a nice day
@lex
:
: