Wednesday, October 1, 2014

2 Surprising JBoss BPM Discoveries at Munich Oktoberfest

JBoss BPM is where?
While at the local Munich Red Hat office last week I was pleasantly surprised that there was this local cultural event called Oktoberfest.

Ever heard of it?

Kind of nice actually. They all gather in these huge tents to sing, drink and be merry while they are wearing local costumes.

Who am I to judge?

There were a few things that caught my attention and are worth sharing in regards to the use of JBoss BPM in Munich and I wanted to share them with you all.

What could possible have anything to do with JBoss or BPM you might ask yourself, but even when there were thousands of festival goers you could not help but notice it. JBoss BPM will even drag people away from the large tents, the lovely food and unmistakable huge German beers.

1. JBoss BPM Evangelist Brainstorming

JBoss all day long!
The first event that was pulling people away, though to be honest it was just a few of us, was a brainstorm session we held at the offices.

A nice guy and colleague, Markus Eisele spent some time outside of the party tents to talk JBoss, BPM, rules, integration and what we might be able to come up with together around these topics the coming months.

He will become more and more active in the coming months on integration topics around the European region, so watch for this and enjoy it as we integrate not only projects but include some structure with rules and BPM.

2. JBoss BPM workshop 

The second surprise was that you can get a group of people away from Oktoberfest by promising them a hands on day with JBoss BRMS and JBoss BPM Suite!

We spent the day working through the online workshop developing rules, events and BPM projects. It was attended by a group of partners local to Munich and they put in the full day, even with the festivities calling out to them.



During the workshop several were also interested in and made use of the OpenShift bpmPaaS offerings by creating their projects directly in the Cloud.

Fun had by all and there was even enough time for everyone to head off to catch the last bit of music at the tents before heading home.

Maybe it is time to make it an annual event, where JBoss BPM technologies are used to draw the crowds out of the tents and into more intellectual activities?

Monday, September 29, 2014

4 Exciting Resources From BPM Openhouse 2014

This week was the kickoff of the BPM Open House event online.

While I posted earlier that there were a number of reasons to attend, the biggest was to enjoy the overview and live demo given of JBoss BPM Suite on both local and bpmPaaS on OpenShift.

Before we give you the promised resources, a short recap of the event and our sessions.

We delivered our session live before a worldwide audience and opened with the following by Luis Cortes.

Improve your organization’s capability for faster growth and change with BPM, Rules and Events

BPM is no longer only about improving efficiency and productivity. According to leading analysts, 85% of organizations report that their primary objective for BPM is achieving faster growth and improved capabilities for change. Meanwhile, where once traditional BPM systems were too expensive and too complex for mid-sized businesses to setup and use now because of cloud computing BPM is becoming more accessible to a much larger audience.

So how can Business Process Management help your business quickly adapt to changing business requirements?

Join this session to:

  • Hear how a leading consumer goods manufacturer uses Red Hat BPM to manage the process of launching new products increasing sales of new product by 18% and decreasing the time to market from 15 to 9 weeks
  • Understand how you can use Business Process Management, Rules and Events to support business growth and fuel your company’s performance
  • Explore general trends on why companies from all sectors are embracing and getting results from BPM



There was then a live demo session where I walked through the various aspects of a financial project showcasing rules, events and BPM. Finally I showcased the same project in bpmPaaS, a cloud deployed JBoss BPM Suite. It was all based on the following outline.

Red Hat JBoss BPM Suite - Building flexible business solutions for changing markets

Looking for improved business agility, operational efficiency and time to market? This demonstration, focusing on a loan origination scenario, will take you through how you can quickly model, simulate, test, deploy and improve a working example using JBoss BPM Suite’s web-based tools. JBoss BPM Suite is an open source business process and decision management platform that enables users to capture business policies and procedures, accelerate application development and automate business operations across physical, virtual, mobile and cloud environments.


This demonstration will explore the following features:
  • Graphical process modeler
  • Guided rule editors
  • Process simulator
  • Forms Designer
  • Interactive business dashboard




We promised four resources that were not to be missed at the BPM Openhouse.

  1. Free access to session slides
  2. Unlimited access to Mortgage BPM project
  3. Open use of free Cloud instances of JBoss BPM Suite on OpenShift
  4. Bonus usage of free Cloud instances of JBoss BRMS on OpenShift

Enjoy!

Friday, September 26, 2014

2 Sessions To Challenge You at JavaLand 2015

There is a new and interesting Java based conference that is gaining in popularity rather quickly.

It is called JavaLand and in 2015 it will be hosted on March 24-25th in Phantasialand, a theme park with great facilities located in Germany.

I am interested in bringing to you a full immersion experience with hands on workshops for xPaaS, rules, events and BPM. We will build all things cloudy and BPM enabled if these submissions are accepted.

Java island?
You have to admit, the location is pretty special so hope to join everyone with the following lab based workshops.

Mastering xPaaS - get down and dirty in the OpenShift Cloud

Ever wondered about all the new Cloud offerings out there? What is a PaaS? What is this thing Garner keeps calling xPaaS? How can I as a beginner get started in a few hours?

Whether your business is running on applications based on Java EE6, PHP or Ruby, the cloud is turning out to be the perfect environment for developing your business. There are plenty of clouds and platform-as-a-services to choose from, but where to start?

Join us for three action-packed hours of power where we'll show you how to deploy your existing application written in the language of your choice - Java, Ruby, PHP, Perl or Python, with the project of your choice - jBPM, Ceylon, Switchyard, Drools Planner, Aerogear, GateIn, Drools (Rules / BPM) and more deployed into the OpenShift PaaS in just minutes. All this and without having to rewrite your app to get it to work the way the cloud provider thinks your app should work.


If you want to learn about xPaaS and see how investing just a few hours of your time can change everything you thought you knew about putting your business applications in the cloud, this session is for you!


Do It Yourself Adventure - Add Rules & BPM To Your Toolbox

Ready to add something new to your development toolbox?

With this workshop you get a chance to do just that, unlock the power of business rules engines and business processing for your development projects. We will take you through it all step-by-step, building rules, domain specific languages, events and BPM to create a real life project of your choosing. Choose from an online web shopping cart experience or an HR employee awards approval process, it's all up to you.

This is a hands on session that takes you from zero to a fully working project based on JBoss open source software. An extra bonus will be an option to run your project on a real life PaaS experience as provided by OpenShift. No time like the present to accelerate your projects into the Cloud!

No expertise in rules or processes is required, you will be guided by the speaker and be sent homeward ready to apply what you have learned in your own projects.


Look forward to seeing you all next year!

Tuesday, September 23, 2014

How to solve impossible business resource planning problems

A fantastic webinar is being hosted this week on JBoss Business Resource Optimizer, a tool used to ease the planning of your business resources.

The tour will be given by none other than Geoffrey De Smet, senior software engineer and OptaPlanner community project lead at Red Hat together with Phil Simpson, principal product marketing manager at Red Hat.

Geoffrey has vast experience at modeling, solving, creating and executing optimization tooling for these complex problems. You don't want to miss a chance to hear him expound on the various aspects and challenges that they are able to meet for your business.

Be sure to register before the event, to be held on Wednesday, 24 Sep 2014 at 11:00 ET (11AM ET) / 17:00 CET (Paris).

Webinar abstract

The world is full of planning problems—scheduling employee shifts, assigning delivery cars to routes, scheduling classrooms for course exams, and assigning manufacturing tasks to machines—just to name a few. Each of these problems can have dozens, or even hundreds, of interconnected constraints.

Solving such problems optimally is key to your business success. The technology and knowledge to do so has been available almost exclusively to large enterprises. Until now.

Powerful—yet accessible and easy to use—tools are now available to help any size enterprise optimize business resource planning.

Join us for this webinar to learn:

  • Basic planning concepts.
  • When to choose heuristic or metaheuristic optimization algorithms.
  • How to overcome scalability challenges.
  • How to quickly solve a wide range of common planning problems using the OptaPlanner planning engine and advanced rules engine functionality in Red Hat JBoss BRMS.

Saturday, September 20, 2014

3 Essential Ways To Start Your JBoss BPM Process

This episode of tips and tricks will help you to understand the best way to initiate your process instances for your needs.

Planning your projects might include process projects, but have you thought about the various ways that you can initiate your process?

Maybe you have JBoss BPM Suite running locally in your architecture, maybe you have it running in the Cloud, but wherever it is you will still need to make an informed choice about how to initiate a process.

We will cover here three essential ways you can best start a JBoss BPM process:
  1. UI dashboard
  2. RestAPI
  3. Build & Deploy button top right.
  4. client application (API)

BPM Suite UI

In the interest of completeness we have to mention the ability to start a process instance exists in the form of a button within JBoss BPM Suite dashboard tooling.

When logged into JBoss BPM Suite and you have finished project development, your BPM project can then be built and deployed as follows.

AUTHORING -> PROJECT AUTHORING -> TOOLS -> PROJECT EDITOR -> BUILD&DEPLOY (button)

The next step is to start a process instance in the process management perspective in one of two ways.

1. PROCESS MANAGEMENT -> PROCESS DEFINITIONS -> start-icon

 2. PROCESS MANAGEMENT -> PROCESS DEFINITIONS -> magnifying-glass-icon -> in DETAILS panel -> NEW INSTANCE (button)

Process definitions has start icon in right corner.
Both of these methods will result in a process instance being started, popping up a start form if data is to be submitted to the BPM process.


RestAPI

Assuming you are going to be calling for a start of your BPM process after deployment from various possible locations we wanted to show you how these might be easily integrated.

Details view of process definition has 'New Instance' button.
It does not matter if you are starting a process from a web application, a mobile application or creating backend services for your enterprise to use as a starting point for processes. The exposed RestAPI provides the perfect way to trigger your BPM process and can be show in the following code example.

This example is a very simple Rest client that, for clarity, will be embedding the various variables one might pass to such a client directly into the example code. There are no variables passed to the process being started, for that we will provide a more complete example in the section covering a client application.

It sends a start process command and expects no feedback from the Customer Evaluation BPM process being called, as it is a Straight Through Process (STP).

public class RestClientSimple {
    private static final String BASE_URL = "http://localhost:8080/business-central/rest/";
    private static final String AUTH_URL = "http://localhost:8080/business-central/org.kie.workbench.KIEWebapp/j_security_check";
    private static final String DEPLOYMENT_ID = "customer:evaluation:1.0";
    private static final String PROCESS_DEF_ID = "customer.evaluation";
    
    private static String username = "erics";
    private static String password = "bpmsuite";
    private static AuthenticationType type = AuthenticationType.FORM_BASED;

    public static void main(String[] args) throws Exception {

     System.out.println("Starting process instance: " + DEPLOYMENT_ID);
        System.out.println();
        
     // start a process instance with no variables.
        startProcess();

        System.out.println();
     System.out.println("Completed process instance: " + DEPLOYMENT_ID);
    }

    /**
     * Start a process using the rest api start call, no map variables passed.
     * 
     * @throws Exception
     */
   public static void startProcess() throws Exception {
        String newInstanceUrl = BASE_URL + "runtime/" + DEPLOYMENT_ID + "/process/" + PROCESS_DEF_ID + "/start";
        String dataFromService = getDataFromService(newInstanceUrl, "POST");
        System.out.println("newInstanceUrl:["+newInstanceUrl+"]");
        System.out.println("--------");
        System.out.println(dataFromService);
        System.out.println("--------");
    }

<...SNIPPED MORE CODE...>
}

The basics here are the setup of the business central URL to point to the start RestAPI call. In the main method one finds a method call to startProcess() which builds the RestAPI URL and captures the data reply sent from JBoss BPM Suite.

To see the details of how that is accomplished, please refer to the class in its entirety within the JBoss BPM Suite and JBoss Fuse Integration Demo project.

Intermezzo on testing

An easy way to test your process once it has been built and deployed is to use curl to push a request to the process via the RestAPI. Such a request looks like the following, first in generic form and then a real run through the same Customer Evaluation project as used in the previous example.

The generic RestAPI call and proper authentication request is done in curl as follows:

$ curl -X POST -H 'Accept: application/json' -uerics 'http://localhost:8080/business-central/rest/runtime/customer:evaluation:1.1/process/customer.evaluation/start?map_par1=var1&map_par2=var2'

For the Customer Evaluation process a full cycle of using curl to call the start process, authenticating our user and receiving a response from JBoss BPM Suite should provide the following output.

$ curl -X POST -H 'Accept: application/json' -uerics 'http://localhost:8080/business-central/rest/runtime/customer:evaluation:1.1/process/customer.evaluation/start?map_employee=erics'

Enter host password for user 'erics':  bpmsuite1!

{"status":"SUCCESS","url":"http://localhost:8080/business-central/rest/runtime/customer:evaluation:1.1/process/customer.evaluation/start?map_employee=erics","index":null,"commandName":null,"processId":"customer.evaluation","id":3,"state":2,"eventTypes":[]}

Results of our testing with curl.
We see the process instances complete in the process instance perspectives as shown.

Client application

The third and final way to start your JBoss BPM Suite process instances is more in line with injecting a bunch of pre-defined submissions to populate both the reporting history and could be based on historical data.

The example shown here is available in most demo projects we provide but is taken from the Mortgage Demo project.

This demo client is using static lines of data to be injected into the process one at a time. With a few minor adjustments one could pull in historical data from an existing data source and inject as many processes as desired in this format. It also is a nice way to stress test your process projects.

We will skip the setup of the session and process details as these have been shown above, but provide instead a link to the entire demo client class and leave these details for the reader to pursue.

Here we will just focus on how the individual start process calls will look.

public static void populateSamples(String userId, String password, String applicationContext, String deploymentId) {

   RuntimeEngine runtimeEngine = getRuntimeEngine( applicationContext, deploymentId, userId, password );
   KieSession kieSession = runtimeEngine.getKieSession();
   Map processVariables;

   //qualify with very low interest rate, great credit, non-jumbo loan
   processVariables = getProcessArgs( "Amy", "12301 Wilshire", 333224449, 100000, 500000, 100000, 30 );
   kieSession.startProcess( "com.redhat.bpms.examples.mortgage.MortgageApplication", processVariables );

}

As you can see the last line is where the individual mortgage submission is pushed to JBoss BPM Suite. If you examine the rest of the class you will find multiple entries being started one after another.

We hope you now have a good understanding of the ways you can initiate a process and choose the one that best suits your project needs.


Wednesday, September 17, 2014

How to setup custom remote deployment repositories for JBoss BPM Suite

In this article we wanted to share another configuration property that can provide surprising help when setting up your JBoss BPM Suite.

Previously we outlined a basic set of configuration properties to provide you with a few tricks when installing your own JBoss BRMS or JBoss BPM Suite products.

As the JBoss BPM Suite is a super set, including full JBoss BRMS functionality, the rest of this article will refer only to JBoss BPM Suite but apply to both products.

In this article we will show you how to modify your JBoss EAP container configuration to point the products at a custom deployment repository by adjusting a single configuration property.

Maven repository

The default setup is that the products will look for your maven setting in the default settings.xml as found set in the M2_HOME variable or in the users home directory at .m2/settings.xml.

The following system property can be added to JBoss EAP standalone.xml configuration file to point to any file containing your custom settings.
  • kie.maven.settings.custom
    • Location of the maven configuration file where it can find it's settings.
    • Default: the M2_HOME/conf/settings.xml or users home directory .m2/settings.xml
It should also be mentioned that by taking control of the settings for your remote deployment repository you also now have control over the (remote) repositories from which you pull your dependencies. For example,  we can now point to repositories within your enterprise to provide JBoss BPM Suite with existing data models.

Example usage in JBoss EAP

When initially setting up the product for use on JBoss EAP containers, one can adjust configuration with the help of system properties.

Below we show how to configure an installation to point to our custom maven deployment repository by using a custom settings file we will call bpmsuite-settings.xml

<!-- Configuration property found in standalone.xml -->
<property name="kie.maven.settings.custom" value="${user.home}/.m2/bpmsuite-settings.xml" />

We hope this helps you with configuring your own custom deployment repositories and enables you to tie into existing continuous integration infrastructures that might exist in your organization.