 | Level: Introductory Hardy Groeger, Senior Software Engineer, IBM Corporation Mel Gorman, Software Engineer
13 Dec 2004 The first in a three-part article series about IBM Workplace application development options, this article introduces you to Workplace templates and applications and to Workplace Builder, the Web-based editor for template and application creation.
[Editor's note: IBM Workplace is synonymous with Lotus Workplace. In this article, we refer to IBM Workplace, or simply Workplace, but we refer to the Workplace Products API Toolkit 1.0 as the Lotus Workplace Products API Toolkit. Other products previously known by the Lotus Workplace brand, such as Lotus Workplace Team Collaboration, are referred to by Workplace: Workplace Team Collaboration, Workplace Messaging, and so on.]
IBM Workplace is the new on demand architecture and platform for collaborative enterprise software that adds collaboration technology to the J2EE-based IBM middleware platforms: WebSphere Application Server and WebSphere Portal. One major goal of this platform is to provide rich application development capabilities for the IBM Workplace server as well as the IBM Workplace Client Technology. This article series, based on the IBM Workplace products release 2.0.1, explains the application development capabilities provided by the IBM Lotus Workplace Products API Toolkit and the Workplace Team Collaboration product. It specifically focuses on the templates and applications infrastructure within IBM Workplace that enable the creation of collaborative server-side applications.
Part 1 of this series gives an overview of the IBM Workplace architecture before focusing on the templates and application framework, which is the heart of the application development approach in Workplace Team Collaboration. Workplace Builder is presented as the end user driven tool to design, manage, and maintain templates and applications. The target audience for this article is developers or power users who intend to build new IBM Workplace applications or templates using Workplace Builder.
Part 2 dives into the architectural details of custom component development for IBM Workplace. Starting with a brief introduction of the reference architecture for J2EE business component development, it gives an overview of the Lotus Workplace Products API Toolkit 1.0 and what it provides to develop custom components for the IBM Workplace 2.0.1 server. It specifically focuses on the Collaborative Application Component Interfaces that allow business component providers to closely integrate their components with the template and application framework. This article and the third part of this series are intended for J2EE developers and provides the necessary details of how to implement custom collaborative components for the IBM Workplace platform.
Part 3 provides a complete hands-on sample implementing a simple team noteboard component that can be used in Workplace applications. The sample covers everything from planning and developing a component to building and deploying it to IBM Workplace.
With IBM Workplace 2.0.1 and the Lotus Workplace Products API Toolkit 1.0, IBM unleashes its first set of capabilities for solutions providers, partners, and ISVs to develop collaborative applications for the Workplace platform. To better understand the Workplace platform, we start this series with an overview of the general IBM Workplace system architecture with emphasis on the templates and application infrastructure as the heart of the application development approach in Workplace Team Collaboration. The key concepts behind templates, applications, and application components are explained as well as Workplace Builder, the built-in, end user-driven tool to manage and maintain templates and applications.
IBM Workplace architecture
The IBM Workplace server is built on top of IBM's middleware offerings WebSphere Application Server and WebSphere Portal. Based on these middleware platforms, it leverages a large number of software standards, including Java, J2EE, LDAP, SQL, XML, and many, many more. Use of standards is a key requirement for participating in IBM's on demand vision; at a basic level, the use of standards helps guarantee that components will interoperate with middleware implementations and other components.
The IBM Workplace products release 2.0.1 consists of four separate products. While all of these provide a browser-based user experience, some of them also leverage the IBM Workplace Client Technology.
-
Workplace Messaging offers a standards-based (SMTP, POP3, and so on), simple messaging experience for browser users and provides server-managed delivery of a rich client experience for those users who can benefit from an extended set of integrated productivity tools.
-
Workplace Team Collaboration combines the capabilities of instant messaging with integrated presence awareness, Web conferencing, and customizable Team Spaces and team applications in a browser environment.
-
Workplace Collaborative Learning helps streamline and manage an organization's classroom-based and on-line learning programs, resources, and courseware.
-
Workplace Web Content Management provides rapid content development and streamlines the Web content management process.
-
Workplace Documents provides a collaborative document management product with a choice of rich client or browser-based experiences that enables the management of the complete life cycle of documents.
Figure 1. IBM Workplace server architecture
IBM Workplace was developed to work with IBM's middleware products that implement the standards noted earlier. WebSphere Application Server is the J2EE container implementation used by the IBM Workplace server. IBM Workplace further uses WebSphere Portal as its platform for navigation, user-interface composition, access control, and many other common functions. A number of RDBMS platforms is supported including DB2, Cloudscape, Oracle, and so on.
Another key aspect in the IBM Workplace architecture is componentization. The use of a component-based architecture enables the creation of different combinations suited to different requirements, promoting the reuse of software. IBM Workplace comes with a set of infrastructure services and components that provide functions and services to higher-level application components to build upon. Infrastructure components that are specifically important for this article are application infrastructure, templates, and Workplace Builder.
IBM Workplace application and infrastructure components are implemented based on a formal architecture, called business component architecture, which combines well known approaches and best practices for J2EE development. The business component architecture describes a pattern for the organization, structure, and behavior of Workplace components. All components shipped with IBM Workplace have been built along this architecture. Custom components implemented for the IBM Workplace server benefit from adhering to this approach.
Figure 2. Business component architecture
Each component is defined using a layered architecture. The use and responsibilities of each layer are clearly defined. External access to the component functionality occurs only through formally defined access interfaces; this means that third parties cannot directly access component features through either the User tier (that is, the user interface) or the Resource tier (for instance, the database schema) because these are likely to change in future versions of IBM Workplace. Instead, you can access the components via their Service tier API only. The Lotus Workplace Products API Toolkit 2.5 will publicly expose some of these component services (JavaDoc for component services is part of the API toolkit 1.0 already).
An important distinction in IBM Workplace is the one between a general business component and a collaborative component. Business component means any software capability that has the properties of being encapsulated, transportable, and composable. A collaborative component indicates a specialized type of business component that has been integrated with the Workplace application infrastructure and as such, can be part of a Workplace application or template. The Lotus Workplace Products API Toolkit 1.0 enables the development of such server-side collaborative components. Capabilities to develop IBM Workplace client components will be available in future versions of the toolkit. The second part of this series of articles will explain the concepts of a collaborative component as well as the Collaborative Application Component Interfaces provided with the toolkit in more detail.
IBM Workplace supports the reuse of software components through the templating mechanism and the application infrastructure. To better understand these core concepts, we should first look at what exactly a Workplace template is.
Workplace templates
In general, a template is something that serves as a master or pattern from which other similar things can be made. From an IBM software perspective, a template is a portable persistent description of a configuration of a software system with defined points of variability. A template, therefore, describes a customization of that software system to represent an application.
In less abstract terms, this means that a template in IBM Workplace 2.0.1, which is represented by an XML file, describes a reusable collaborative pattern, like a Team Space or a discussion forum. On the one hand, the template depicts which set of pages and collaborative components an application consists of and thus, assembles them into a shared context. On the other hand, the template expresses a specific configuration of these components in the form of community roles and mappings as well as component parameters. The template focuses on the assembly and configuration of components. All referenced components need to be deployed to the server before they can be used in a template.
Community roles are used to abstract from the various role models of all involved components, and then to map them to the individual component roles, for example, a Team Project Team Space template defines moderator and contributor as community roles. These are then mapped for all individual components within the Team Project template like discussion, team tasks, and so on. The community role moderator, for example, maps to TaskAdministrator in team tasks within the Team Project template. With this abstraction and mapping mechanism, each component can implement its own role model and still be integrated into a shared role model for the overall template.
In addition to the template specific role mapping, components can expose variables, so-called points of variabilities to be used within templates. You can set those variables or points of variability with template specific values and thus, configure a component specifically within the context of this template. A template can either directly set a value for a component parameter or leave it open until instantiation of an application. A task management component, for example, can expose a point of variability that defines whether or not notification messages for overdue tasks are being sent. You can customize this behavior of the component on a template or specific application instance level.
All templates in IBM Workplace are accessible through the Template Catalog portlet. You can use the Template Catalog to define access control for templates and therefore, specify who is allowed to read, edit, or delete a template.
By default, templates are categorized into document library, Web conferences, Team Spaces, and applications, but you can define new categories as needed. Each category can contain multiple templates; by default, IBM Workplace 2.0.1 ships with one Web conference and several Team Space and application-type templates. The categories are being used to separate existing application instances into different catalog portlets. Team Space instances can be accessed via the Team Space Catalog portlet and document libraries, Web conferences, and applications through their corresponding catalog portlets.
Now that we know what Workplace templates are and where to find them, what can we actually do with them? Why define a template when all you need is some software application that fulfills your requirements? The answer again is reuse.
Workplace applications
Workplace applications are instantiated from existing templates. An application establishes a shared context and location to bring together people, content, and processes to complete a task more efficiently.
During instantiation of an application, all the portal pages and concrete portlet instances specified in the template are created. In addition to that, all involved components are notified to instantiate themselves. Finally, a community instance is created representing the membership for the new application. Through the lifetime of the application, each life cycle event of the application is passed down to all the contained components via the Collaborative Application Component Interfaces. For example, the components are notified when the containing application is created or destroyed. This allows components to create and destroy any resources needed while the application is running. Parameters that had been defined in the template already are passed to the components upon instantiation. Required parameters that have not been specified in the template have to be filled in at instantiation time. The application infrastructure renders a corresponding input form at runtime.
Examples for applications could be "ACME Sales Task Force Team Project" instantiated from the Team Project template or the "DB2 Knowledge Community Team Space" instantiated from the Team Space Discussion template. One limitation in IBM Workplace 2.0.1 is that applications take a snapshot copy of the configuration information in the template upon instantiation and from then on, are independent from the template. Changes to the template are not propagated to existing applications that have been created from this template before. This limitation is likely to be lifted in future versions of IBM Workplace.
You can access applications via the Web Conference, Documents, Team Space, and Applications tabs in the browser UI of IBM Workplace. Each of the navigation tabs opens a page that contains a catalog portlet that lists all application instances of the corresponding template category. The catalog portlet also provides search capabilities for searching across multiple application instances.
What if the default templates shipped with IBM Workplace 2.0.1 are not sufficient for your immediate business requirements? What if you want to use team projects, but require a different page structure or different components to maximize the value your users get from team projects? You may want to create your own custom templates or even change existing applications to enhance their functionality. The tool you are looking for to accomplish this is Workplace Builder.
Workplace Builder
Workplace Builder is a built-in, browser-based tool that allows non-programmers to create and manage Workplace templates as well as edit existing applications. Workplace Builder is launched whenever a template in the Template Catalog is clicked or when a new template is created. Use the Workplace Builder link in the portal theme header, right next to the Administration link, to navigate to the Template Catalog from anywhere in the browser-based IBM Workplace UI. Visibility of this link and access to Workplace Builder and the Template Catalog in general are defined through a policy in the Workplace policy infrastructure component. For more information about policies, see the Lotus Workplace InfoCenter.
The following diagram illustrates the relationship between templates, applications, components, and Workplace Builder. In the standard scenario, Workplace Builder is used to create a new template either from scratch or from an existing template. You can select collaborative components or simple portlets from the Workplace Component Catalog and add them to the current template. Given that Workplace Builder is using portlets as the handle to add or remove components, each collaborative business component needs to have a portlet as its User tier implementation in release 2.0.1. Nevertheless you can still add any stand-alone portlet to a template; just be aware that such simple portlets would render exactly the same in different application instances, while portlets that are part of a collaborative component could represent application specific data or configuration depending on the application instance you are looking at.
Figure 3. Relationship between Workplace Builder, templates, and applications
Workplace Builder also allows you to edit existing application instances. For authorized users, the Workplace browser UI renders an Edit button within application instances and via this button, you can edit the current application in Workplace Builder. You can alter the application on the fly or save it as a new template. This feature allows simple iterative development of new templates. Starting with a simple template and a single application instance, you can test the application and apply any required customization to the running instance. After the application fulfills all business requirements, you can save it as a new template, and the same functionality can be provisioned to other teams or workgroups over and over again.
Via the four tabs Properties, Pages and Layout, Parameters, and Roles in the Workplace Builder UI, you can access and alter the various aspects of a template. The Properties tab allows you to specify general information such as the name, category, and owner of the template or the theme it is supposed to be rendered with. In Pages and Layout, you can define the list of pages and with them, the components required for this template. When you click the Parameters tab, Workplace Builder introspects all components contained in the template at this point and allows you to alter any parameter settings these components may support. Finally, within Roles, you define the template-level community roles that are mapped to the specific roles for each component contained in the template.
Figure 4. Workplace Builder Properties tab
While editing a template, use the Preview button to see what an application instance based on this template looks like. Eventually, you can save the new or altered template. For further details on the usage of Workplace Builder, refer to the Lotus Workplace InfoCenter.
Conclusion and comparison to existing IBM technologies
Other IBM Lotus software products have implemented the concept of templates and applications before. Lotus Domino, for example, supports the notion of templates in many different ways. You can save a standard Domino database as a design template, and other application databases--as well as single design elements--can refer to such a design template to receive automatic design updates. Lotus Notes/Domino also allows you to define specific database templates as NTF files. You can then use these files to create new databases based on the same design via the standard database creation mechanisms.
One crucial limitation of the Notes/Domino approach is the database scope of a template. In most cases, an enterprise application consists of multiple databases and thus, multiple templates. Furthermore, Domino templates do not have an implicit notion of variables or points of variability. Reuse and simple instantiation of complete application instances are much harder to realize.
The assembly and configuration approach for templates in IBM Workplace and the concepts of business components and Collaborative Application Component Interfaces overcome that limitation. An application could consist of dozens of different components, each of them with very specific requirements for instantiation or membership and access control. Still, instantiating applications from such a template is done in a single step without dealing with the specifics of each of the involved business components.
Also, the fact that the business component architecture is based on J2EE patterns and best practices allows you to integrate almost any existing J2EE application into the Workplace application framework. Depending on whether or not these existing J2EE applications need to interact with application life cycle events, all you need to do is provide an adapter that implements the Collaborative Application Component Interfaces.
Finally, the concept of points of variability enhances the reusability of components because they can be adapted to different situations and requirements without changing code, but simply applying a different configuration through the template.
This article gave an overview of the high-level architecture of IBM Workplace as well as the concepts of templates, applications, and Workplace Builder. The second part continues with a deep dive into the Workplace programming model. It will give an overview of the available APIs in the Lotus Workplace Products API Toolkit and will explain in more detail what is required to implement and deploy custom components for reuse in Workplace templates and applications.
Resources
- Read part 2 of our IBM Workplace application development series: "IBM Workplace programming model" and part 3: "Putting it all together and sticking it on a noteboard."
- The developerWorks: Lotus article, "Exploring the application development options for IBM Lotus Workplace 2.0," provides a brief overview of the public APIs and SPIs, the JSP tags, and the Collaboration Application Component Interfaces in the Lotus Workplace Products API Toolkit.
- Get the latest version of the Lotus Workplace Products API Toolkit from Lotus.com.
- Download the Lotus Workplace Products API Toolkit User's Guide.
- To learn more about IBM Workplace, visit the IBM Workplace Resource Center. You'll find
technical documentation, how-to articles, education, downloads, product
information, and more.
- Get involved in the developerWorks community by participating in developerWorks blogs.
-
Browse for books on these and other technical topics.
About the authors  | |  | Hardy Groeger is a Senior Software Engineer in the Lotus Workplace Application Tools development team. Since he joined IBM in 2001, he has worked on various internal and external projects including WebSphere Portal Collaboration Center, specifically People Finder, the Lotus Workplace Team Task List component, and the workflow strategy for Lotus Workplace. |
 | |  | Mel Gorman is a Software Engineer in the Lotus Workplace Application Tools development team. He has worked with IBM since 2003 as a Software Engineer on the Team Task List component of Lotus Workplace. |
Rate this page
|  |