Tuesday, February 10, 2015

Administration Pain Points

It is known for many administrators and developers of the ClickSoftware platform, that the current Service Optimization version 8.X administration tool comes with few pain points. I'm sure that version 9 will come with great new administration capabilities, but what about all the existing version 8 systems?

There are three pain points that kept coming back to me, so I've developed a small tool, to serve at times that the current remote administration tool is falling short.

First Pain Point - Large Collections

The generic approach of the current administration and the fact it was developed more than a decade ago, is a point for appreciation. However, systems today are much bigger and the amount of data is growing. The inability of the current tool to handle large collections is due to several limitations, which I will not detail here. The new advanced tool I wrote is taking advantage of a newer capability to perform SXP queries with paging. This is a very powerful service, which was added to allow the development of the Silverlight based client of ClickSchedule. The new tool allows not only to page through the data, but is taking advantage of the ability to define the sorting of the page. This means that columns are sortable and the data is still page-able.

Second Paint Point - Defining The TreeView

The management tool shows a TreeView on the left and a ListView on the right, but editing these views is an undocumented art. The definition is encapsulated in a huge XML, which is stored in a Setting object. The new advanced tool includes dialogs to edit this complex XML. There are 4 new dialogs to add and edit nodes of the TreeView:

(1) Folder Node - which shows more nodes under it,

(2) Objects Node - which is a leaf node, means it shows objects in the ListView,

(3) Collections Nodes - which is actually a set of Objects Nodes (for Dictionaries or Business Collections or both), and

(4) Values Nodes - which is a set of Objects Nodes for specific collection, but each node is of separate value (for example showing Tasks nodes per Region).

The truth is that due to the amount of details needed to define these nodes, more sub-dialogs can be opened from the above dialogs. The sub-dialogs define the columns of the ListView and the actions allowed on the objects. It is now easier to explain to administrators how to deal with this tree view.

Third Pain Point - Live Monitor

While the Agents Schedule dialog is pretty good monitor, it is querying a single server, which the tool is connected to. Also, the dialog includes a lot of text and it is not made for "stay on the screen" monitoring. The new advanced tool allows better monitoring capabilities, by supplying new special monitoring form. It is querying all registered SO servers and displaying the servers availability. Most important is additional status line for the agents. When querying about agents, if the server is going down, it cycles to the next server.

Next Pain Point - Disabling Events

This feature is not yet complete, however, the UI for it is done.
Many times we wish we can turn off specific events when editing or creating objects. The new tool will allow just this. When using the generic object editing option, it includes Events tab, which allows to turn off or on events for a single update.

Next Action - Join Beta Testing

If you would like to test this tool, send me an email to mysnir.work[at]gmail.com and specify your details, so I can get in contact with you.

Thanks, Yoram ;-)

Wednesday, February 1, 2012

Better SQL Server database backup

Sometimes when I restore SQL Server database from a BAK file, I get huge log file or even fail to complete the task due to lack of disk space, but it could be solved if the backup of the database was generated with small log file.

So, before you backup SQL Server database, do the following: Detach from the database. This will allow you to handle database files without SQL Server locking the files.

Then you should delete the log file. Please note that it may be better to put the file in temporary location, just in case you have many files with similar names.

Now attach the main database file again.

Note that it includes a reference to the deleted log file.

Remove the 'Not Found' log file and complete the re-attachment. This will generate new, very small, log file. Now go ahead and backup the database. When you will have much better file to restore.

Friday, December 17, 2010

Enhancing ClickSchedule Silverlight Client

I installed Service Optimization 8.1.2 and spent long hours fighting with it, just to open the ClickSchedule Web client, or as I prefer to call it, ClickSchedule Silverlight client. To make it short, the web.config file in the ClickScheduleWebClient directory had a wrong configuration that prevented me from opening the client. Assume that you have a working ClickSchedule Silverlight client, here are two steps into customizing the Gantt in a very special way.

But before that, let me recommend the beta version of .NET Reflector, which integrates with Visual Studio 2010 and allow a very good debugging of the Silverlight client.

Step 1: Switch Gantt in the Settings

We will instruct the client to load the Gantt from a new assembly, which we will create in the next step, by editing the Body XML of the Administrative Settings of the client. Then we will verify that we have under the root configuration, views node with its name attribute. Under that, mainViews node and its name attribute. Under that, schedulingView node and its name attribute. We will override the default Gantt by adding type attribute with the following string: W6.Web.UI.Extra.W6SchedulingViewEx,W6.Web.UI.Extra, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Step 2: Enhanced Gantt

Rename the file W6.Web.UI.xap to W6.Web.UI.zip and extract the files out. Keep them in a sub-folder to reference them later. In Visual Studio 2010, create new C# Silverlight Class Library project, name it W6.Web.UI.Extra and add reference to W6.Web.Controls.dll and W6.Web.UI.dll, rename the existing class to W6SchedulingViewEx, and paste the following code:

using System.Windows.Controls;
using System.Windows.Shapes;
using System.Windows.Media;
using W6.Web.UI.View;
using W6.Web.UI.GanttChart;

namespace W6.Web.UI.Extra
{
  public class W6SchedulingViewEx : W6SchedulingView
  {
    public override void Refresh()
    {
      base.Refresh();

      Rectangle r = new Rectangle();
      r.Fill = new SolidColorBrush(Colors.Green);
      r.VerticalAlignment =
        System.Windows.VerticalAlignment.Top;
      r.HorizontalAlignment =
        System.Windows.HorizontalAlignment.Left;
      r.Height = this.ResourceGantt.RowHeight;

      // from the begining of the loaded Gantt
      double minutesToStart = 720;
      // from the start of the rectangle
      double minutesToFinish = 60.0;
      // zero based index of the engineer
      double engineer = 4;

      r.Width = minutesToFinish
        * this.ResourceGantt.PixelPerMinute;
      r.Margin = new System.Windows.Thickness(
        minutesToStart
          * this.ResourceGantt.PixelPerMinute,
        engineer * this.ResourceGantt.RowHeight,
        -1.0, 0.0);

      ((Grid)((W6CalendarLayer)this.ResourceGantt
        .GanttChartLayers[0]
        ).Content).Children.Add(r);
    }
  }
}

Build the project and copy the DLL onto the W6.Web.UI.zip file. Edit the extracted file AppManifest.xaml and add new assembly part:

<AssemblyPart
  x:Name="W6.Web.UI.Extra"
  Source="W6.Web.UI.Extra.dll" />

Drag the AppManifest.xaml file onto the W6.Web.UI.zip file, Choose to replace the existing one, and rename the ZIP file back to W6.Web.UI.xap and open the client, using: http://localhost/ClickScheduleWebClient/default.aspx

In the client, select the Refresh button and a green rectangle should appear on the Gantt's lowest layer, the calendar layer. From here, you can enhance the Gantt with a lot of flexibility.

Wednesday, August 11, 2010

iPhone Client Update


ClickMobile client for the Windows platform is developed for long time already, and therefor includes many features. In this update we can see that the client's Calendar list is complete with support for coloring, icons, list of properties, etc.

When selecting task from the list, the client needs to follow the form configuration from the server. The editor is built for Windows platform, but in general we can look on it as list of Tabs that each is a list of Fields or Properties.


The iPhone client is showing the first Tab, while the other Tabs are listed as sections below.

Selecting the second Tab is natural for iPhone users, while following the separation made by the administrator, which configure the form.

Still there is more work, but it looks like it getting some shape.

Monday, July 12, 2010

Sending And Receiving SXP from iPhone

When developing client application you always need to learn the server API. In the case of ClickMobile, there is more than few Special SXP calls to learn.

The beauty of ClickMobile is in the details (as Prof. Ben-Bassat always said: the strength of Service Optimization is in the details, years of experience in this field made the solution of ClickSoftware so comprehensive).

The Windows CE mobile client is using SQL Server CE to synchronize local database with the server database (SQL Server CE? not with iPhone). But the way the client sends SXP calls and receives the response is another layer on top of that.

The server maintains two tables for requests and responses. The client pull and push records from and to these tables using synchronization of local replica. The server scans the requests table using background process (agent), which performs a scan every few seconds (configurable interval). For each processed request it's generates response record. But the server also generates response records as a result of Server Events (like Task Update, etc.).

So, to send and receive SXP, like ClickMobile, from platform that cannot use SQL Server CE, you need to: (A) Create replacement for SQL Server CE database synchronization. (B) Insert special ClickMobile SXP calls into special request records. (C) Synchronize the requests table. (D) Constantly synchronize the responses table. (E) Get the SXP results from the response records. (F) Clean used response records (or let the server do so after few days).

Important note regarding The requests and responses tables: each user should only use records that aimed to him. Synchronizing records of all clients is costly and unnecessary.

OK, so now I can tell you that I'm already passed this stage. Now let's connect the background service with the UI...

Saturday, June 5, 2010

What iPad Can Do For ClickSchedule?

While the iPad sales are going great guns with consumers, the usage of such delicate device in the field as enterprise client is questionable. The first thing I got on my mind was to play with the device and decide if it's good as ClickSchedule client (ClickMobile client). After seeing how fragile the device is, I'm not sure if it worth the effort developing for. Maybe a ClickAnalyze client is more appropriate for the iPad.

For sure the iPhone is still a great device for ClickMobile. We just need to wait a litle bit more (for Monday's keynote) and then see what news Apple going to bring to the enterprise.

Tuesday, May 11, 2010

iPad Wi-Fi+3G glass is cracking [u]

While learning more about my new iPad, I found a scratch on the glass after less than a week. I was not sure how, but I blamed myself for the first scratch. Today, I found another three scratches. I looked carefully and found that my screen is cracking. We'll see what Apple will do with it in couple days. In the attached picture, I marked the visible scratches with pairs of arrows. The flash shows the cracks that are not visible in room light (the screen is very clean, but the flash just pop any crack and dust).
Update: Apple was very kind to replace the iPad with a new one. It took me 10 minutes at the local Apple store and I'm now posting from a new iPad.
 
HTML Hit Counter