Siebel IP15.13 Patchset Available!

it_photo_88588Siebel IP15.13 is available for download.

  • IP15.13  (Patch Number: 23639315)

At the same time a new DISA release as well (to fix two in-line attachment editing defects).

– Jeroen

Advertisements

OpenUI – Single Click Sort

Got triggered by an internal discussion with some colleagues, to re-enable a single-click-sort solution. Came up with the below solution, which does work beautifully.

But with to major drawbacks:

  1. It disallows the column ‘lock’ / ‘unlock’ feature.
  2. It still sorts default in Ascending mode, where I’d like to have the option to specificy ‘Descending’ under certain circumstances.

Well – thought, just post the work-in-progress and elicit some feedback from the field (yes, you!). Posted the same sample code also on the OracleSiebel Git repository.

My first focus is on a proper solution that will somehow enable lock/unlock along side the single-click-sort. The path using a dblclick event handler led nowhere, because having two mouse events on the same element is simply no good. I had a quick look at overriding the context menu (right mouse) and instead displaying again the standard sort / lock popup.

Any takers :-)?

if (typeof(SiebelAppFacade.QuickSortPR) === "undefined") {

SiebelJS.Namespace("SiebelAppFacade.QuickSortPR");
define("siebel/custom/QuickSortPR", ["siebel/jqgridrenderer"],
function () {
SiebelAppFacade.QuickSortPR = (function () {

function QuickSortPR(pm) {
SiebelAppFacade.QuickSortPR.superclass.constructor.apply(this, arguments);
}

SiebelJS.Extend(QuickSortPR, SiebelAppFacade.JQGridRenderer);

QuickSortPR.prototype.ShowUI = function () {
SiebelAppFacade.QuickSortPR.superclass.ShowUI.apply(this, arguments);

var placeHolder = "s_" + this.GetPM().Get("GetFullId") + "_div";
var elSortable = $("#" + placeHolder).find(".ui-jqgrid-sortable");
var sort = $("li[data-caption='Sort']");

elSortable.on("click", function () {

sort.parent().css("visibility", "hidden");
setTimeout(function () {
sort.click();
}, 0);
});
}

return QuickSortPR;
}());
return "SiebelAppFacade.QuickSortPR";
})
}

– Jeroen

Siebel IP16 – Browser Battle Benchmark

So – how does rendering performance has evolved with Innovation Pack 2016? I have been asked that question a number of times in the recent past. So, I put Innovation Pack 2016 on the rack, measuring Open UI’s response time per usual benchmark approach.

Again, four views with increasing complexity are used. Where really, the complexity of View 4 is ludicrous and primarily meant for stress-testing. In the past IE11 showed a non-linear pattern, that is why I included that impossible complex view.

Those ‘non-linear days’ are over due to largely IE11 specific framework enhancements included in IP15.3/14.9 back in September 2015. Based on my measurements we could say, that Innovation Pack 2016 does a slightly better job compared to IP15.3/14.9. Nothing spectacular. Call it stable.

meta-chart– Jeroen

Siebel OpenUI Boilerplate on Github!

Chances are that you have used or even are a frequent user of Duncan Ford‘s boilerplate code generator for Siebel OpenUI. His boilerplate code generator surely is the safest and most effective way to start any undertaking comprising a custom presentation model, physical renderer or control plug-in wrapper. It prevents you from those silly typo’s which can easily waste your time. All together, a huge efficiency tool.

Well, Duncan decided to move his code from JSFiddle to Github. For a very good reason of course. This move permits those with ideas for improvements to add them directly to Github’s managed issues log, and, for those more skilled, to allow to directly submit pull-requests with changes made. Which Duncan then will be able to test and decide upon

Although the existing tiny.cc URLs which you might or might not have bookmarked, have been changed by Duncan as well to reflect the new location. Below the direct Github URLs.

– Jeroen

 

Desktop Integration Siebel Agent (DISA)

The 2016 SOD already mentioned a totally new Siebel acronym. Because running out of three-letter-acronyms, resorting to four-letter acronyms 😉

DISA.

The SOD also mentioned backporting the DISA framework to IP14/15. And that seems to materialize. Although it definitely slipped the December 2015 Patchset (14.13/15.7) for which it was initially targeted – the odds are that it will quite likely make it into the January 2016 Patchset (14.14/15.8).

So again, what’s this Desktop Integration Siebel Agent all about? Well, first of all it’s the must-have feature closing the important Siebel client-side integration gap. Especially because Google started deprecating the NPAPI in Chrome, Mozilla will follow deprecating NPAPI in Firefox later in 2016 and Microsoft’s Edge never had and never will have the capability.

DISA will be all about bringing Siebel OpenUI on-par with the old ‘high interactivity’ days where the Web Client Automation Server was a strong asset, enabling relatively easy client-side integrations with desktop applications and a Siebel user session.

DISA will be a local client-side running executable, which means it will only be available for Windows clients. The DISA will act as a Websocket-server, and because today all of the relevant browsers will support the Websocket protocol,  browsers running a Siebel OpenUI session can act as a Websocket-client. The framework will enable bi-directional, real-time communications between browsers.

Unsure whether at the time DISA will be released as backport from the under-development IP16 codeline is which of the features will be enabled alongside? I personally expect that initially the DISA framework as-is will be released, and that out-of-the-box enhancements such as listed below will be released gradually in subsequent patchsets.

DISA targeted features:

» Email (F9) Integration with Microsoft Outlook and IBM Lotus Notes
» Invoke external email clients with F9 on Siebel Open UI
» Populate email fields (To, CC, BCC) in external email clients
» Use HTML templates to provide pre-defined, formatted email content
» Send file attachments
» Read & write files in agent’s local machines
» CTI Hoteling feature
» Ability to retrieve client machine IP address in Siebel Open UI Client
» Outlook to Siebel Attachment Drag-and-Drop. Enables agents to drag an email from a Microsoft Outlook email client and drop it as a Siebel CRM file attachment
» Inline attachment editing. Provides the capability for a user to open a file stored in the Siebel File System, make changes to the document using a location application (such as Microsoft Word), and then save and close the application with the new version automatically replacing the previous version in the Siebel File System.
» Batch Fulfillment Printing
» Allows Fulfillment Center personnel to select a set of Correspondence Requests and send them to a printer.

– Jeroen

 

Siebel OpenUI – Deselect Content in Text Area Controls While Tabbing

Difficult to give this post a descent title. What this post is all about, is the fact that Siebel will ‘default’ select any text in list applet columns while tabbing through. In itself not such a bad feature. But there are situations where this behavior is by end-users perceived as highly unwanted. Think of notes, where a text area control potentially contains tons of carefully entered text. Tabbing through a list applet makes it prone to unintentionally wipe this precious and entered data at the blink of an eye (or better by almost any keystroke…).

This was brought to my attention by a customer. Luckily enough, the Siebel OpenUI offers such a great extensibility framework! Writing one of the most simplistic control plug-in wrappers ever, does the job. Goal of the plugin wrapper would be to ‘deselect’ the control’s content at the moment it receives focus. Instead of selecting the control’s value, it should just put the cursor at the far end of the text.

The plug-in wrapper is code is not more than a few basic lines, plus the standard skeleton code.

UnselectDataTextArea

Like any control plugin-wrapper, you need to instruct it on what control type and when to act (1). I choose to have it act solely on the “SWE_CTRL_TEXTAREA” control, regardless further context – therefore the “return true;” without any further conditions. In this case we add an additional event on the control, so the BindEvents event makes most sense (2). Finally, the actually magic happens using the “focus” event, on which we trigger a single line of code to reset the selection (3). So simple, yet so powerful.

As any control plug-in wrapper, just administer as Application / Common file.

Enjoy!

– Jeroen

How Do I Benchmark Siebel Open UI?

IP153-149PerformanceIE200I got some remarks lately on “how” I benchmark the different Siebel patch sets which I discuss now and then against the usual suspects (IE, Chrome and Firefox). Let me first point back to this old post, from a bit more than a year back. I crafted together with Duncan Ford a small framework which measures the milliseconds spend by the browser between the preload and the postload event. This framework actually made it into the must-read Oracle Siebel Open UI Developer’s Handbook. The time spend between these two events informs me about the number of milliseconds the browser needed to process the DOM and all the triggered events. And with Open UI quite a bit happens to process the ‘raw’ DOM delivered by the Siebel Web Engine to be able to finally display it.

Next I created a set of four progressively complex views, which are based of a dramatically simple virtual business component. The VBC approach makes it extremely simple to port this framework in other environment, when needed. These four views are built per below specifications where I stress that these views not necessarily are representative 😉 The complexity of view 3 & 4 definitely are out of the ordinary. They are primarily meant to identify any kind of ‘hockey-stick’ behavior in performance degradation (call it stress-testing).

View 1 (indicative: 40 controls in total)

  • One Form applet with 20 controls
  • One List applet with 20 list controls

View 2 (indicative: 240 controls in total)

  • One Form applet with 20 controls
  • One Form applet with 100 controls
  • One List applet with 20 list controls
  • One List applet with 100 list controls

View 3 (indicative: 440 controls in total)

  • One Form applet with 20 controls
  • Two Form applet with 100 controls
  • One List applet with 20 list controls
  • Two List applet with 100 list controls

View 4 (indicative: 640 controls in total)

  • One Form applet with 20 controls
  • Three Form applet with 100 controls
  • One List applet with 20 list controls
  • Three List applet with 100 list controls

When I run my tests, I make sure my laptop is completely offloaded and running at 0-5% CPU. Running the good-old Siebel Dedicated Client is fit-for-purpose to test the views 1 thru 4 in a variety of browsers. First I do a ‘warm-up’ cycle touching all views. Next I take the measurements at least three times, and if the standard deviation between these measurements is too high I re-run the test. Et voilá. That’s it – no rocket science – but an apples & apples comparison.

Below a graph focused on IE11 which just compares IP15.1 (June) with IP15.3 (August) to demonstrate the terrific improvement. Yes, even IE can perform (though still lacking its competition, but anyways).

Click for interactive chart

Click for interactive chart

– Jeroen