I would define "portalization" as
the creation of an environment
that gives the end user one-stop
shopping for actionable content
and collaboration. Portals don't create
anything new; they merely give
us comprehensive, personalized
access to content that may reside in
any number of repositories (see
Figure 1). Moreover, portal environments
benefit developers and implementers
by providing a robust set of "out of the box"
tools and features to ease application development
and deployment. These tools include
single sign-on (SSO) access to virtually any
authentication data source, centralized
authorization, logging and reporting, document
versioning, and so on.
And maybe even an employee vacation schedule
Access to this content in a centralized,
concise, easy-to-use format is a powerful
thing. It eliminates the need to open and swap
among multiple applications. It lets him log in
to one SSO system and have access to all
authorized resources rather than needing to
log in to multiple systems. Furthermore, it
eliminates the hassle of crawling through a
document server's directory structure to find a
specific proposal document. Finally, it allows
him to collaborate with other team members
on documents, meetings, etc. With its ability
to improve project management and accelerate
proposal and development efforts, the ROI
for this type of portal application is very valuable,
indeed.
The portal above can be described as a
"dashboard" specific to our CEO's needs. It
gives a personalized set of relevant information
to the current end user. The information
is a collection of data subsets from larger
repositories. Those repositories in this case are
a sales system, a project system, a scheduling
system, a file structure, and an HR system. To
create a portlet on top of an entire repository
that exposes the complete functionality of that
system may seem great, but in reality the end
user wants only a slice of that data customized
for them. For example, at first glance exposing
the entire sales system sounds like it could be
meaningful for many employees. However, the
sales team is only interested in lead-flow
information and not billing information, while
the admin department only needs to see
billing information so they can generate
invoices. In an ideal portal application, each
of these data slices remain separate as part of
a specific user's personalized dashboard.
How Is It Done?
So how do we go about building a dashboard
that is relevant and useful to each
end user? This is done by leveraging a
combination of built-in portal environment
functionality and custom development.
The portal environment gives the
developer a nice framework for doing common
tasks such as authentication, authorization,
content formatting, and portlet
behavior. Custom development helps to
provide exposure and access to application
content and functionality and makes the
portal "consumable" by existing and future
applications. The former development
effort is very specific to the business need.
If the business need allows, the content
access exposure is best developed using
Web services. By using Web services to
expose key business functionality you are
"future proofing" your application. This
service may be consumed by a portlet
today but may need to be consumed by a
third-party application tomorrow. Once
the necessary content and/or functionality
are exposed, it must be consumed. This is
the job of a portlet.
Today developers are somewhat limited
when building consuming portlets. They
must adhere to the APIs defined by the
portal environment. The portability of
these portlets is not quite there yet as
standards like JSR 168 are still being
worked out. If you do expose your content
through Web services, the development
effort to consume that data can be quite
trivial in most portal environments. Most
have simple wizard interfaces that allow a
developer to point at a Web service and
have the portlet nearly build itself. Due to
the reusability, ease of deployment, and
"future proofing" of your applications,
using Web services to expose functionality
and content is a smart move.
Portal Environment: Build or Buy?
While today's portal software is impressive,
it comes at a price. Portal software with
implementation can run a company anywhere
from the mid–five figures to well into
the high six figures and beyond, depending on
the number of users, servers, etc. Is it worth
the investment to get into a portal environment?
The answer really depends on your
business need. Giving your staff access to
their vacation day reports and links to HR
policies within a branded intranet site may
not be worthy of the sexy and expensive features
of a full-blown portal environment. In
this case, your efforts would be better spent
handing this project to a junior developer and
giving him or her a month to bang it out, giving
you far greater ROI than deploying a real
portal. If, however, you truly intend to portalize
your business functions as described in
our CEO dashboard example, there is no
doubt you'll want to buy versus building your
own. The time and investment needed to
match the features and functionality of a portal
environment are not time and money well
spent. In this instance, a good portal environment
is worth the investment.
While all portal environments differ in the
goodies they offer, most will include some
flavor of SSO authentication and authorization;
the ability to define groups of users
into communities with common interests
and the associated content and applications;
monitoring, management and
reporting; content aggregation, indexing
and searching; document check in, check
out, and versioning; collaboration; portlet
development APIs or SDKs; and much
more. Since portal environments have
been around for some time now, and most
offer easy ways to develop portlets to their
environment, giant libraries of portlets
have been developed. Plumtree, for example,
has hundreds of portlets in its library,
from integrating with Lotus Notes, SAP,
Siebel, PeopleSoft, and others, to using
AOL Instant Messenger. Portal environment
libraries provide a huge advantage to
building all these components as many of
them are open source or relatively inexpensive.
What About Integration?
How well a portal environment integrates
with Web services is also very
dependent on the portal company you
choose. While there are certainly some
environments that make the integration
process less painful than others, this
should not be the developers' main consideration.
Developers should be more
concerned about how well a portal vendor
interoperates with other vendors and
portlets. In other words, how good is this
vendor's support for emerging portal and
Web service standards? At the beginning of
the portal revolution, it was acceptable for
each vendor to operate in its own box.
Each portlet developed was proprietary to
the environment in which it lived, as standards
specific to portlets did not yet exist.
Enter OASIS and the Java Community
Process (JCP). With the recent approval of
the Web Services for Remote Portlets
(WSRP) standard by OASIS and the development
of the JSR 168 Portlet Specification
by the JCP, vendors now have the choice of
whether they want to play nice together or
not. Happily, several vendors have actually
integrated these standards into their products
already. This is a big step in the right
direction and great news for those wishing
to implement Web services as portlets.
Web Services Standards and Portals
The WSRP is an interesting standard
and somewhat of a paradigm shift from
what we are used to in the Web services
world. Until now everything was very datacentric.
It's the nature of Web services to
not worry about specific protocols or
client displays. Web service calls either
performed a function or they accessed
some data. Presentation was left in the
hands of the consumer. The WSRP standard
has changed this for portlets. The
idea is that no longer are portlet Web services
"data-oriented," as OASIS calls it. They
are now "presentation-oriented" (see
Figure 2).
WSRP defines a Web service interface
that allows a much richer interaction with
Web services than straight Web service
calls. The producer of the WSRP-compliant
service can expose description information
and capabilities of the service, presentation
markup that is now part of the service, an
optional registration interface for creating a
relationship between the consumer and
producer, and optional management interfaces.
By creating WSRP-compliant portlets,
producers are able to publish portlets that
have been developed in their familiar environments and be assured that consumers
will receive the service as it was intended
from the application logic up to the presentation.
It lets them reuse portlets, make
them WSRP compliant, and expose them
to other consumers. From the consumer
side, no additional development is
required to integrate a WSRP portlet, as
there would be if a straight Web service
were being consumed. So long as the
consumer is also WSRP compliant, the
inclusion of this portlet is virtually
development free.
The adoption of the WSRP standard will
ultimately make portlet interoperability issues
between portal vendors a problem of the past,
opening up new opportunities for businesses to
expose and market their developed portlets
while maintaining full control over application
and presentation logic. It will also benefit businesses
looking to consume existing WSRP
portlets by offering them a complete packaged
portlet application, presentation and all, requiring
virtually no development effort.
Though it is clear that there are many benefits
to using Web services in a portal environment,
there are still some drawbacks. Until the
portal standards have been fully adopted,
developers will need to continue to produce
and consume Web services the "old fashioned"
way. Consuming this way will require a good
deal of additional development to create presentation
and logic around the data you get
back. Another problem with standard Web services
is that you are constrained by the APIs you
build. Let's say, for example, that you decide
your fancy sales lead Web service should now
return fax numbers, which it didn't do before.
You will need to first produce an updated Web
service containing this new field. Then this definition
WSDL needs to be republished into a
UDDI service so new consumers of the service
may develop to the new API. This is okay for
new consumers, but your existing consumers
are now out of sync.
Each existing consumer will need to
develop against this new API to handle the
fax data. You can see how this has the
potential to very quickly become a
maintenance nightmare.
If controlling
presentation, data, and other service
attributes from a central location is a
requirement due to varied consumers and
ease of deployment, you may want to choose a
vendor who is on board with these new portal
standards.
Implementing Web Services
So, let's say you're willing to take the good
with the bad and want in on using data-oriented
Web services in a portal, how do you go
about doing that? Like everything else, this is
dependent on the environment you are in.
But here are the basics you will need to follow:
first you must develop the business logic
that needs to be exposed. Since we are in the
Web services world you can do this with any
language and on any platform you like. Next,
you need to expose this business logic as a
Web service. At this stage of the game just
about every IDE has some support for generating
the files you need for Web service exposure.
These files may include your Web service
wrapper code, WSDL definition file,
deployment descriptors, etc. Deploy this service
and publish its description to a UDDI
server and you have successfully produced a
Web service.
Now you must consume this service in
your portal. The development kits that come
with your portal software will determine how
easily you integrate your newly deployed
service. If you're lucky, you'll have a wizardstyle
interface that will ask you where the
service is defined. From the WSDL, the wizard
will create all the necessary client proxy files
to access this service. This is still only one
piece of the client work. In the Java world
this is just the M of the MVC (Model-View-
Controller). You will still
need to build the presentation
layer and any logic that is necessary
to interact with the service. In building the
client code, you will have access to all the
goodies your portal environment offers, such
as session information, portlet-to-portlet
communication, authorization information,
and so on. Implementing portlets as Web
services will take some work. How smoothly
your implementation goes will depend on
what development platform you use, what
portal vendor you choose, and what in-house
talents you can leverage to handle this
development.
Conclusion
Individually Web services and portals
are very powerful technologies. One would
think then that together they would be
unstoppable. In theory that's correct, but
in reality there are still some limitations to
seamless, portable, simple Web service
portlet integration. The good news is that
these are known problems and are being
addressed by both standards bodies and
the portal vendors themselves. If your
business needs dictate it, a portal can be a
wise investment. Your ROI will not take
that long to be seen if your portal is used
properly. And when all the portlet libraries
have been searched with no luck for that
special application you require, take a stab
at creating your portlet with a Web service.
For all the current and future standards,
platform and protocol independence,
reusability, interoperability, and "future
proofing" benefits you get, you'll be glad
you did.
About the Author
Director of Web engineering at Miller Systems, Alec Graziano is
responsible for all of Miller Systems' Internet-based software
development engagements and process methodology, including
design, architecture, and programming. Alec has significant
and broad experience in designing and managing the delivery
of industry-standard, Web-based software, particularly in the
Web services arena, in both J2EE and .NET frameworks.
agraziano@millersystems.com
All Rights Reserved
Copyright © 2004 SYS-CON Media, Inc.
E-mail:
info@sys-con.com