Freitag, 23. Dezember 2011

WSM 11.0 Technology Preview 2 is out

About three weeks ago, we provided a WSM 11.0 Technology Preview 2 to selected Open Text partners and few customers. Compared to the Technology Preview 1, this version is already feature complete, but the release iterations (the final tests) have not been completed.

The feedback we got so far is very very good. Almost everyone is excited from the performance this version is providing, i.e. working in SmartEdit while doing a full publication or importing/exporting projects very fast. This shows us that we're on the right track and that our internal performance results are not far away from real world scenarios.

Be prepared for the final version!

Donnerstag, 25. August 2011

Make your website social with OpenText Web Site Management 11

One of my teams currenlty finished a spike (that's some kind of POC) on how to integrate Social Communities features like Rating, Comments, Reviews into OpenText Web Site Management Server 11.

I would like to share some insights on the results of this spike (a new content element (Rating)) with you. Please provide some feedback (positive and negative) on this results.

What did we do so far?

A new content element called Rating was implemented. This element allows you to easily integrate the rating feature from OpenText Social Communities server into your website. It will provide some out of the box look and feel and will also allow you to get the raw values.

Which technologies are used?

OpenText Social Communities and OpenText Web Site Management Delivery Server provide the rating feature that is integrated using the new content element. Within Delivery Server the HTTP Rest connector as well as the Portlet connector are used to integrate remote objects from OpenText Social Communities. Both connector technologies are used through standard dynaments that are put into the published page automatically by the rendering process of the rating element.

How can I actually make my article rateable?

I'll demonstrate how to make your content rateable with the following video. Within this video, the following steps are shown:
- Creation of a new content class RatedArticle that can be used to create rateable articles
- Creation of a new content class RatedArticleList that shows a list of rated articles
- Creation of pages from both content classes
- Filling in some values
- Rating of content
- Showing page preview and Delivery Server preview

RatedArticle content class
The rated article content class is created with two content elements of type Rating. The first one (art_avg_rating) is just used for showing the average rating of the associated content (the page this element resides on). The second one (art_new_rating) integrates functionality for actually rating an article if not done so far. Both use a predefined layout, i.e. art_avg_rating creates an img element showing the current average rating. art_new_rating includes the rating portlet from OpenText Social Communities. The appearance of both ones is not changeable in the current state. We're thinking of different possibilities to make it changeable till the released version.
The Rating element will get an additional option for just printing out the raw value of the rating, but this would only be available for the "readonly" elements.
Furthermore, the RatedArticle class contains some additional content elements for the actual content like title, teaser and text of the article.

RatedArticleList
The RatedArticleList class should show an overview of rated articles that are references through a list. First of all, I added a list (art_list) to this class to contain the references. The list transfers the element contents from the referenced pages. Afterwards, I added all the elements with the same type and same name to this class that I liked to transfer from the RatedArticle class. In this case, art_avg_rating, art_title, art_teaser. I don't want to show the art_new_rating here, because users should read the article before rating it.

In the template of this class, a simple IORangeList is used to print out the title, average rating, the teaser and the link to the article.

Pages example
I now created a RatedArticleList page that gets connected to the main container of the index page. I connected a RatedArticle to the list afterwards. Within the page preview we see some sample values for the rating, so that an editor can get an impression on what is actually shown on the published page. With the Delivery Server preview, the editor can see a live preview and will also be able to see the current ratings.

Outlook / Feedback
As you could see from this small example, our idea for the Social Communities integration is to create dedicated content elements for each of the features (rating, commenting, reviewing) and either use the REST api of Social Communities or the provided portles to integrate the functionality. Additionally, we provide an out of the box experience by predefined layouts that can be changed by custom layouts or stylings. The dedicated content elements should behave like the well-known content elements, so that you can e.g. use the IORangeList feature.

I'd like to encourage you to provide some feedback on this:
- do we provide the means you need to socialize your websites?
- do you have additional needs?
- how would you like to get Social Communities integrated?

An additional appetizer for this kind of integration is a new developer API for creating custom content elements. Have a look at my next blog posts....

Demonstration Video


OpnetWork2011: Monitoring & Tracing .Net 4 based Web Applications with AIX 7.1

I will be presenting a case study on the OpnetWork2011 in Washington, D.C. next week.

If you like to attend my presentation, please sign up for session 1423 on Monday.

Abstract
OpenText Corporation in Oldenburg is currently migrating their ASP/ASP.Net-based product, Web Site Management Server, to Microsoft .Net Framework 4. With this migration, there is a focus on improved scalability and performance. AppInternals Xpert 7.0 was already used to monitor and trace the behavior of the old partly .Net Framework 3.5-based product mostly within productive customer environments. Within the agile development process of OpenText R&D, AppInternals Xpert 7.1 beta was introduced to strengthen the efforts of improving scalability and performance and continuously identify performance hotspots within load tests. This case study will give an overview about the development process supported by AiX 7.1 and the experience OpenText has had with monitoring and tracing their .Net 4-based web application.

Freitag, 8. Juli 2011

First OpenText Web Site Management Server 11 Technology Preview Feedback

Today, I got the first performance feedback from our technology preview partners. Some partners who tested with big projects that had caused some headaches in the past, where quite excited about the performance. While doing a publication, the cpu usage climbed up to 90 %, memory was filled and working in SmartEdit was possible with a very good performance.

Maybe some of the partners who tested this could step up the plate and give more insights on their performance measures.

Some insides about the technology preview VMware:
We delivered a VM based on Windows Server 2008 x64 with 4 GB of ram, using 2 CPUs. For sure, it is possible that partners with adequate hardware could change the settings and test with even better hardware.

Montag, 4. Juli 2011

Using PDF 1.6 With OpenText Web Site Management Asset Manager

Reading metadata from PDF 1.6 documents in the released OpenText Web Site Management Server
versions is not working at the moment, as a quite old 3rd party component (pdfinfo.exe) used by the
AssetManager is not supporting newer PDF versions.
There is a pretty easy way to come around this limitation. All you need is the freely available
iTextSharp library and this small piece of code to create a console application called PDFInfo.exe
that behaves like the old version, but can handle the newest PDF versions:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTextSharp.text.pdf;
namespace PDFInfo
{
    class PDFInfo
    {
        static void Main(string[] args)
        {
            PdfReader reader = new PdfReader(args[0]);           
            Dictionary<string,string> infos = reader.Info;
            foreach (string key in infos.Keys)
            {
                string value = infos[key];
                switch (key) {
                    // check if the date has to be transformed otherwise
                    case "CreationDate":
                    case "ModDate":
                        value = value.Replace("D:","");
                        value = value.Trim();
                        break;
                }
                Console.WriteLine("{0}: {1}",key.ToLower(),value);
            }
            Console.WriteLine("Pages: {0}",reader.NumberOfPages);           
            Console.WriteLine("Encrypted: {0}",reader.IsEncrypted() ? "yes" : "no");           
        }
    }
}


A full featured sample can be downloaded here. Please be aware that this
sample is using iTextsharp that is licensed under the Affero General Public License.

To actually use this small console program in your Web Site Management Server, build the console
app and copy the .exe file into your %RDCMS%\MediaCatalog folder. Please make a backup copy of
the old before.

Please also note that WSM is only executing the process for 5 seconds. If the process needs more
time, e.g. with large documents, the process will be killed and no metadata is read. There is no
configuration possibility to change this threshold value.

The sample is provided without any warranty. Please try it on your own risk.

Freitag, 1. Juli 2011

Using WCF to create an RQL client for Web Site Management

A few days ago, I posted about executing RQLs in version 11. I clarified that the currently shown
way of using some .NET objects instead of the old COM+ components, is just a temporary way till
the RDCMSCMSXmlServer Web Service has been implemented with the means of WCF.
I'll now show you in detail how to create a WCF based RQL client that can already be used from
CMS version 7.5 on, I guess. At least WSM 10.1 will work fine with this implementation.



All the steps can be done in around 15 minutes.
As a short outline, the steps are:
1. Create a new console application project in Visual Studio
2. Add a service reference to http://localhost/cms/webservice/RDCMSXMLServer.wsdl
3. A new XMLServerSoapPortClient is generated
4. Use the generated client to connect to WSM
5. That's it
Easy? Yepp, there's not much code you'll have to write manually for this example. As always, in
a real project, you'll have to do some additional work, e.g. creating a separate assembly containing
the client and additional convenience methods for sending certain actions. Probably making the
assembly COMVisible if it has to be called from your old legacy ASP code.

Mittwoch, 29. Juni 2011

Developing Custom RenderTags

Did you ever think of implementing your own RenderTag to ease up template development?
Management Server already provides everything you need for that task. There was only one small bug that was actually blocking the load mechanism of custom RenderTags. This was fixed for version 11 now and will soon be available in one of the next hotfixes for 10.1 SP2.

Here are the steps to develop your own RenderTag:

1. Open up Visual Studio and create a new class library project, e.g. My.CustomRenderTag
2. Add references to Reddot.CMS and Reddot.CMS.Rendering
3. Now add a new class and implement the Reddot.CMS.Rendering.IRenderTag interface, e.g. HelloWorldRenderTag:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Reddot.CMS.Rendering.Tags;
using Reddot.CMS.Rendering.Objects;
using System.Xml;
using Reddot.CMS.Rendering;

namespace My.CustomRenderTag
{
    public class HelloWorldRenderTag : IRenderTag
    {
        public HelloWorldRenderTag()
        {
        }

        public void Render(RenderStream outputStream, TagProcessor tagProcessor, XmlNode tag, ObjectLoadManager objectLoadManager, PageBuildContext context)
        {

            string text = tag.InnerText;
            if (string.IsNullOrEmpty(text))
            {
                outputStream.WriteLine("Hello World!");
            }
            else
            {
                outputStream.WriteLine("Hello {0}!", tag.InnerText);
            }          }
    }
}


4. Build the project
5. Adapt the main.config in your ASP directory:
add the following line in the <RenderTag>-section:
<RenderTags>
      <Tag name="helloworld" typename="HelloWorldRenderTag" namespace="My.CustomRenderTag" filename="<PathToAssembly>\My.CustomRenderTag.dll" />
6. Kill the RDCMSServiceProcess.exe
7. Now add your new RenderTag (<helloworld>) to your template

Dienstag, 28. Juni 2011

Delivery Server publication in Management Server 11

OpenText Web Site Management Server 11 has a completely reworked publication to OpenText Web Site Management Delivery Server. Management Server is from version 11 on using the WCF based Delivery Server .Net Remote API. This API is based on the new Delivery Server web services that have been introduced in version 4.0 and that have been further improved with version 9.0.

Does this lead to any changes in your projects? The answer is simply no. We have just been improving the way Management Server communicates with the Delivery Server without the need of changing your projects.

What is expected from this change?
The change is part of our big rework of the Management Server and is needed to get rid of the old outdated Microsoft SOAP toolkit. We also expect to have a more reliable communication and can get rid of the old web services in Delivery Server in later versions. We also are planning to introduce new features to make the publication to Delivery Server even more reliable.

Montag, 27. Juni 2011

Using RQL in OpenText Web Site Management Server 11

Manuel recently posted (RQL Development with OpenText Web Site Management Server 11) about how to adopt plugins for version 11.

From an R&D perspective, I want to give some more details. Manuels examples actually do not use WCF. Instead, Manuel shows an example on how to currently (in the version 11 Technology Preview) execute RQLs. There is no WCF magic in it. It is just showing how to access some .Net 4 based wrapper objects to execute RQLs.

For the final release of version 11, we will replace the webservice that was previously available under the following url by a WCF based implementation: http://localhost/cms/webservice/RDCMSXMLServer.wsdl
This old webservice was using the Microsoft SOAP Toolkit 3.0. This is quite outdated and was never really supported on 64bit platforms. We will not change the webservice interface described with the WSDL.

The new webservice will be build using WCF, which is a core part of the Microsoft .Net Framework. The WCF based service will still be using the SOAP protocol. Heh, you will certainly say, there is still SOAP in it. Confusing, right? SOAP is just the protocol used and the toolkit respectively the framework used before is called the Microsoft SOAP Toolkit.

Regarding the performance:
At the moment, we cannot really compare it, but we would expect that using the WCF webservice should be faster than the old way of using a COM+ object that was than using COM Interop.

I hope, this makes it a bit clearer.

Freitag, 24. Juni 2011

OpenText Web Site Management Server 11 and Microsoft SQL Server Denali

I'm currently testing Microsoft SQL Server Denali CTP1 with our Open Text Web Site Management Server 11 product. At the moment, everything is running fairly good on SQL Denali. I cannot see any bugs related to Denali so far.

Denali CTP1 itself is quite buggy when using it with SQL Server Management Studio 2008 R2. I was not able to create a new database or attach an existing database using SQL Server Management Studio. It only worked when I attached the database using sqlcmd.

I'm eagerly awaiting Denali CTP3 that should be available in mid of July.