15
OpenRules, Inc. www.openrules.com October-2012 O PEN R ULES ® Release 6.2.2 TUTORIAL Cloud Application Development

Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc.

www.openrules.com

October-2012

OPENRULES®

Release 6.2.2

TUTORIAL

“Cloud Application

Development”

Page 2: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

2

Table of Contents

Introduction ................................................................................................................ 3

Creating Web Application ........................................................................................... 4

Game Rules ........................................................................................................................4

Business Logic .....................................................................................................................4

Implementation..................................................................................................................6

Graphical Interface ..................................................................................................... 7

Game Layout ......................................................................................................................7

External Layout ..................................................................................................................9

Processing Flow Rules .........................................................................................................9

Project Structure ....................................................................................................... 10

Project Deployment .................................................................................................. 12

Deploying on Local Tomcat ............................................................................................... 12

Deploying on Jelastic Cloud ............................................................................................... 12

Setting Cloud Environment ........................................................................................ 12

Uploading Wars .......................................................................................................... 13

Deploying .................................................................................................................... 14

Running ...................................................................................................................... 15

Technical Support ..................................................................................................... 15

Page 3: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

3

INTRODUCTION

OpenRules® is as an open source Business Decision Management System

(BDMS) with proven records of delivering and maintaining reliable decision

support software. The detailed description of OpenRules® can be found in the

User Manual.

This tutorial describes how to create a rules-based web application using

OpenRules Forms or Dialog and to deploy it on the cloud using www.jelastic.com.

As an example, we selected a popular game “Nim” that you may play from

http://openrules.jelastic.servint.net/Nim. Here is the graphical interface for

the game:

The complete OpenRules® installation includes a workspace “openrules.cloud”

that has several projects to be deployed on the cloud. The project described in

this tutorial is called “Nim”.

Page 4: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

4

CREATING WEB APPLICATION

Game Rules

We We want to implement the popular game known as “Nim”. The rules of the

game are simple:

There is a row with 15 red balls. You and computer take turns

removing balls from the row, but only 1, 2, 0r 3 balls at a time. The

player who removes the last ball loses the game.

We will create a graphical user interface, implement the logic according to which

computer will play the game, and will deploy the game on the Jelastic cloud.

Business Logic

We want use rules tables to define the logic according to which a computer will

play the game (respond to the user’s moves). Here is the strategy for the

computer:

Page 5: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

5

These rules specify which balls should be taken by a computer based on the

number of remaining balls. For example, if there are 11 balls left, it tells

computer to take two balls with numbers “11” and “10”.

To support a user communication on each turn we will use the following rules

after the first table defines “computerTook” number:

So, if no balls remain, it means a computer took the last ball and we will display

“You WON. Congratulations!”.

If only 1 balls left, we will inform a user about his/her loss.

Page 6: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

6

In all other cases, we will inform a user how many balls we took.

These rules table have parameters:

Nim nim – a placeholder for the current state of the game implemented as

a Java class Nim

int opponentTook – a number of balls taken by opponent

int computerTook – a number of balls taken by computer.

Implementation

We created one Java class in the package “openrules.nim” within the folder “src”:

public class Nim { OpenRulesEngine engine; String problem; int size; String message; Object[] objects; public Nim(OpenRulesEngine engine) { this.engine = engine; problem = "Nim"; } public void init(int size) { this.size = size; objects = new Object[size]; for(int i=0; i<size; i++) objects[i] = null; } // We omitted public getters and setters }

An instance of this class should be created for each user’s session.

Implementation of the rules table “nimRules” is described in the technical rows

that were hidden on the previous view:

Page 7: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

7

Knowing “opponentTook” number, we mark all balls taken by us as “my” and

subtract “opponentTook” from “nim.size”. Then we simply call rules table

“nimAfterMyMove” that has the following technical view:

GRAPHICAL INTERFACE

We use OpenRules Forms to create the graphical interface described above.

Game Layout

The main layout of the GUI is described at the following Excel tables:

Page 8: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

8

The layout “nimRow15” display 15 balls:

Here the method “obj” is defined as:

It simply selects red (not taken yet), green (taken by a user), or yellow (taken by

a computer) image for every ball to be displayed.

And finally action buttons are created using this layout:

Page 9: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

9

External Layout

We use the following Excel layouts to describe external view of the game:

These layouts have properties that defined selected colors and described in the

hidden rows similar to these ones:

Processing Flow Rules

We define interaction logic using the following rules:

Page 10: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

10

And finally on each client-server interaction the following main-method will be

called:

The method “newGame” will be called when a dialog is initialized and when a

user clicks on “New Game”.

PROJECT STRUCTURE

Project Nim has a typical structure for all OpenRules web applications:

src

o openrules.nim

Nim.java

war

o css – stylesheets

o images – used images

o rules

Main.xls

o WEB-INF

classes

log4j.properties

web.xml

Page 11: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

11

build.properties

build.xml – used by Ant to complie the project and to build a war file

build.bat – creates a war-file Nim.war

index.jsp

The file ”index.jsp” is the main entry point for this JSP application. It is the

standard “index.jsp” file with one difference – when a new session starts we

create a new instance on the class Nim and put it into the dialog under the name

“nim”. Here is the complete text of “index.jsp”:

Page 12: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

12

PROJECT DEPLOYMENT

The same project can be deployed on the local Tomcat or on the cloud. Our

application depends on the standard OpenRules library called “openrulesdialog”.

This library should always be deployed first.

Deploying on Local Tomcat

The project Nim can be deployed and tested on your local Tomcat by simply

moving the generated file “Nim.war” to your Tomcat’s webapps directory. Make

sure that you also moved the file “openrules.dialog/openrulesdialog.war” to your

Tomcat’s webapps directory. After starting Tomcat you may use your browser

with the URL http://localhost:800/Nim. If you receive an error “File …Main.xls”

cannot be found, please change the line

String xlsMain = "file:../webapps/" + name + "/rules/Main.xls";

in your “index.jsp” to

String xlsMain = "file:./webapps/" + name + "/rules/Main.xls";

When you think you have your web application working fine, switch to the cloud

deployment.

Deploying on Jelastic Cloud

We will use the Jelastic cloud (www.jelastic.com) that provides a very simple

interface for Java web application that does not require any changes in when you

move from local Tomcat to a cloud-based Tomcat. The only real difference if that

currently Jelastic does not allow special charters like dots inside names of the

Tomcat’s projects. We selected Jelastic as a winner of the latest Open World

Duke’s Choice Technology Award.

Setting Cloud Environment

The website www.jelastic.com hat provides a very simple interface. First you

may create a free evaluation account using one of many cloud hosts (e.g. US-

based host “ServInt”). It gives you a web access to a quite intuitive Jelastic’s GUI

from which you may create an instance of the Cloud Environment by choosing

Page 13: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

13

from many predefined components. For example, we selected two Tomcat

containers and one JDK 7 and call this environment “openrules”. You always

may modify the environment later and Jelastic will take about load balancing

and other cloud administration issues (if any). Here is a sample view:

Uploading Wars

Use the Deployment Manager to upload war-files from your machine to the

cloud. From the Jelastic’s GUI click on the button “Upload” and “Browse…” to

select and upload your local war-files “openrulesdialog.war” and “Nim.war”.

Page 14: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

14

Deploying

To deploy these wars to my “openrules” cloud environment click on the “Deploy”

button and select “openrules”.

After the deployment, you will a button that opens a browser with this

URL http://openrules.jelastic.servint.net/Nim/.

Page 15: Release 6.2 - Openrulesopenrules.com/pdf/OpenRulesCloud.pdf · deployment. Deploying on Jelastic Cloud We will use the Jelastic cloud () that provides a very simple interface for

OpenRules, Inc. OpenRules Database Integration

15

Running

Then you will see your application running on the cloud:

You may start it at the same time from another browser at the same time using

the same URL http://openrules.jelastic.servint.net/Nim/. All instances of the

application will run in parallel without interference. A nice thing about this

particular implementation is the fact that the same instance of OpenRuleEngine

serves different client sessions minimizing memory requirements on the server.

TECHNICAL SUPPORT Direct all your technical questions to [email protected] or to this

Discussion Group.