Bonita Open Solution How to… Create a Connector

Bonita Open Solution
Version 5.1
How to…
Create a Connector
Version1.0
Bonita Open Solution 5.1 How to
Bonita Open Solution V5.1
How to...Create a Connector
Contents
Part 1.
Overview ................................................................................................................................. 4
Part 2
Design the Connector ............................................................................................................. 4
2.1
What will the Connector do? .................................................................................................. 4
2.2
Connector dependencies ........................................................................................................ 4
2.2
Design the Connector ............................................................................................................. 6
2.2.1
Define the Connector wizard .......................................................................................... 6
2.2.2
Enter the Connector code ............................................................................................. 11
Part 3
Design the Process ................................................................................................................ 14
3.1
Define the Process ................................................................................................................ 14
3.2
Define Data variables ............................................................................................................ 15
3.3
Define the new Connector to work with this Process .......................................................... 16
3.4
Create Forms ......................................................................................................................... 18
3.4.1
Add a Form to the RSS Feed Step.................................................................................. 18
3.4.2
Add a Form to the Read results Step ............................................................................ 20
Part 4.
Run the Process..................................................................................................................... 23
Figures
Figure 1. Open Bonita Studio ................................................................................................................. 5
Figure 2. Select Manage jars to upload dependencies .......................................................................... 5
Figure 3. Add dependency files to your BOS jars ................................................................................... 6
Figure 4. Activate jar files ....................................................................................................................... 6
Figure 5. Create a new Connector ......................................................................................................... 7
Figure 6. Set the description of your Connector .................................................................................... 7
Figure 7. Enter the description and parameters for the Connector ...................................................... 8
Figure 8. Define the fields for your Connector wizard ........................................................................... 9
Figure 9. Define the input fields for the Connector wizard ................................................................... 9
Figure 10. Create the output fields for the Connector wizard ............................................................. 10
Figure 11. Define the output fields for the Connector wizard ............................................................. 10
Figure 12. Java editor for a new Connector ......................................................................................... 11
Figure 13. Connector defined in java editor ........................................................................................ 13
Figure 14. Errors are flagged by java editor ......................................................................................... 13
Figure 15. New Category and Connector appears in the Connectors list ............................................ 14
Figure 16. Draw Tutorial Process ......................................................................................................... 14
Figure 17. Add a text variable for the Connector Input ....................................................................... 15
Figure 18. Add a java object variable for the Connector output ......................................................... 16
BOS V5.1 – How To Create a Connector – 25 Mar 10
www.bonitasoft.com | © BonitaSoft S.A.
page 2
Figure 19.
Figure 20.
Figure 21.
Figure 22.
Figure 23.
Figure 24.
Figure 25.
Figure 26.
Figure 27.
Figure 28.
Figure 29.
Figure 30.
Figure 31.
Figure 33.
Figure 34.
Figure 35.
Figure 36.
Figure 37.
Global Data Added .............................................................................................................. 16
Configure Connector ........................................................................................................... 17
Select ${url} to take input .............................................................................................. 17
Map the output of the Connector to the rssResult Data variable ............................... 17
New Connector defined for RSS Feed Step ......................................................................... 18
Skip initial forms at process start ........................................................................................ 18
Create an initial Form .......................................................................................................... 19
Create Form in Form Builder ............................................................................................... 19
RSS Feed Step now has a Form ........................................................................................... 20
Create a form to display returned data .............................................................................. 20
Add a field to the form to take the returned output .......................................................... 21
Select field for Expression ................................................................................................... 21
Add Groovy script to read list output ................................................................................. 21
Output defined .................................................................................................................... 22
Increase the width of the output field ................................................................................ 22
RSS Feed form appears in Bonita User Experience ............................................................. 23
Enter a URL for an RSS feed ................................................................................................ 23
Feed results are returned.................................................................................................... 24
Bonita Open Solution
How to Create Your Own Connector
You can download this, and the general User & Reference Guide and updates, from the BonitaSoft
web site.
Part 1.
Overview
As you follow this tutorial, you will






Part 2
2.1
design a Connector wizard using java;
design a simple Process;
define global Data variables for inputs and outputs;
use your Connector wizard to add a Connector to the Process;
create input and output Forms in the Process; and
run the Process to see the results.
Design the Connector
What will the Connector do?
In this How-To, the Connector will automatically retrieve and read an RSS feed from a URL
entered by the User.
The connector you will create is the same as one which has already been developed and is
available on the BonitaSoft Community at
www.bonitasoft.org/exchange/extension_view.php?eid=2.
The java code for this connector is given in 2.2.2, Enter the Connector Code.
2.2
Connector dependencies
This connector has 2 dependencies which you will need to fetch and install in Bonita Studio.
Go to http://wiki.java.net/bin/view/Javawsxml/Rome and download to your system:


ROME v1.0+ (binary jar Rome-1.0.jar)
JDOM 1.0 (jdom-1.1.1.zip) (download and unzip to locate jdom.jar)
Open Bonita Studio.
Open a new Process.
The Whiteboard shows a start and a Step:
Figure 1. Open Bonita Studio
Go to the Task Bar and select Extensions -> Add/Remove.
Figure 2. Go to Extensions to upload dependencies
Then select Add jar and browse to where you have downloaded the dependency files.
Upload them into Bonita Studio.
Figure 3. Add dependency files to your BOS jars
To activate these dependencies in this Process, go to MyProcess -> Details -> Dependencies
and tick the checkboxes for the two jar files you have just added. (Note this can also be
done at the Diagram level.)
Figure 4. Activate jar files
2.2
Design the Connector
2.2.1
Define the Connector wizard
Go back to the Whiteboard.
Go to the Task Bar and select Connector -> New Connector.
Figure 5. Create a new Connector
The Set the description of your connector wizard appears.
Figure 6. Set the description of your Connector

Connector ID


Description
Category
The ID by which BOS recognizes this Connector; for this example use
RSSReader
what the Connector does
Select which category this Connector will appear in when you select
Add a Connector to a Step. You can put this connector into an
existing category or create your own. You will be able to add more
new Connectors to this new Category later.
In this example, create a new category called Syndication.

Icon
(Optional) The icon in the Category line will be used for the
Category. The Icon in the next line will be used for this specific

Class name

Package
Connector. If you want to use an icon, browse to where it is located
and upload it. (Recommended size: 60x 60 pixels).
The java class name; this is automatically completed to be the same
as the Connector ID. For this example, leave it as is.
The java package. For this example use:
org.bonitasoft.connectors.rssreader
Figure 7. Enter the description and parameters and upload an icon
Next you’ll specify the inputs and outputs for the Connector wizard. Select Pages -> Create
to bring up the next window.

Page ID

Page Title

Description
the ID by which BOS recognizes this Connector wizard page (for this
example use EnterURL)
this will appear at the top of the wizard (Retrieve an RSS or
Atom feed)
(Optional) this will appear below the Page Title at the top of the
wizard (Enter the destination URL)
Figure 8. Define the fields for your Connector wizard
To define the fields in this wizard, select Create. Information will appear in the widgets
fields that you can modify or keep.




Field name
Mandatory
Widget
Data Type
the name of the input data field (url)
select “mandatory” for this field
select the type of widget for this field to appear in (Text)
select the type of data field for this input (Text)
For this example, choose Text for both the Widget and the Data type. Click OK.
Figure 9. Define the input fields for the Connector wizard
Now define the output for this Connector wizard. Select Outputs -> Create and Information
will appear in the widgets fields that you can modify or keep.
Figure 10. Create the input fields for the Connector wizard

Field name

Data Type
the name of the output data field (for this example, use
itemsList)
select the type of data field for this input (Text).
Figure 11. Create the output fields for the Connector wizard
When you click Finish, the java editor appears.
Figure 12. Java editor for a new Connector
Here is where you will copy and paste existing java code to subscribe to an RSS feed – or,
where you will enter your code whenever you create a new Connector.
2.2.2
Enter the Connector code
Copy and paste the following into the java editor.
/**
* Copyright (C) 2010 BonitaSoft S.A.
* BonitaSoft, 31 rue Gustave Eiffel - 38000 Grenoble
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2.0 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* Bonita Connector to read RSS and Atom feeds.
* Dependencies :
* -ROME v1.0+ : http://wiki.java.net/bin/view/Javawsxml/Rome
* -JDOM 1.0 : http://www.jdom.org/
*
* To read the RSS feed use the Groovy script below in the edit Form
(with a list for example)
*
* @author [email protected]
*/
/*
res = new ArrayList<String>();
itemsList.each
{
res.add(it.getTitle() + " : " + it.getLink())
}
res
*/
package org.bonitasoft.connectors.rssreader;
import java.util.ArrayList;
import java.util.List;
import java.net.URL;
import
import
import
import
com.sun.syndication.feed.synd.SyndEntryImpl;
com.sun.syndication.feed.synd.SyndFeed;
com.sun.syndication.io.SyndFeedInput;
com.sun.syndication.io.XmlReader;
import org.ow2.bonita.connector.core.ConnectorError;
import org.ow2.bonita.connector.core.ProcessConnector;
public class RSSReader extends ProcessConnector {
// DO NOT REMOVE NOR RENAME THIS FIELD
private String url;
private List<SyndEntryImpl> itemsList;
@SuppressWarnings("unchecked")
@Override
protected void executeConnector() throws Exception {
URL feedUrl = new URL(this.url);
SyndFeedInput input = new SyndFeedInput();
SyndFeed feed = input.build(new XmlReader(feedUrl));
this.itemsList = feed.getEntries();
}
@Override
protected List<ConnectorError> validateValues() {
List<ConnectorError> errorsList = new
ArrayList<ConnectorError>();
if("".equals(url.trim())) {
ConnectorError error = new ConnectorError("url", new
IllegalArgumentException("Url is empty"));
errorsList.add(error);
}
return errorsList;
}
/**
* Setter for input argument 'url'
* DO NOT REMOVE NOR RENAME THIS SETTER, unless you also change the
related entry in the XML descriptor file
*/
public void setUrl(String url) {
this.url = url;
}
/**
* Getter for output argument 'itemsList'
* DO NOT RENAME NOR RENAME THIS GETTER, unless you also change the
related entry in the XML descriptor file
*/
public List<SyndEntryImpl> getItemsList() {
return this.itemsList;
}
}
Figure 13. Connector defined in java editor
NOTE that if there is an error in the code structure, warning notations will appear.
Figure 14. Errors are flagged by java editor
Click the X on the RSSReader.java tab to save the Connector, close the java editor and return
to the Whiteboard.
Go to Step1 -> Details -> Connectors -> Add. The list of Connectors to choose from will
appear.
The Category Syndication and the Connector RSSReader will appear in the list.
Figure 15. New Category and Connector appears in the Connectors list
Click Cancel to return to the Process and continue.
Part 3
3.1
Design the Process
Define the Process
This simple tutorial Process will have 2 Steps: Subscribe to RSS Feed and Read
results.





Add a second Step and an end to the Whiteboard.
Rename Step1 to RSS Feed.
Rename Step2 to Read results and change it to Human.
Rename MyProcessDiagram to Tutorial Example–RSS Feed.
Rename MyProcess Pool to RSS Feed.
Figure 16. Draw Tutorial Process

Define Actors to be Process Initiator for both Steps. This will allow you to interact
with each step as it is presented in the User Experience.
3.2
Define Data variables
Define two global Data variables: one to send the requested URL (input) and one to receive
the returned information from the RSS feed (output).
Go to RSSFeed (pool) -> Data -> Add.
Figure 17. Add a text variable for the Connector Input
Figure 18. Add a java object variable for the Connector output
Figure 19. Global Data Added
3.3
Define the new Connector to work with this Process
Add the new Connector to the RSS Feed Step. Go to RSS Feed -> Connectors -> Add. Select
RSSReader from the Syndication category.
Click Next to use the wizard you have created to define a new Connector of this type.




enter the name of the Connector (Fetch RSS)
enter a description for this Connector (Receive RSS from a
blog feed)
Select event when this Connector will activate (on finish)
If connector fails
choose action for failed Connector (Abort process and raise
error)
Name
Description
Figure 20. Configure Connector
Figure 21. Select ${url} to take input
Click Next to define Output.
Figure 22. Map the output of the Connector to the rssResult Data variable
Click Finish.
Figure 23. New Connector defined for RSS Feed Step
3.4
Create Forms
Create customized Forms using the Data input and output from the new Connector in this
Process.
Go to the Pool RSSFeed -> Details -> Forms and select the option Skip the initial forms at
process start.
Figure 24. Skip initial forms at process start
3.4.1
Add a Form to the RSS Feed Step
Go to the Step RSS Feed -> Details -> Forms -> Add.
Figure 25. Create an initial Form



Name
enter the name of Form (Retrieve blog feed)
Description
enter a description for this Form
Add widgets based on As this form will accept a URL as input, leave url -> Text
checked.
Click Finish to continue.
Figure 26. Create Form in Form Builder
Click on the X on the Retrieve blog feed tab to close it. The Form now shows in the Step
Details.
Figure 27. RSS Feed Step now has a Form
3.4.2
Add a Form to the Read results Step
Go to Read results -> Details -> Forms -> Add.



Name
enter the name of Form (Read results from blog feed)
Description
enter a description for this Form (See results of RSS feed)
Add widgets based on You will add the widget for the java object returned in the
next step. Unselect the url –> Text option presented as that is not
needed for the output form.
Figure 28. Create a form to display returned data
There will be no “live” fields in this form, but add a List to take the data returned in the java
object in list form.


Click and drag List into the form.
Click on the List1 cell and go to General. Uncheck Show label.
Figure 29. Add a field to the form to take the returned output

Click on the List cell and go to Data. The Expression field should be filled with
${field_List1. If not, choose it from the list.
Figure 30. Select field for Expression

Add a groovy script to the Available values field. Select Edit expression.
The Groovy editor will appear. Copy and paste the Groovy script below into the Groovy
editor.
res = new ArrayList<String>();
rssResult.each
{
res.add(it.getTitle() + " : " + it.getLink())
}
res
Figure 31. Add Groovy script to read list output
Figure 32. Output defined
Click OK to save the script.
Make the output field larger and easier to read. While still in the Form Read results
from blog feed, click on List1, go to Details -> Appearance -> Field and enter 100% in
Width.
Figure 33. Increase the width of the output field
Click on the X on the Read results from blog feed tab to save and close it. The
Form now shows in the Step Details.
Part 4.
Run the Process
Click Run to run the Process.
The first Form will appear. Click Submit to continue (and to activate the Connector).
Figure 34. RSS Feed form appears in Bonita User Experience
Enter the RSS URL for the BonitaSoft.org blog
http://feeds.feedburner.com/BonitaOpenSourceBpmCommunityBlog
and Submit.
Figure 35. Enter a URL for an RSS feed
The feed results are returned:
Figure 36. Feed results are returned