Neat and simple:
pubsub --client com.apple.mail list | cut -f3 | sed -ne '3,$p'
Thursday, December 16, 2010
Thursday, September 16, 2010
JBoss Developer Conference Berlin
JUDCon Berlin - October 7-8, 2010
Boston was a smashing success. Now on to Berlin!
JUDCon, the JBoss User and Developer Conference, gives developers the unique opportunity to participate in deep dive sessions with JBoss Core Developers and other leaders the JBoss community. Code sessions, hackfests, beer and food... now that's a developer conference.
More here
Boston was a smashing success. Now on to Berlin!
JUDCon, the JBoss User and Developer Conference, gives developers the unique opportunity to participate in deep dive sessions with JBoss Core Developers and other leaders the JBoss community. Code sessions, hackfests, beer and food... now that's a developer conference.
More here
Friday, July 30, 2010
GWT Compiler Options
Joseph from the RHQ team has written a good article on how the different compiler options (num workers, Xmx, Xms) affect the overall compilation time: http://josephmarques.wordpress.com/2010/07/30/gwt-compilation-performance/
Monday, July 26, 2010
JBoss One Day Talk
One Day, 14 sessions on two tracks. Get together with the experts and join us in Munich, 1. October 2010.
JBoss One Day Talk - From the community for the community.
From the web page:
"Die Konferenz für Java Frameworks & Enterprise Edition Technologien
Der JBoss OneDayTalk 2010 (organisiert vom JBUGM e.V.) ist eine ganztägige Konferenz, bei der sich alles um das Thema JBoss Technologien und Java Frameworks dreht. Experten aus den USA und Europa treffen am 01.10.2010 in München zusammen, um ihr Wissen, ihre Erfahrungen und ihre Ideen miteinander zu teilen und darüber zu diskutieren. JBoss Project Leads und Core Developers werden ebenso vertreten sein wie Mitglieder der JBoss Community, Softwarearchitekten und IT-Entscheider.
Erstklassige Sprecher und aktuelle Themen wie JAVA6, JAVA EE 6, Caching, Clustering, Cloud Computing,Wicket, BPM, BPMN, BPMS, BPEL, Rules, Web Services, Ruby-On-Rails, Auditing, Performance und Versioning persistenter Klassen garantieren eine erstklassige und spannende Veranstaltung. Dabei liegt der Fokus nicht nur auf der Theorie der vorgestellten Themen. Vielmehr wird es auch Erfolgsberichte aus "echten" Projekten geben, in denen sich die Technologien unter Alltagsbedingungen im Projektumfeld bewährt haben."
Friday, June 18, 2010
RHQ migrating to GWT
Really nice. The RHQ team did a great job migrating parts of their UI to GWT. Take a look. It's impressive:
RHQ Screencast
RHQ Screencast
Wednesday, April 7, 2010
Speaking at JBUG Munich (12.04)
I'll speaking in Munich next monday (12.04):
In this presentation we'll see how to organize a nontrivial GWT application. We'll go through the lessons learned in a real world project and take a look the complete development lifecycle and best practices that go beyond what GWT has to offer out-of-the-box. This talk does focus on modularity of GWT applications and how to overcome the burdens of compile-time linking. We'll talk about client side patterns and server side implementation options and explore different approaches that allow for quick turn around times without sacrificing maintainability.
Details can be found here
In this presentation we'll see how to organize a nontrivial GWT application. We'll go through the lessons learned in a real world project and take a look the complete development lifecycle and best practices that go beyond what GWT has to offer out-of-the-box. This talk does focus on modularity of GWT applications and how to overcome the burdens of compile-time linking. We'll talk about client side patterns and server side implementation options and explore different approaches that allow for quick turn around times without sacrificing maintainability.
Details can be found here
Wednesday, March 31, 2010
JUDCon 2010
JUDCon is an event by developers, for developers. Presentations will include a range of deep technical dives into JBoss Community projects and related technical topics of developer interest. The inaugural JUDCon will be a one day event packed with valuable sessions and will run into the early hours of the following day. For your convenience, JUDCon is the day before JBoss World and shares the same venue. In the future, look for stand-alone, multi-day events.
More information here
More information here
Riftsaw 2.0-Final ships the BPM Console
Riftsaw 2.0-Final includes the BPM Console. Although pretty limited in functionality (merely a replacement for the ODE console) it will act as the foundation for future extensions. Read the full article here
Business Process Analytics using BPAF
Over last 6 month I've been working on several components that will be assembled to a bigger business activity monitoring solution. I started off with a CEP based activity monitor (SAM) that allows for advanced correlation across heterogeneous event sources. After that I've spent some time integrating the BIRT reporting runtime with the BPM console, which allows you to run complex reports on process-related audit data. Only to realize that I've started on the wrong foot.
Process analytics bottom to top
I made a mistake to begin with the most complex components first, without realizing that the key to a successful BAM solution is underlying data model. Without a solid baseline the creation of report templates becomes a daunting task because the missing unification of audit data basically requires you to customize the report algorithms for any instrumented subsystem. Creating rules for the CEP component that fire when certain SLA's are breached doesn't get more simple either, when working on a heterogeneous event model.
I finally spend some time prototyping around an idea that has been in the wild for quiet some time: Baseline process-related audit data on BPAF: A WFMC standard that describes a data structure that enables the aggregation and correlation of audit data across multiple platforms.
In the following sections I would like to walk through a simple protoype, that already shows the benefits of this approach. It is really impressive how little code it requires to deliver a solution that already matches an important number of the use cases.
Data model, storage and retrieval
To begin with an implementation for storing and querying BPAF event data was needed. Fortunately JAXB and Hibernate made this a trivial task:
The current implementation allows two approaches for querying the BPAF data: Either leverage the default model and it's persistence implementation, or adopt a proprietary audit data structure to the BPAF model when needed. For later use case the API fo querying is split from the default data model:
Now that we have components in place for storing and querying raw BPAF data, let's move on to a more interesting topic: How to make sense of it.
Turning data into information
The whole purpose of this exercise is to provide a way to gain insights about the execution characteristics of the processes that drive your business. While BPAF itself is a compact but still very expressive format (BPAF State Model) to store process-related audit data, it requires additional steps to turn it into consumable information that participants and decision makers can make sense of.
For the sake of this example we've added some algorithms that allow grouping and sorting of the underlying data, which will be used by the presentation layer.
Let's take a look at the prototype UI (yet another BPM Console plugin) and see how much information can already be derived without going through hoops and loops.
Presenting audit data to decision makers
The prototype UI demos a simple use case: "How did the processes execute in the past?" Although a simple question, it already implies a lot of fine grained functionality a user might expect:
Concepts represented by the prototype UI
For the sake of simplicity the current implementation (at the time of this writing) is limited in functionality. Nevertheless I would like to walk you through the current features and explain some of the key concepts.
To begin with a user selects the Process Defintion and the relevant time period:
The time period offers a set of commonly used intervals, like "Last Week", "Last Quarter" or "Last 24 Hours".
The BPAF data is loaded and grouped according to the time period and presented in an interactive chart:
The charts allow you to zoom in on the time scale (i.e. "1 day, 5 day, max") and scroll through the event data on each level.
(Shout-Outs to the chronoscope project)
You can comment on the information and create markers on business relevant points that either require clarification or otherwise mark notable changes in the execution of a process:
Conclusion and next steps
As you see, this simple prototype already covers important features that you would expect from such an implementation.
And we didn't yet touch sophisticated topics like comparison of process executions or creation of key performance indicators that trigger notifications (do the markers ring a bell?).
In the next few month you can expect this approach to be married to SAM, our CEP based BAM component that allows correlation and execution on process activities close to real time.
Stay tuned, now that we have a common baseline for representing and querying process-related audit data we'll look into more advanced topics.
Process analytics bottom to top
I made a mistake to begin with the most complex components first, without realizing that the key to a successful BAM solution is underlying data model. Without a solid baseline the creation of report templates becomes a daunting task because the missing unification of audit data basically requires you to customize the report algorithms for any instrumented subsystem. Creating rules for the CEP component that fire when certain SLA's are breached doesn't get more simple either, when working on a heterogeneous event model.
I finally spend some time prototyping around an idea that has been in the wild for quiet some time: Baseline process-related audit data on BPAF: A WFMC standard that describes a data structure that enables the aggregation and correlation of audit data across multiple platforms.
In the following sections I would like to walk through a simple protoype, that already shows the benefits of this approach. It is really impressive how little code it requires to deliver a solution that already matches an important number of the use cases.
Data model, storage and retrieval
To begin with an implementation for storing and querying BPAF event data was needed. Fortunately JAXB and Hibernate made this a trivial task:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"eventDetails",
"dataElement"
})
@XmlRootElement(name = "Event")
@Entity
@Table(name="BPAF_EVENT")
public class Event {
@XmlElement(name = "EventDetails", required = true)
protected Event.EventDetails eventDetails;
@XmlElement(name = "DataElement")
protected ListdataElement;
/**
* A globally unique identifier for the individual event
*/
@XmlAttribute(name = "EventID", required = true)
protected long eventID;
[...]
}
The current implementation allows two approaches for querying the BPAF data: Either leverage the default model and it's persistence implementation, or adopt a proprietary audit data structure to the BPAF model when needed. For later use case the API fo querying is split from the default data model:
/**
* @author: Heiko Braun
* @date: Mar 10, 2010
*/
public interface BPAFDataSource
{
/**
* Get a list of distinct process definition ID's that are known to the system.
* @return a collection of process definition ID's
*/
ListgetProcessDefinitions();
/**
* Get a list of distinct process instance ID's that are known to the system.
* @return a collection of process instance ID's
*/
ListgetProcessInstances(String processDefinition);
/**
* Get a list of distinct activity definition ID's that are known to the system.
* @return a collection of activity definition ID's
*/
ListgetActivityDefinitions(String processInstance);
[...]
}
Now that we have components in place for storing and querying raw BPAF data, let's move on to a more interesting topic: How to make sense of it.
Turning data into information
The whole purpose of this exercise is to provide a way to gain insights about the execution characteristics of the processes that drive your business. While BPAF itself is a compact but still very expressive format (BPAF State Model) to store process-related audit data, it requires additional steps to turn it into consumable information that participants and decision makers can make sense of.
For the sake of this example we've added some algorithms that allow grouping and sorting of the underlying data, which will be used by the presentation layer.
Let's take a look at the prototype UI (yet another BPM Console plugin) and see how much information can already be derived without going through hoops and loops.
Presenting audit data to decision makers
The prototype UI demos a simple use case: "How did the processes execute in the past?" Although a simple question, it already implies a lot of fine grained functionality a user might expect:
- Selecting a relevant process
- Restricting the query to a certain time period
- Scrolling through business related events that occurred over a period of time
- Zooming in and out on a time scale (hourly, daily, weekly, etc)
Concepts represented by the prototype UI
For the sake of simplicity the current implementation (at the time of this writing) is limited in functionality. Nevertheless I would like to walk you through the current features and explain some of the key concepts.
To begin with a user selects the Process Defintion and the relevant time period:
The time period offers a set of commonly used intervals, like "Last Week", "Last Quarter" or "Last 24 Hours".
The BPAF data is loaded and grouped according to the time period and presented in an interactive chart:
The charts allow you to zoom in on the time scale (i.e. "1 day, 5 day, max") and scroll through the event data on each level.
(Shout-Outs to the chronoscope project)
You can comment on the information and create markers on business relevant points that either require clarification or otherwise mark notable changes in the execution of a process:
Conclusion and next steps
As you see, this simple prototype already covers important features that you would expect from such an implementation.
And we didn't yet touch sophisticated topics like comparison of process executions or creation of key performance indicators that trigger notifications (do the markers ring a bell?).
In the next few month you can expect this approach to be married to SAM, our CEP based BAM component that allows correlation and execution on process activities close to real time.
Stay tuned, now that we have a common baseline for representing and querying process-related audit data we'll look into more advanced topics.
Saturday, March 13, 2010
Good introduction to Akka
Jonas Boner has provided a pretty good introduction to Akka. If concurrency, fault-tolerance and scalability matter to you then this is a must read.
Enjoy.
Enjoy.
Thursday, March 4, 2010
BPM Console 2.0.1 released
I am glad to announce the BPM Console 2.0.1. Although it doesn't include many new functional enhancements, architecturally it's still a major step forward. Let's take a look at the most prominent changes first:
Workspace API consolidation
This is probably one of the most important steps. Something that we had on the roadmap for quiet some time. Before 2.0.x the BPM build on it's own workspace API, which is fully merged with errai-workspaces. Not only does this consolidate the web tooling efforts within JBoss, but it also allows building of true federated toolsets using the errai bus and workspaces modules as a foundation.
This allows us to easily integrate tools from other JBoss projects into a custom workspace build. I.e. something that we are currently thinking about is integrating the Apache Juddi web console as part of the Riftsaw console offering.
Improved performance and development tools
We've been running the console on GWT 1.5.3 for quiet some time but now it leverages GWT 2.0. Probably the most important changes for the BPM console are support for code splitting and declarative UI's.
JBoss system theme
We started working on a custom theme, that should apply to JBoss web tooling in general. It's still in the early stages, but already included in the recent release. We are aiming for a design that's clean, concise and doesn't get in your way:
Role based authorization
Since we migrated to errai-workspaces the BPM console now has support for role based authorization. This means you can easily restrict access to certain tools (i.e. admin vs. user) or use this mechanism to create customized profiles according to a users role (i.e. sales vs. marketing)
History and perma links
One feature that has been requested a lot, was support for linking to tools from an external application. I.e. when a email notification is send for an outstanding task. This is now built into errai-workspaces. The same mechanism that allows you to use the default browser history navigation, can now be used to reference tools from external applications.
Report parameter preferences
The console supports parametrized report templates since version 1.3. What has been added is the ability to store report parameters for each template as part of the console preferences. Imagine a report that requires you to enter a certain time period for rendering. This data is now store within as part of console preferences, so can easily switch between report templates without having to provide that data over and over again.
Roadmap
In the next few weeks we'll focus on the toolset for the Riftsaw BPEL Engine. Areas that need improvement are activity monitoring tools and tools for maintaining WS endpoint references, like the UDDI browser.
Contributions
As I said earlier, 2.0.x was an important step regarding maintainability and API consolidation. We now have everything in place for you to get your hands on the errai-workspaces module and start developing plugins for the BPM console in particular or the JBoss SOA platform in general. In case you are interested, don't hesitate to get in touch with us:
IRC: errai@irc.freenode.net
Mail: http://jboss.org/errai/MailingLists.html
Workspace API consolidation
This is probably one of the most important steps. Something that we had on the roadmap for quiet some time. Before 2.0.x the BPM build on it's own workspace API, which is fully merged with errai-workspaces. Not only does this consolidate the web tooling efforts within JBoss, but it also allows building of true federated toolsets using the errai bus and workspaces modules as a foundation.
This allows us to easily integrate tools from other JBoss projects into a custom workspace build. I.e. something that we are currently thinking about is integrating the Apache Juddi web console as part of the Riftsaw console offering.
Improved performance and development tools
We've been running the console on GWT 1.5.3 for quiet some time but now it leverages GWT 2.0. Probably the most important changes for the BPM console are support for code splitting and declarative UI's.
JBoss system theme
We started working on a custom theme, that should apply to JBoss web tooling in general. It's still in the early stages, but already included in the recent release. We are aiming for a design that's clean, concise and doesn't get in your way:
Role based authorization
Since we migrated to errai-workspaces the BPM console now has support for role based authorization. This means you can easily restrict access to certain tools (i.e. admin vs. user) or use this mechanism to create customized profiles according to a users role (i.e. sales vs. marketing)
@LoadTool(name = "Deployments", group = "Runtime")
@RequireRoles({"administrator"})
public class DeploymentModule implements WidgetProvider
{
[...]
}
History and perma links
One feature that has been requested a lot, was support for linking to tools from an external application. I.e. when a email notification is send for an outstanding task. This is now built into errai-workspaces. The same mechanism that allows you to use the default browser history navigation, can now be used to reference tools from external applications.
Report parameter preferences
The console supports parametrized report templates since version 1.3. What has been added is the ability to store report parameters for each template as part of the console preferences. Imagine a report that requires you to enter a certain time period for rendering. This data is now store within as part of console preferences, so can easily switch between report templates without having to provide that data over and over again.
Roadmap
In the next few weeks we'll focus on the toolset for the Riftsaw BPEL Engine. Areas that need improvement are activity monitoring tools and tools for maintaining WS endpoint references, like the UDDI browser.
Contributions
As I said earlier, 2.0.x was an important step regarding maintainability and API consolidation. We now have everything in place for you to get your hands on the errai-workspaces module and start developing plugins for the BPM console in particular or the JBoss SOA platform in general. In case you are interested, don't hesitate to get in touch with us:
IRC: errai@irc.freenode.net
Mail: http://jboss.org/errai/MailingLists.html
Monday, March 1, 2010
Bela Ban at JBUG Munich, 08.03.2010
Bela talks about ReplCache:
Memory is the new disk, disk is the new tape
ReplCache is a tool to store data in a cluster. It is essentially a hashmap spanning multiple hosts in a cluster.
There are put(), get() and remove() methods which distribute data over the cluster.
The unique feature of ReplCache is that it allows to define a replication count per element, e.g. how many times should an element be stored (on different nodes) for redundancy. When the cluster changes, e.g. due tonew nodes joining or nodes crashing, elements are automatically rebalanced to satisfy replication counts.
Given enough nodes and the assumption that not all nodes ever crash at the exact same time, we can get rid of our database, and use the aggregated memory as our large virtual memory-based database!
(For the paranoid folks, we can still stream the data away to disk/DB).
We will also discuss the architectural approach for applications leveraging ReplCache and which for which kind of application this architecture will be suitable.
Details can be found here
Memory is the new disk, disk is the new tape
ReplCache is a tool to store data in a cluster. It is essentially a hashmap spanning multiple hosts in a cluster.
There are put(), get() and remove() methods which distribute data over the cluster.
The unique feature of ReplCache is that it allows to define a replication count per element, e.g. how many times should an element be stored (on different nodes) for redundancy. When the cluster changes, e.g. due tonew nodes joining or nodes crashing, elements are automatically rebalanced to satisfy replication counts.
Given enough nodes and the assumption that not all nodes ever crash at the exact same time, we can get rid of our database, and use the aggregated memory as our large virtual memory-based database!
(For the paranoid folks, we can still stream the data away to disk/DB).
We will also discuss the architectural approach for applications leveraging ReplCache and which for which kind of application this architecture will be suitable.
Details can be found here
Tuesday, February 16, 2010
Talking at JUG Zurich @ 2.3.2010
I'll be talking about GWT and project Errai in particular at the Java User Group Zurich at the 2.3.2010:
Patterns and Best Practices for building large GWT applications
In this presentation weʼll see how to organize a nontrivial GWT application. Weʼll go through the lessons learned in a real world project and take a look the complete development lifecycle and best practices that go beyond what GWT has to offer out-of-the- box. This talk does focus on modularity of GWT applications and how to overcome the burdens of compile-time linking. Weʼll talk about client side patterns and server side implementation options and explore different approaches that allow for quick turn around times without sacrificing maintainability.
As part of this talk we'll look at project Errai (http://jboss.org/errai) and
see how it can help to achieve these tasks.
In case you are around, make sure to show up.
Patterns and Best Practices for building large GWT applications
In this presentation weʼll see how to organize a nontrivial GWT application. Weʼll go through the lessons learned in a real world project and take a look the complete development lifecycle and best practices that go beyond what GWT has to offer out-of-the- box. This talk does focus on modularity of GWT applications and how to overcome the burdens of compile-time linking. Weʼll talk about client side patterns and server side implementation options and explore different approaches that allow for quick turn around times without sacrificing maintainability.
As part of this talk we'll look at project Errai (http://jboss.org/errai) and
see how it can help to achieve these tasks.
In case you are around, make sure to show up.
Subscribe to:
Posts (Atom)