Sep 07 2008

Adobe LiveCycle Team & Formula 1 in Spa/Francorchamps

A whole different kind of topic for this blog, but on Friday September 5th the Adobe Benelux Livecycle Team and 15 customers took a day to watch the training for the Formula 1 in Spa/Francorchamps. A couple of things I took back:

  • These cars make noise!
  • The Circuit is beautifully situated in the Belgian Alps
  • It was really exciting to watch
  • I have never seen Fries & Mayonaise for 5 Euro per/portion

One of our guests, Ed Steenhoek of Accenture, took some great pictures, and he made a selection of 40 (out of 600) available on his website. Now that’s a different quality compared to the ones on my iPhone as shown below.

Many thanks to everybody who was able to join us. Enjoy the pictures.

No responses yet

Aug 26 2008

Belgian Adobe User group brainstorm session

Published by Christoph Rooms under Adobe AIR

The Belgian Adobe user group is organizing a brainstorm session next thursday in Diegem. The idea is to take 1 step back and get an idea on what users are expecting from a user group and discover where there is room for improvement. 

So if you have an opinion, or want to be an active member of the user group, join us ! Send me an email (chrooms[at]adobe.com) and i’ll make sure you’ll get an invitation. 

No responses yet

Aug 19 2008

RIAlisation of Document Management

Disease:

You are implementing a Document Management system or you have just deployed this within your organization. A common challenge is very often to find a balance between a technically clean, flexible, scalable and future-proof solution on one hand, and to get your solution adopted by the end-users on the other.

Unfortunately the term end-users is often interpreted as “the last step in the deployment”, and very often the solution that is deployed is not adopted very well because it is too difficult or not intuitive to use. Have a look at some of the document management systems out there, and ask any “end-user” if they like the interface that is offered from that product!

Often the business where most “end-users” work, pay for these projects, and therefore should expect a solution that fits within their way of working, their processes and their knowledge-level. So why offer an interface that offers over 100 document management features where the user only wants to store a document in the archive. Result is most likely that the things they really need are hidden somewhere, and require extensive training. For a casual contributor (the 80/20 rule applies here as well…. most people in an organization only every now and then interact with the Document Management System) it is too much to do a 1 or 2 day training on how to use an application, especially when he/she needs to do this over and over again.

Prescription:

I guess the point above is clear, and there should be more focus on creating engaging experiences as well for business users that use Document Management in their daily activities. You will find a lot of examples on how web 2.0 changes everything that you see on the web. Rich Internet Applications (RIA) are more and more common for many websites. A more recent development is that RIA’s can also be deployed on your desktop for instance by using Adobe AIR.

So what does deploying a RIA web application to your desktop mean? Think about using standard web technology such as HTML, AJAX and Flash for building desktop applications that support business users in their activities. Think about intuitive, easy-to-use, and graphically oriented applications that everybody enjoys to work with. Now this can be the front-end for your Document Management System!

Adobe offers a Document Management System via LiveCycle Content Services ES. Yes, it has all the features you need…. and more. It offers a web interface, integration with MS-Office and many other ways to interact with the system as a business user. I will not go into te details for each way of interacting with the system. However, there is one specific area that I would like to highlight here.

In the development community out there you will find many interesting applications that can be used as a front-end for Content Services. There is 2 I would like to highlight in this post.

Firstly there is an initiative called Opsoro. These guys are developing an AIR application that can be used on top of LiveCycle Content Services. The application is build using AJAX techniques, and resides right on a local computer’s desktop. No bookmarks, no limitations of a web-browser… very simple and easy. Here is a screenshot on how this looks:

 

It has some interesting features such as live-search, preview, etcetera. Below a screenshot on how the preview is displayed.

According to the website of Opsoro there are other things planned to utilize the features that are offered by Adobe AIR even more, such as offline usage, drag&drop interaction with the desktop. Check out the roadmap and other things their website.

Now Opsoro is not the only initiative out there that focuses on the usability of a Document Management System by offering a RIA on the desktop. Another initiative is FlexSpaces by Integrated Semantics. Their AIR client is based on Adobe Flex and offers some very handy features for searching using Tag Clouds, category search, tasks, launching processes, offline usage, drag&drop, and many others. Check out the complete list and their screencams.

You will notice that the applications above are related to Alfresco, an open source ECM solution. Adobe LiveCycle Content Services ES is based on Alfresco, and includes integration with other enterprise features/functions of LiveCycle ES. A good post about this can be found here.

The screenshots above are real screenshots running on my local LiveCycle Content Services demo machine. If you would like to know more, please get in touch.

Tips to stay healthy:

If you are considering an implemenation of a Document Management System, do think about the success factors of that implementation. One can have the most optimal technical solution in place, but if it is hard to embed in the business processes of business users, the system will never bring the desired results. Key here is that the system is easy to use, intuitive, requires little or no training, etcetera. This is what Rich Internet Applications are about. Now it’s time to RIAlise Document Management!

One response so far

Aug 06 2008

Combining LiveCycle Content Services ES & Acrobat for shared review

Disease:

You are an Acrobat user creating documents, brochures, leaflets and other information that you want to share with other collegues or people outside your organization for approval, comment, changes, etcetera. Within Acrobat there is a feature called “Send for shared review” that enables you to do this. But what if you don’t have a central server to store it on so other people can access it?

Prescription:

One of the new features within LiveCycle ES update 1 is Content Services. This essentially offers you Enterprise Content Management features that you can include in your business processes. These business processes can be fully controlled processes that are setup within LiveCycle using Process Management. But these features are also available for more ad-hoc type of business processes where Adobe Acrobat is used.

After you have created a PDF file and want to send it to some people for review, you can use the send for shared review feature. Here is a screenshot of this option.

Now, the next step is an important step where you can point to a central location where people can find the file for reviewing. This is where you can connect Acrobat to LiveCycle ES Content Services. Content Services exposes itself in many different ways; via a browser, via MS-Office, via CIFS, FTP and also via WebDav. WebDav is the way to connect the Acrobat business process (shared review) to an Enterprise Repository.

After you have selected the option above, you will see a dialogue.

Select the internal server option, and click next to find the following screen.

Here you have 3 options to choose. To connect to Adobe LiveCycle Content Services ES choose the 3rd option, a Web Server folder. As the URL you should enter http://yourserver:port/contentspace/webdav (If you don’t have a server available, and would like to try, let me know) I configured this using my server, and see the following screen after this.

After this you will be asked for your credentials and you will see a couple of screens to ask you to send a link to the document, and also to indicate the persons that are part of this review. End result is that the document now resides in the LiveCycle Content Services repository. See the screenshot of the Web Interface of Content Services.

I will not go into the possibilities that you then have from there, but just remember that there is a full range of

Tips to stay healthy:

Just make sure that the people that are participating in the review have an account within LiveCycle ES (Typically this is done by synchronizing a corporate LDAP tree), and you should be fine.

No responses yet

Aug 04 2008

How to configure the LiveCycle PDF Generator ES print driver?

Disease:

So you have installed LiveCycle ES Update 1 that includes a new feature for PDF Generator, a print driver for windows. This allows you to select the Adobe LiveCycle ES printer from your printer list. The print job results in a PDF file that is centrally generated on a configured LiveCycle ES Server. Here is a screenshot of the “select printer” dialogue within MS-Word.

Printer Dialogue in MS-Word

Now it is clear how to initiate a PDF conversion process. But where does your file end-up?

Prescription:

There is a couple of things to take into account.

1. When installing the print driver via http://servername:port-number/pdfg-ipp/install you will be asked to provide a username. The account that is used here is an account that is known within LiveCycle ES (either synchronized with your directory, or a native account). The email-address that is known within LiveCycle ES is the one that is used to return the results to.

2. On the server-side you will need to configure a mail server that can be used for sending the results. Typically this is an smtp server that will be used. Now you will need to configure this using the LiveCycle ES Admin UI. Go to “Services” -> “Applications and Services” -> “Service Management”. Now look for a service called “provider.email_sendmail_service” and click on it. You will find the screen as shown below.

Configuring sendmail service

Just to make sure stop and start the service, and you should be fine.

Tips to stay healthy:

Just remember, when deploying this solution accross your organization, make sure that the users install the print driver with an account that points to their email address. Don’t use one address for everybody. Lastly, make sure that every account that is used, also has the proper user rights assigned to it. (Or even better, work with the groups and roles available within the User Management)

3 responses so far

Jul 21 2008

Trials for LiveCycle ES Update 1 available

Published by Waldo Smeets under LiveCycle ES

LiveCycle ES Update 1 was announced on june 16th 2008 and a good tradition at Adobe is to make the software available to end users one month later.  So from today (or was it even earlier?) you can try the software – including all the new integration features with Alfresco – by selecting one of the options listed at www.adobe.com/devnet/livecycle/trial.  You can basically choose to download the multi-gigabyte installers from the website or get a DVD shipped to you for just a few euros.

Together with this release there is also separate trial downloads available for updated releases of LiveCycle Designer ES and LiveCycle Data Services ES 2.6 (for those Flex developers that don’t dare to get their hands dirty on the rest of LiveCycle yet, hehe).

If you are new to LiveCycle I highly recommend the turn key option with the JBoss download, which is ideal for evaluation purposes. This will install the application server, database, and samples with just a few mouse clicks.

For an overview of new features in LiveCycle ES Update 1:

Installing the software is pretty straightforward, especially when you follow the steps listed in How to Get Started and choose the turn key installation. However, if you are having issues or need help evaluating specific parts of the LiveCycle Enterprise Suite, feel free to contact us for questions or even better… make an appointment for a free consult with DrLiveCycle.

One response so far

Jul 08 2008

LiveCycle Data Services and Java EE container managed security

Disease

You want to authenticate via a Flex application and still leverage Java EE container managed security.

Prescription

With LiveCycle ES Data Services you can authenticate users using the Flex application and you can pass these credentials on to the back-end where they will be verified by the container. The server-side Flex Session give you access to the Principal object. Through the use of roles you can authorize users to invoke LiveCycle ES Data Services endpoints or avoid users invoking specific LiveCycle ES Data Services assembler methods.

Following steps explain how to set this up on Tomcat 5.5.

  • Download the source of this sample from Adobe share and import the Flex project
  • Configure container managed security in Tomcat.
  • Follow the steps in $LCDSHOME/resources/security/tomcat/readme.txt (download LiveCycle ES Data Services)
  • Create a LiveCycle ES Data Services project in Eclipse (Dr. FLex & Dr. LiveCycle)
  • In your project, create a context.xml under META-INF/
 

<Context>
      <Realm className="org.apache.catalina.realm.MemoryRealm" />
      <Valve className="flex.messaging.security.TomcatValve"/>
</Context>

 
  • In your project, edit services-config.xml in WEB-INF/flex, the <security> tag should point to the following login command:
 

<security>
    <login-command class="flex.messaging.security.TomcatLoginCommand"
                               server="Tomcat">
      <per-client-authentication>false</per-client-authentication>
    </login-command>

</security>

 
  • To pass on the credentials captured in your Flex application to your back-end you can use (see main.mxml in the code sample):
 

personDS.setCredentials(username.text, password.text);

 

      personDS is a LiveCycle ES Data Services Data Management endpoint

  • The container will only allow you to access the LiveCycle ES Data Services endpoint when these credentials are valid.
  • To obtain the Principal in the LiveCycle ES Data Services assembler you execute (see PersonAssember in the code sample). For more info on assemblers, go to Dr Flex & Dr. LiveCycle or consult the LiveCycle Data Services Developer Guide.
  Principal principal = FlexContext.getUserPrincipal();  

 

Tips to stay healthy :

You can extend this further by leveraging the integration between LiveCycle ES Data Services and Java EE security by protecting resources via roles to allow only specific users to invoke Data Services endpoints.

Embedding the following in your LiveCycle ES Data Services data-management-config.xml file, you can avoid users not having the correct role to invoke this endpoint (see sample code):

 

<destination id="persons">

    <adapter ref="java-dao" />
    <security>
        <security-constraint>
            <auth-method>Custom</auth-method>
            <roles>
                <role>help</role>
            </roles>
        </security-constraint>
    </security>

    ….

One response so far

Jul 08 2008

LiveCycle ES Data Services [Data Management] and Java Enums

Disease :

You want to use LiveCycle ES Data Services on top of a Java back-end that is using Java enums.

Prescription :

LiveCycle ES Data Services 2.6 supports Java enums. When serializing from Java to ActionScript, Data Services will transform the Java enum value into an ActionScript String. When serializing from ActionScript to Java, Data Services will assign the correct enum value to the corresponding Java attribute.

Let’s see how it looks like. To get started we create a LiveCycle ES Data Services project (What is the preferred LiveCycle Data Services development environment). In the next part we will run through all the steps needed to develop a LiveCycle ES Data Services Data Manangement application.

The Java side

The Java enum looks like this

 

package myenum.test;

public enum MyEnum {
    VOLVO,
    PORSCHE,
    AUDI,
    BMW;
}

 

 

The DTO looks like this:

 

package myenum.test;

public class MyDTO {

    public int id;
    public MyEnum car;
    public String name;
}

 

 

 

LiveCycle ES Data Services Data Management automatically takes care of all DTO’s that are modified and retrieved by the Flex application (created, deleted and updated objects). When a client side "commit" operation is invoked the modifications are sent to the server. Those changes are mapped to your back-end via an assembler class. Typically this class implements four methods (fill, createItem, updateItem and deleteItem). In this example the assembler class looks like this:

 

 

package myenum.test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import flex.data.assemblers.AbstractAssembler;

public class MyAssembler extends AbstractAssembler {

    @Override
    public Collection fill(List fillParameters) {
        ArrayList<MyDTO> list = new ArrayList<MyDTO>();
        MyDTO myDTO = new MyDTO();
        myDTO.id = 1;
        myDTO.name = "Marc";
        myDTO.car = MyEnum.AUDI;
        list.add(myDTO);
        // TODO Auto-generated method stub
        return list;
    }

    @Override
    public void createItem(Object item) {
        MyDTO myDTO = (MyDTO) item;
        System.out.format("Name : %s\nCar : %s", myDTO.name, myDTO.car);
    }

    @Override
    public void deleteItem(Object previousVersion) {

        MyDTO myDTO = (MyDTO) previousVersion;
        System.out.format("Name : %s\nCar : %s", myDTO.name, myDTO.car);
    }

    @Override
    public void updateItem(Object newVersion, Object previousVersion,
            List changes) {

        MyDTO myDTO = (MyDTO) newVersion;
        System.out.format("Name : %s\nCar : %s", myDTO.name, myDTO.car);
    }
}

 

In the real world these methods will be calling your specific services to retrieve and process the information.

Before we go to the Flex client we need to configure a Data Management endpoint by configuring the data-management-config.xml file in your LiveCycle ES Data Services project (located in WEB-INF/flex)

 

 

<destination id="myds">

    <adapter ref="java-dao" />
    <channels>
       <channel ref="my-rtmp"/>
    </channels>

    <properties>

        <auto-sync-enabled>true</auto-sync-enabled>

        <use-transactions>false</use-transactions>

        <source>myenum.test.MyAssembler</source>
        <scope>application</scope>

        <metadata>
            <identity property="id" />
        </metadata>

        <network>
            <session-timeout>20</session-timeout>
            <paging enabled="false" pageSize="10" />
            <throttle-inbound policy="ERROR" max-frequency="500" />
            <throttle-outbound policy="REPLACE" max-frequency="500" />
        </network>

        <server/>

    </properties>

</destination>

 

 

The Flex side

The ActionScript DTO (it maps directly to the Java class):

 

package vo
{
    [Managed]
    [RemoteClass(alias="myenum.test.MyDTO")]   
    public class MyDTO
    {
        public function MyDTO()
        {
        }
        public var id:int;
        public var name:String;
        public var car:String;

    }
}

 

The Flex application:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

    <mx:Script>
        <![CDATA[
            import vo.MyDTO;

            private function createMyDTO():void {
                var myDTO:MyDTO = new MyDTO();
                myDTO.id = 0;
                myDTO.name = "Marc";
                myDTO.car = "BMW";
                myCol.addItem(myDTO);
            }

          ]]>
    </mx:Script>

 

    <mx:DataService id="myDS" destination="myds" autoCommit="false"/>
    <mx:ArrayCollection id="myCol"/>

    <mx:Panel x="116" y="49" width="488" height="204" layout="absolute">
        <mx:DataGrid id="myDG" x="0" y="0" width="100%" height="100%"
                     dataProvider="{myCol}" editable="true">
        </mx:DataGrid>
        <mx:ControlBar>
            <mx:Button label="Query" click="myDS.fill(myCol)"/>
            <mx:Button label="Create" click="createMyDTO()"/>
            <mx:Button label="Save"
                  enabled="{myDS.commitRequired}" click="myDS.commit()"/>
            <mx:Button label="Undo"
                  enabled="{myDS.commitRequired}" click="myDS.revertChanges()"/>
        </mx:ControlBar>
    </mx:Panel>
</mx:Application>

 

 

On the Java side "car" is a enum while in ActionScript it is a String. Assigning "BMW" to a newly created myVO results serverside in a new myVO with the car enum equal to BMW.

Notice that there are no explicit calls made to the server for creating, deleting or updating the DTO’s. The only interaction with the server happens through the fill and the save operation. LiveCycle ES Data Services Data Management takes care of the hard work.

image

You can download the sources for this sample as a LiveCycle ES Data Services project archive from Adobe Share, next import this into your Eclipse + Flex plugin environment.

Tip to stay healthy:

Check out Christophe Coenraets‘ website to find more examples about LiveCycle ES Data Services. You can download LiveCycle ES Data Services 2.6 (beta) from Adobe Labs.

2 responses so far

Jun 25 2008

How to integrate Flex with an online payment system like Ogone ?

Disease :
What would be the best way to integrate an online payment system like Ogone into my Flex application ?
Prescription :
Depending on the payment system, there are a number of different options.
Option 1 : Use the payment provider web application that handles payment
This is probably the best way to integrate as the payment provider will handle the full payment and has to take care of security. Most of the payment providers will provide you with an html application that you can integrate into your own application, and which is running on a secure environment.You would forward your user to this HTML page. When the payment transaction is done,
the payment service will return your customer to your application and provide
it with information on the transaction. So your Flex application will not even see any credit card details !
So how can you integrate this secure HTML payment application into your Flex application ? The best way is to show the application in an iFrame on top of your Flex application. The Flex application will be able to communicate with the iFrame through FABridge. FABridge is an Adobe javascript library that allows flash player to interact with the HTML container and the other way around. Alistair Rutherford wrote a post on how to use an iFrame on top of your Flex application.
The solution Ogone is providing is Ogone e-commerce. I have build an example integrating Flex with Ogone e-commerce. You can find the source code here.
Here in a few steps what you need to take care of :
1. PaymentEvent.as : Custom event that is used to pass the payment data to the HTML page running in the iFrame.
2. iFrame.as : iFrame component build by Alistair RutherFord
3. Add the FABridge javascript library to ‘html-template/index.template.html’ and add the .js itself.
4. ogone_html.html : html file that will runn in iFrame. Main part is an HTML form that we’ll submit to the Ogone server. Notice how I added an event listener for the Payment event, and i fill in the form and submit it. Also check the form to see what is configurable on the payment side.
5. ogone_bevestiging : html file that will be called by Ogone when transaction is over. Ogone will call this html file with an attribute indicating the status of the transaction. When this page is loaded you can see in the load() function I’m calling the transactionOver() function in my Flex application (Ogone.mxml). TransactionOver function will take as an argument the transaction status and show it in my Flex application.
You can find the source files on here
And have a look at the application here. (Use this test VISA number : 4111 1111 1111 1111)
Option 2 : Use the payment provider API’s.
In this case you’ll build the UI that will handle payment details yourself, which means you’ll be responsable for providing the necesary security measures. After collectint the credit card details you’ll be using the API’s to handle the payment.
So depending on the API technology you’ll have to use a specific solution :
Tips to stay healthy :
Taking care of payments is a delicate thing. Check out legal and security issues. Try to go for solution 1, which will put those responsibilities on the payment provider.

17 responses so far

Jun 25 2008

Anonymous Web UI for PDF Generator

Disease:

If you have upgraded to LiveCycle ES from a previous version of PDF Generator or even Adobe Elements Server, you may have noticed that the Web UI for generating PDF files is only accessible for those that have a login to the server, and for those that have the proper rights to use the PDF Generator services. In the past there was a URL where everybody could go to server-based PDF Generation.

Prescription:

Of course you could start to develop your own web-page to offer this service to anybody within your company, but actually there is a documented solution for this. In the LiveCycle ES LiveDocs on our website, there is a topic called Quick Start: Converting a Microsoft Word document to a PDF document using LiveCycle Remoting“. This specific sample uses LiveCycle Remoting to call the standard PDF Conversion process that is part of LC ES. Click here to access the page that contains the code needed.

Tips to stay healthy:

If you take the code described above, and open it using Adobe Flex, you can create a SWF file there that you can post on a web server. The result looks like this:

It will take you 30 minutes to do the whole process, and you will have a working process. Make sure you link to the swc files in the LiveCycle ES SDK (located in C:\Adobe\LiveCycle8\LiveCycle_ES_SDK\misc\DataServices\Client-Libraries) when compiling the application.

No responses yet

« Prev - Next »