Login
Pass
Always remember me
Categories

Archive for the ‘Features’ Category

Eclipse preferences customization

This post will show how to customize Eclipse RCP preferences. This came from the need to have a user friendly interface in our product instead of the rough default tree view of Eclipse preferences.

Default Eclipse preferences TreeView

Default Eclipse preferences TreeView

If you are not familiar with Eclipse preferences, you can have an in-depth look of how preferences works in this article by Lars Vogel.

First remove all the preferences you don’t need in your RCP. Some of these were brought in by 3rd party plug-ins such as JDT.

You’ll have to override the postWindowOpen() method of the WorkbenchWindowAdvisor application:

//Clean the preferences

PreferenceManager preferenceManager = PlatformUI.getWorkbench().getPreferenceManager();

for(Object elem : preferenceManager.getElements(PreferenceManager.POST_ORDER)){

if(elem instanceof IPreferenceNode){

//FILTER REGARDING THE NODE ID

if(((IPreferenceNode)elem).getId().equals("....")) {

preferenceManager.remove((IPreferenceNode) elem) ;

}

....

This gives you better visibility of your RCP preferences.

Next the idea is to build a new UI for this dialog, keeping the Eclipse PreferencePage mechanism. To show a quick preview of the result I made a mockup of this dialog using the WindowBuilder tool. With this tool, you can draw your UI very easily, though a background knowledge of SWT helps a lot.

WindowBuilder overview

Using mockups is a good practice to test your user interface and collect your team’s feedback. Here we clearly want to have an “OS X style” for our preferences. Once the mockup shows the interface the way you want it, you can  go ahead with your implementation using the code generated by WindowBuilder. The generated code is pretty clean and easy to modify.

Eclipse preference API

Next the goal is to integrate the PreferencePages to the new Dialog. In Eclipse you can define a preference page using an extension point. Thus a PreferencePage is bound to an ID. To find them you can use the PreferenceManager like this :

/**

* Find the IPreferenceNode from its id

**/


public static IPreferenceNode findNodeMatching(String nodeId) {

List nodes = PlatformUI.getWorkbench().getPreferenceManager().getElements(PreferenceManager.POST_ORDER);

for (Iterator i = nodes.iterator(); i.hasNext();) {

IPreferenceNode node = (IPreferenceNode) i.next();

if (node.getId().equals(nodeId)) {

return node;

}

}

return null;

}

Then, once you retrieve the IPreferenceNode, you can create the page in a Composite:

protected void openPreferencePage(String pageId,Composite parentComposite) {

IPreferenceNode node = PreferenceUtil.findNodeMatching(pageId) ;

node.createPage();

node.getPage().createControl(parentComposite) ;

}

In addition, I found it useful to reuse the Eclipse keyword contributions linked to those pages. To achieve this, I implemented my own listener inspired from the one in the default preference tree filter.

Here is a quick preview of the result:

I’ll be sharing more cool Eclipse stuff soon!

Behind the Scenes with BonitaSoft (16-22 May)

Dear community,

Have you seen the featured features du jour of the day as we count down to the BOS 5.5 release on 25 May?  (that’s tomorrow…)

Check ‘em out:

  • Searchable tree view in Bonita Studio:

  • Debug – skip connectors activation when in test mode:

  • Never mind the groovy code – use a table to specify a conditions on a transition:

Thanks to the feedback of our community and our many users – improvements happen!

Recent contributions

Android App: TODO list.  Mobile BPM!

Do you have a pattern, connector or a process to share?  Upload it to the Bonita Community.

They’re blogging about us

Joe McKendrick at SOA in Action shares some thoughts from Miguel about getting started with BPM.

Let us know if you see Bonita in the blogosphere.

They’re tweeting about us

Tweet tweet:

@techsnoop; @kellyrigotti; @MedAminAkodad; @VentechVC; ipoBound; FilippiMichel; @santiagomblanco; @ulfreich; @chilcano; @Tedesign; @Tobiasopdebrou; @katouadh; @extentechsean; @adam_deane; @chapin4u; @questetra; @jaMartinValdes; @CPHaarmann; @pigbar; @fbastos79; @silvaalexandre; @jpehouman; @bullysoares; @imamuragenichi; @mercelrufino; lijobs_sales; @tweets_jobs; @ThomasFreibel; @avidalc; @fgianferrari; @FOSSwiki; @chapin4u; @anjo0722; @maylo_pfe; @TalendCommunity; @pdpost; @exo_portugues; @JBrulland; @bobbickel; @ipobound

Our hash tags: #bos5 = Bonita Open Solution 5, #bonitasoft, #bpm = business process management, #workflow , #opensource = Open Source, #oss = Open Source Software, #ow2

See you tomorrow at the BonitaDay Webcast!

Basic Reporting with Bonita Open Solution

Reporting is critical to decision making and the administration of a business application. Yet, too few people know about the real power of reporting and its ease of use.

Here’s a short video that will introduce you to the built-in reporting features that Bonita Open Solution provides.

You’ll see the default user dashboard and how to configure it to include some basic reports such as: “Steps per priority”, “Average step pending time” and “Number of cases started”.

Extract valuable information from your application in a few clicks!

You can use this feature to monitor runtime issues – solving them leads to better performance management, for instance, detect tasks that are exceedingly time-consuming and perhaps improve the process design to get rid of the bottlenecks.

Also, reporting can provide additional information needed when performing load balancing. For example, by detecting a variation in the volume of cases started; you may allocate more or less resources to it (be it servers or human operators).

In the driver’s seat with Bonita Open Solution

If you were a passenger in a car that could drive itself, how long could you resist taking the wheel?

People (well, me at least ) very often have a need for some hands-on control. And in a process that drives itself, there are guaranteed to be some users who are going to need to take the wheel, either because a tree has suddenly appeared in the middle of the flow path, or – just because.

Human steps in a process flow need flexibility for the humans who act in them.

This video shows a bit about how the user in a process designed with Bonita Open Solution can manually “push the pause button,”

reassign a task, change its priority, modify some data in it, and so on.

Nice to know that if you need it, the driver’s seat is yours.

Exploring Bonita Open Solution: A brief overview of the Groovy editor

Wherever you can enter or apply a data variable in Bonita Solution, the “Edit Expression” option gives you access to a Groovy editor to create a script.

Groovy is a scripting language with syntax similar to Java. In fact, the Groovy editor accepts Java script as well as Groovy, but if you want to streamline and simplify your code even further, Groovy is a good option.

Expressions allow you to customize the behavior of your process. You can, for example:

  • define conditions on transitions;
  • initialize data variables;
  • configure connectors;
  • and more.

Here’s a video overview of the Groovy editor in Bonita Open Solution, with a very simple example.

Read the rest of this entry »

Use BPMN links to add readability to process diagrams

Processes modeled in Bonita Studio are not only executable – the graphic representation or process diagram is also useful when stakeholders in the process need to participate in process design.

Business Process Modeling (BPMN) uses links to allow the process designer to graphically cut up a long and/or complex process sequence and link up parts that are not next to each other on the whiteboard.

This video shows an example process diagram using links.

Read the rest of this entry »