Tuesday Jun 03, 2008

External Contributor for Eclipse Portal Pack

I would like to welcome Sytze van Koningsveld who has become an active contributor to the Eclipse Portalpack project. I was tied up with a lot of projects that I am involved in, and was not getting enough time to work on the Eclipse Portalpack. Sytze has shown keen interest in working with the Eclipse Portal Pack and we will be working together to take things forward. So please welcome him aboard the project.

 A small bit of information about Sytze in his own words :

"Sytze van Koningsveld was born in the Netherlands and has an MSc. degree in physics, works for over 10 years as a software developer mainly using Java. His programming experience ranges from Linux, COM and Corba to MDA, Jini, Eclipse plugins to portal web development with Spring and Hibernate. His current employer is Royal Dutch KLM in the Netherlands. You can reach him at sytzevk [AT] netscape [DOT] net."

Thursday May 29, 2008

Portal Server 7.2 Released

OpenPortal - WebSynergy

Portal Server 7.2 is now available [download]. Based on the OpenPortal project, this release has several new features such as Delegated Administration, Google Gadget support, and JSR 286 / Portlet 2.0 support.

Looking ahead, Project WebSynergy [earlier post, info, download] is combining the efforts of Sun Portal and Liferay, and producing a lightweight, modular framework for developing and deploying next-gen webapps targeting the web 2.0 crowd. Looking forward to seeing this partnership in action!

For more information, visit the Sun/Liferay Community Page.

Wednesday May 14, 2008

Extending Project WebSynergy's Tables

Project WebSynergy 

We had recently started work on semantic enabling Project WebSynergy's community feature.

Read my blog on that.

For doing this we had to extend the existing table structure by adding new columns
and  also creating new tables.

In this blog I will show how easy it is do this using
Project WebSynergy's ServiceBuilder framework 

The use case for this example will be to add an ontologyId column
to the existing BlogsEntry table.
We would also create a new BlogsEntryOntologyMapping Table. 

Open the

in your favorite IDE (we would recommend NetBeans)

Each <entity> tag corresponds to a table in the DB.

To add "OntologyId" column to the BlogsEntry table
add the following in <entity name="BlogsEntry"> </entity> tag

<column name="ontologyId" type="String" />

We can also add a finder method corresponding to the column that we have just added.
Using this the callers can get the blog entries corresponding to an ontologyId.

        <finder name="OntologyId" return-type="Collection">
            <finder-column name="ontologyId" />
This would generate a findByOntologyId() in the BlogsEntryPersistence
and BlogsEntryPersistenceImpl.

To add a new BlogsEntryOntlogyMapping table add the following 

 <entity name="BlogsEntryOntlogyMapping" local-service="true" remote-service="true">
        <column name="entryId" type="long" primary="true" />
        <column name="ontologyId" type="long" />

Next we need to add getBlogEntriesByOntologyId() to the BlogsEntryLocalServiceImpl class.

public List getBlogEntriesByOntologyId(String ontologyId) throws SystemException{ 

             List blogtnriesList = blogsEntryPersistence.findByOntologyId(ontologyId);

return blogtnriesList;

You will get a compilation error on the blogsEntryPersistence.findByOntologyId(ontologyId) line.
This is because the method is still not added to the BlogsEntryPersistence interface.

But dont mind that as of now :)

After making these changes,
cd to <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\portal-impl
in the command prompt and run the following ant script.

ant build-service-portlet-blogs 

This generates all the service, util, persistence and  factory classes that are relevant to Blogs.

Open the <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\portal-service\\src\\com\\liferay\\portlet\\blogs \\service\\persistence\\BlogsEntryPersistence, you will find that the findByOntologyId() is newly generated.

Open the <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\portal-service\\src\\com\\liferay\\portlet\\blogs\\ service\\BlogsEntryLocalService and BlogsEntryLocalServiceUtil, you will find that the getBlogEntriesByOntologyId() is newly generated.

Now you can call the BlogsEntryLocalServiceUtil .getBlogEntriesByOntologyId() from any portlet class or jsp,
you will get the blog entries that the specific ontologyId applied to that.

Next the changes have to be made in the db scripts.

For this run ant build-db in the command prompt that you opened before.

Open the <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\sql\\portal-tables.sql and <synergy-workspace>\\e2demo\\synergy\\liferay\\portal\\sql\\create-\*.sql.

You will find that the scripts have been suitably modifled.

For the changes to be reflected on the DB (could be MySQL, HSQL, etc),
drop the existing tables under lPortal database if any, and re-start the server.
The ontologyId column would be added to the BlogsEntry Table and BlogsEntryOntologyMapping table would have been created.

Extending Project WebSynergy's tables is as simple as this. You can extend this example to any other feature like wiki, bookmarks, etc.


Tuesday May 13, 2008

Voice-over Screencast to Demonstrate the Simple API for Workflow (SAW) Plug-in

The SAW feature in OpenPortal is intended to offer a generic workflow API, to perform human workflow interaction with various workflow engines. This generic workflow API will ship with a default implementation for Java Composite Application Platform Suite. Currently, the Workflow API, Workflow Tag Library, Sample portlets, and Tooling Plugins for developer IDE's are provided in the SAW home page.

In this screencast, you will learn how to:

  1. Perform human workflow interaction with Java Composite Application Platform Suite workflow engine
  2. Add SAW plug-in in NetBeans IDE,
  3. Create a simple web application using the drag and drop features in SAW plug-in 
  4. Create a simple a simple SAW portlet, which lists tasks based on task ID


Sunday May 11, 2008

Semantic Community Portal in Project WebSynergy


 Semantic Web

The community feature of Project WebSynergy has been semantically enabled. This is a preview version of that.
This is taking the first step towards Web3.0 enablement.

So whats the Semantic Web ??
The semantic web is an evolving extension of the world wide web, in which web content can be expressed not only in a natural language but also in a format that can be read and used by machines for processing the information. It is w3c recommendation.

As a human when we write and read a blob of text, we know what it means but a machine reading a bunch of characters has no idea as to what it means. 

For the machine to be as intelligent as humans to decipher similar information from the text, there has to be some kind of information that the machine has to be provided with. This "extra" information is traditionally provided as meta-data in the form of tags, microformats or some other means. A much more structured and scientific way of applying metadata to a blurb of text is via what is called an ontology.

The community feature of Project WebSynergy allows you to add blog entries, wiki pages and message boards.

Refer to my blog on how to create a community in Project WebSynergy.
For an idea of what a Semantic Community Portal is, see here.

In a Project WebSynergy community, when the user creates a blog entry or a wiki page, he/she can optionally associate it with an ontology element (which acts as the metadata).
When the user views the blog entry, the other semantically related blog entries and wiki pages are displayed. The search for the related entires is not a key word search, but a semantic search done by the reasoner. The semantic reasoner infers the related ontology elements and we can see the blog entries and wiki pages for which  the related ontology elements have been applied to.

An example of the Semantic Community Portal is shown in the screen-casts.

Creating communities in Project WebSynergy


 This blog describes the steps to create a community in Project WebSynergy.

  1. Login as admin@example.com/admin into Project WebSynergy
    Move your mouse over the "Welcome Admin User" message and click on Add Application
  2. In the Add Application window that shows up, select the Communities under Community Section. You can also type "communities" in the search content text box. Click on "Add" or drag and drop the portlet into one of your tabs. The communitiy portlet is now added to your tab.
  3. Click on Add Community button.
  4. Enter name (say Synergy) and click on Save. The community is created with the name that you specified.
    Click on "Available Communities" sub-tab.
  5. For the community that you just created, click on the "Actions" button and select "Manage Pages".
    Enter name for the community page (say MySynergyPage ) and click on "Add Page".
  6. Click on View Pages.
    To this community page, you can add the any  portlets. For eg.
        Blog Portlet
        Blogs Aggregator Portlet
        Wiki Portlet
        Message Boards Portlet
  7. All these portlets are available under the Colloboration section in Add Application window
The "MySynergyPage"that you have created, allows user to add / view blogs, wiki and message boards. 

Expense Report Widget showcasing SAW in Project WebSynergy

The expense-report widget, that is delivered as a part of the Project WebSynergy bundle, models a typical workflow scenario  where SAW (Simple API for Workflow) could be used. In an organization, employees raise expense reports and submit them to the managers to be approved or rejected. Once submitted, the report triggers a workflow process(in a workflow engine like JavaCAPS), and becomes a pending task for the associated manager. When the manager approves/rejects the report, the report goes to the next step in the workflow process.

This widget has been integrated with a simple JavaCAPS workflow process. If a workflow engine is unavailable, the SAW calls to the  Workflow engine can be disabled using the preferences. If the call to the workflow engine is enabled without configuring the engine, it results in a system error.

 In addition to Workflow, this widget has the following features: 

  •  JMaki - Uses JMaki Yahoo Datatable
  •  Usage of ServeResource feature of JSR286 portlets for Ajax requests (For Displaying Report Details)

Click here to know more about this widget....

Here is a step-by-step screencast showcasing the widget.

CMS on Project WebSynergy

     With the announcement of Project WebSynergy, the aggregation and presentation solution for most internet and enterprise applications looks to be heading in the right direction. A significant requirement for any such application is a good Content Management System (CMS). Check out this entry as to how Project Mirage is leveraged and used in WebSynergy. 

Thursday May 08, 2008

Portal Pack NetBeans Plug-in for WebSynergy

There is a preview version of the WebSynergy plug-in available at Portal Pack project site. This NetBeans plug-in supports portlet development and deployment on the new WebSynergy and also works with Liferay. For more details read here...


Wednesday May 07, 2008

Cross-Platform Inter-Widget communication Demo @ JavaONE 2008

JavaONEProjectWebSynergy, will redifine the term portal. It will be a widget platform and will natively support other programming and web technologies, like Ruby and PHP. Java, Ruby and PHP widgets not only co-exist on a portal page, but also inter-communicate. And all this is made so easy using Portal Pack NetBeans plugins.

For more on this, read here. But wait..., if seeing is believing, visit us at the JavaONE 2008 booth if you are in San Francisco or the Bay area.

Friday Apr 18, 2008

OpenPortal @ JavaOne 2008

OpenPortal's presence at JavaOne 2008 and surrounding events
[Read More]

Wednesday Apr 02, 2008

WSRP 2.0 specification approved by OASIS

Web Services for Remote Portlets (WSRP) specification version 2.0 has been approved as an OASIS standard. Here are the links to the approved specification.

  1. HTML: http://docs.oasis-open.org/wsrp/v2/wsrp-2.0-spec-cs-02.html
  2. PDF: http://docs.oasis-open.org/wsrp/v2/wsrp-2.0-spec-cs-02.pdf
  3. XML Schema: http://docs.oasis-open.org/wsrp/v2/wsrp-2.0-types.xsd
  4. WSDL:

The OpenPortal WSRP Project implements the above all the mandatory and some of the major optional features defined in this specification and milestone 3 binary is available for download.


Wednesday Mar 26, 2008

Yahoo Suggest and Search Portlet in Portlet-Repository

Another addition to the porlet-repository is the Suggest and Search Portlet . It is a JSR286 portlet that provides search related suggestions as the user types words and search results  from the web (using Ajax and serveResource)based on Yahoo Contextual Search and  Yahoo Web Search Service API.  The portlet makes REST client calls to the services, parses the results in XML /JSON format and displays them to the user. 

This has been tested on the Open Source Portlet Container 2.0. Check this blog post and  the wiki page for more details.


Thursday Mar 13, 2008

OpenPortal Portlet Container 2.0 RC1 released

Portlet Container 2.0 RC1The first Release Candidate of OpenPortal Portlet Container 2.0 (implementation of JSR 286 specification) is now available for download.

Samples are available to test the new features.

It is recommended that you uninstall Portlet Container 2.0 Beta2 before installing RC1

This release has few additional features/enhancements and fixes since the beta2..

  • Support for Container Events
    • Currently login/logout event is supported, more will be added later. Check Issue 66 for the sample
  • Support for Roles
  • JAXB for marshalling/unmarshalling event payload
  • Fix that enables running Visual Web Components as portlets
  • Few enhancements to support WSRP 2.0

The Issue List contains the details of the additional features/enhancements and fixes.

Netbeans Portlet Pack 2.0 Beta3 is available that helps developers to develop, deploy and test portlets on the Portlet Container 2.0 RC1.

If you have questions on how to use the OpenPortal Portlet Container and other comments/suggestions/requests, we urge you to join the users@portlet-container.dev.java.net alias.

Please report any issues that you encounter while trying OpenPortal Portlet Container RC1 to issues@portlet-container.dev.java.net.

Monday Mar 10, 2008

OpenPortal WSRP version 2.0 milestone 3 available

The OpenPortal WSRP Project v2 milestone 3 is now available for download.  The OpenPortal WSRP Project version 2.0 is now feature complete and will be OASIS WSRP specification compliant whenever the OASIS WSRP specification would be approved.

The OpenPortal WSRP v2 milestone 3 previews the following features, some defined in OASIS WSRP version 2.0 specification.

  1. WSRP 2.0 getResource
  2. WSRP 2.0 Caching
    1. Markup Caching
      1. Expiration Markup Caching
      2. Validation Markup Caching
    2. Resource Caching
      1. Expiration Resource Caching
      2. Validation Resource Caching
  3. Tomcat 5.5 support
  4. Migrated code to the latest WSRP 2.0 schema

You can download the OpenPortal WSRP version 2.0 milestone 3 from the project download page.


This is the last major milestone build from the OpenPortal WSRP Project, the future milestones are expected not to add any major new features to the WSRP version 2.0 implementation rather provide pluggable extensions mechanisms to consuming portals to implement some of the WSRP version 2.0 features such as Portlet Management, CC/PP etc.  

Here are some of the documents that are related to this milestone

  1. Whats new in milestone 3
  2. WSRP installation on Glassfish
  3. Milestone 3 preview document
  4. WSRP installation on Tomcat
  5. WSRP User Guide

Stay tuned on the future milestones of the OpenPortal WSRP version 2.0 project. If you would like to keep track of future announcements and additions to the OpenPortal WSRP Project, please subscribe to the announce@wsrp.dev.java.net alias.

If you have questions on how to use the OpenPortal WSRP Project and other comments/suggestions/requests, we urge you to join the users@wsrp.dev.java.net alias.

Please report any issues that you encounter while trying OpenPortal WSRP version 2.0 milestone 3 to issues@wsrp.dev.java.net.




« July 2016