<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dr Flex &#38; Dr LiveCycle &#187; Adobe Flex</title>
	<atom:link href="http://www.drflex.eu/category/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.drflex.eu</link>
	<description>Latest news from the cabinet</description>
	<lastBuildDate>Fri, 12 Mar 2010 22:27:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>LiveCycle ES2 Guides &#8211; Adding custom validation classes to your model</title>
		<link>http://www.drflex.eu/2010/03/livecycle-es2-guides-adding-custom-validation-classes-to-your-model/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=livecycle-es2-guides-adding-custom-validation-classes-to-your-model</link>
		<comments>http://www.drflex.eu/2010/03/livecycle-es2-guides-adding-custom-validation-classes-to-your-model/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 22:27:51 +0000</pubDate>
		<dc:creator>Waldo Smeets</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[LiveCycle Forms ES]]></category>
		<category><![CDATA[LiveCycle Workbench]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/?p=116</guid>
		<description><![CDATA[The Modeler in LiveCycle ES2 ships with several built-in validation classes, which you can apply to the models properties using the Styles definition. Obviously these standard classes don&#8217;t cover all use cases, especially not validation behavior that is specific to a non-US region for example. One of the cool things about Fiber models is that [...]]]></description>
			<content:encoded><![CDATA[<p>The Modeler in LiveCycle ES2 ships with several built-in validation classes, which you can apply to the models properties using the Styles definition. Obviously these standard classes don&#8217;t cover all use cases, especially not validation behavior that is specific to a non-US region for example. One of the cool things about Fiber models is that you can extend them using custom ActionScript code, so that you can use your custom validation classes in your projects (I plan to write another article on working with custom methods in your model by overwriting the generated value objects).</p>
<p>So, you can add and apply your own validation classes to the model. You just need to refer to your custom class in the Style validation annotation of the property. First, copy the validation class itself into the correct folder of your Workbench project. That&#8217;s also the trickiest part within the LiveCycle Modeler (compared to doing this for the Flash Builder modeler). The FB modeler generates the code into your Flex project folder and you can easily find it, but Workbench doesn&#8217;t generate the code in the directory where all your other projects are located (on Vista/Win7 that is C:\Users\username\Workbench ES2\). I am not exactly sure why, but I think because the model generated classes are mostly temp files that don&#8217;t have to be checked into the server (downside is that you need to backup modifications of custom classes yourself).</p>
<p>That &#8216;temp&#8217; folder that stores all model generated classes is much deeper on your disk drive. On my system it&#8217;s C:\Users\username\AppData\Roaming\Adobe\LiveCycle\ES2\Guides\generated\. Here you find subfolders structured per LiveCycle application. For your project, find the folder where the generated myModel.as and myModel.swf files are located. Consider this folder the &#8216;root&#8217; that is used by the compiler, so this is where yoy copy your custom validator classes to.</p>
<p>The last step is to define the style validation annotations within the property. Basically you&#8217;d define your property like this:</p>
<blockquote><p>&lt;property  type=&#8221;string&#8221;&gt;<br />
&lt;style&gt;<br />
&lt;validation&gt;<br />
&lt;annotation  name=&#8221;ActionScriptValidator&#8221;&gt;<br />
&lt;item  name=&#8221;ValidatorClass&#8221;&gt;mx.validators.SocialSecurityValidator&lt;/item&gt;<br />
&lt;item  name=&#8221;allowedFormatChars&#8221;&gt;&#8221;-()&#8221;&lt;/item&gt;<br />
&lt;/annotation&gt;<br />
&lt;/validation&gt;<br />
&lt;/style&gt;<br />
&lt;/property&gt;</p></blockquote>
<p>The ValidatorClass item defines the class path, and in this case the &#8216;allowedFormatChars&#8217; is one of the parameters that is used by that class. Now make sure that Workbench recompiles your class (just move an entity a few pixels, save and the recompile will hapen). Now your custom validator class is compiled into the model itself and you are ready to use the related properties within your guide!</p>
<p>ps: Workbench will inform you on compilation errors if you made errors in your class.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2010/03/livecycle-es2-guides-adding-custom-validation-classes-to-your-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a controlled Twitter solution using Adobe LiveCycle ES</title>
		<link>http://www.drflex.eu/2010/01/building-a-controlled-twitter-solution-using-adobe-livecycle-es-part1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-a-controlled-twitter-solution-using-adobe-livecycle-es-part1</link>
		<comments>http://www.drflex.eu/2010/01/building-a-controlled-twitter-solution-using-adobe-livecycle-es-part1/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 15:47:28 +0000</pubDate>
		<dc:creator>Marcel Van Espen</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[LiveCycle ES]]></category>
		<category><![CDATA[LiveCycle ES Content Services]]></category>
		<category><![CDATA[LiveCycle Output ES]]></category>
		<category><![CDATA[LiveCycle Process Management ES]]></category>
		<category><![CDATA[LiveCycle Workbench]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/?p=103</guid>
		<description><![CDATA[This is part 1 of a video that demonstrates how you can use LiveCycle ES to build a process and an AIR application to publish tweets to a corporate Twitter account where you have control on what's published or not. In addition, in part 2 you will see how to archive all tweets in a PDF/A format within LiveCycle Content Services.]]></description>
			<content:encoded><![CDATA[<p>Look at these videos that demonstrate how you can use LiveCycle ES to build a process and an AIR application to publish tweets to a corporate Twitter account where you have control on what&#8217;s published or not. Part 1 focuses on building the client with Flash Builder 4 with the LC Service Discovery plugin. In part 2 you will see how to archive all tweets in a PDF/A format within LiveCycle Content Services.</p>
<p>Part1: <a href="http://www.vimeo.com/8886180">http://www.vimeo.com/8886180</a></p>
<p>Part2: <a href="http://www.vimeo.com/8886413">http://www.vimeo.com/8886413</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2010/01/building-a-controlled-twitter-solution-using-adobe-livecycle-es-part1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First FlexCamp for the Netherlands coming up !</title>
		<link>http://www.drflex.eu/2008/10/first-flexcamp-for-the-netherlands-coming-up/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=first-flexcamp-for-the-netherlands-coming-up</link>
		<comments>http://www.drflex.eu/2008/10/first-flexcamp-for-the-netherlands-coming-up/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 06:59:26 +0000</pubDate>
		<dc:creator>Christoph Rooms</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flex]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/2008/10/first-flexcamp-for-the-netherlands-coming-up/</guid>
		<description><![CDATA[Flexcamp is a free community event where you can share knowledge with other Flex developers. There will be lots of sessions : the early sessions will be for starters, and later on it will become more and more advanced. The idea is that you can jump in whenever you feel like &#8230;  There will be [...]]]></description>
			<content:encoded><![CDATA[<p>Flexcamp is a free community event where you can share knowledge with other Flex developers. There will be lots of sessions : the early sessions will be for starters, and later on it will become more and more advanced. The idea is that you can jump in whenever you feel like &#8230;  There will be also a room for &#8220;<a href="http://en.wikipedia.org/wiki/Unconference" target="_blank">unconference</a>&#8221; style sessions,  these sessions allow you to discuss together with a number of community members on a specific topic of your choice. Get more info on <a href="http://www.flexcamp.nl" target="_blank">http://www.flexcamp.nl</a>. Also James Ward and Christophe Coenraets will also be around. Flexcamp is organized by the <a href="http://www.flugr.nl" target="_blank">Dutch Flex User Group</a>. Get registered today &#8230; seats are limited !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2008/10/first-flexcamp-for-the-netherlands-coming-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LiveCycle Data Services 2.6 Capacity Planning Guide Now Available</title>
		<link>http://www.drflex.eu/2008/10/lcds-capacity-planning-guide/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lcds-capacity-planning-guide</link>
		<comments>http://www.drflex.eu/2008/10/lcds-capacity-planning-guide/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 07:18:38 +0000</pubDate>
		<dc:creator>Waldo Smeets</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Dr Flex Question]]></category>
		<category><![CDATA[Dr LiveCycle Question]]></category>
		<category><![CDATA[LiveCycle Data Services ES]]></category>
		<category><![CDATA[amf]]></category>
		<category><![CDATA[blazeds]]></category>
		<category><![CDATA[capacity planning]]></category>
		<category><![CDATA[lcds]]></category>
		<category><![CDATA[livecycle data services]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[remoting]]></category>
		<category><![CDATA[rtmp]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/?p=92</guid>
		<description><![CDATA[Finally the Capacity Planning Guide for LiveCycle Data Services 2.6 has been published on the Adobe site. A document like this was asked for a few times during a DrLiveCycle consult, so it seems very welcomed by Flex developers leveraging Adobe LCDS. As Damon Cooper, Director of Engineering, wrote on his website: With LiveCycle Data [...]]]></description>
			<content:encoded><![CDATA[<p>Finally the <a href="http://www.adobe.com/go/lcds26_cap_planning_guide" target="_blank">Capacity Planning Guide for LiveCycle Data Services 2.6</a> has been published on the Adobe site. A document like this was asked for a few times <a href="http://www.drflex.eu/2008/09/load-test-flex-and-livecycle-data-services-enabled-applications/">during a DrLiveCycle consult</a>, so it seems very welcomed by Flex developers leveraging Adobe LCDS.</p>
<p>As Damon Cooper, Director of Engineering, wrote on his website:</p>
<blockquote><p>With LiveCycle Data Services 2.6, you can create Adobe Flex applications that can deliver thousands of messages per second to thousands of end users simultaneously:</p>
<div><img src="http://www.dcooper.org/gallery/LCDS_2.6_Users_475.jpg" alt="" /></div>
<p>This document presents the results of software benchmark tests performed by Adobe engineers on my LiveCycle Data Services team and show how LiveCycle Data Services 2.6 can scale linearly and perform under load using various messaging scenarios that represent real-world situations. It provides a starting point for those who need to plan a hardware and software infrastructure that scales in a linear fashion to meet peak period demand.</p></blockquote>
<p>You can download the  <a href="http://www.adobe.com/go/lcds26_cap_planning_guide" target="_blank">Capacity Planning Guide for LiveCycle Data Services 2.6</a> from <a href="http://www.adobe.com/go/lcds26_cap_planning_guide">www.adobe.com/go/lcds26_cap_planning_guide</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2008/10/lcds-capacity-planning-guide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Load test Flex and LiveCycle Data Services enabled applications</title>
		<link>http://www.drflex.eu/2008/09/load-test-flex-and-livecycle-data-services-enabled-applications/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=load-test-flex-and-livecycle-data-services-enabled-applications</link>
		<comments>http://www.drflex.eu/2008/09/load-test-flex-and-livecycle-data-services-enabled-applications/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 07:00:01 +0000</pubDate>
		<dc:creator>Waldo Smeets</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Dr Flex Question]]></category>
		<category><![CDATA[Dr LiveCycle Question]]></category>
		<category><![CDATA[LiveCycle Data Services ES]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amf]]></category>
		<category><![CDATA[capacity planning]]></category>
		<category><![CDATA[data services]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[stress testing]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/?p=85</guid>
		<description><![CDATA[Disease: You have built an amazing cool and data intense Rich Internet Application with Adobe Flex and expect many users to work with your application. Suddenly you get concerned; how will the server behave when hundreds or even thousands of users visit your site? Prescription: Some more background on this problem first; You probably know [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Disease:</strong><br />
You have built an amazing cool and data intense Rich Internet Application with Adobe Flex and expect many users to work with your application. Suddenly you get concerned; how will the server behave when hundreds or even thousands of users visit your site?</p>
<p><strong>Prescription:</strong><br />
Some more background on this problem first; You probably know that a server in production will behave differently when interacting with a RIA than compared to serving traditional HTML apps that you have been building before.  This is mainly because UIs are not generated on the server any more. Though on the other side, there is probably increased data exchange between the client and server and most of all&#8230;. ideally you use the <a href="http://osflash.org/documentation/amf" target="_blank">ActionScript Message Format (AMF)</a> and Data Management cause it is easier to develop or <a href="http://www.jamesward.com/census" target="_blank">faster on the client</a>.  But how does it impact the server, can it handle the load and do traditional load testing tools still work?</p>
<p style="center;"><a href="http://www.drflex.eu/wp-content/uploads/2008/09/stresstestadmin.jpg" target="_blank" rel="lightbox[85]"><img class="aligncenter" src="http://www.drflex.eu/wp-content/uploads/2008/09/stresstestadmin-300x194.jpg" alt="LiveCycle Data Services Stress Testing Framework admin UI screenshot" width="300" height="194" /></a></p>
<p>Adobe currently hosts the <a href="http://labs.adobe.com/wiki/index.php/Data_Services_Stress_Testing_Framework" target="_blank">LiveCycle Data Services Stress Testing Framework</a> on <a href="http://labs.adobe.com/wiki/index.php/Data_Services_Stress_Testing_Framework" target="_blank">Adobe Labs</a> which addresses lots of these questions. The framework helps developers that use LiveCycle Data Services ES 2.6 to load test the server-side implementation of their LCDS applications. The page is stuffed with information on how to use the Framework so definitely spend some time going through all the details. The Data Services Stress Testing Framework is currently in beta form, but available for testing and evaluation. You can download and test the framework and we obviously hope you will provide us your feedback through the <a href="http://www.drflex.eu//labs.adobe.com/wiki/index.php/Data_Services_Stress_Testing_Framework" target="_blank">Adobe Labs page</a>.</p>
<p><strong>Tips to stay healthy:</strong><br />
The stress / load testing problem itself has been around for long, and many software vendors have created solutions to help web developers test their servers for large rollouts. However, most of these solutions are still based on the traditional HTML web metaphor and do not work well with AMF. Also, the Data Services Stress Testing Framework currently does not support BlazeDS or other AMF server implementations. Adobe is currently working with a number of testing tool vendors to implement all of the data transport protocols available in Flash. It seems that <a href="http://www.borland.com/us/products/silk/silkperformer/index.html" target="_blank">Borland&#8217;s SilkPerformer</a> is one of the first to have AMF3 support. I have not worked with it myself and would love your feedback. Obviously if you know of other tools that are useful for load testing your Flex applications, feel free to leave a comment!</p>
<p>ps: I heard internally that we are working on a new Capacity Planning Guide for LiveCycle Data Services ES 2.6 whitepaper<span style="line-through;">, <span style="line-through;">but it has not yet been finalized. I assume it will be posted in the coming weeks on the <a href="http://www.adobe.com/devnet/livecycle/" target="_blank">LiveCycle Development Center</a> so stay tuned.</span></span></p>
<p><strong>UPDATE: You can download the  <a href="http://www.adobe.com/go/lcds26_cap_planning_guide" target="_blank">Capacity Planning Guide for LiveCycle Data Services 2.6</a> from <a href="http://www.adobe.com/go/lcds26_cap_planning_guide">www.adobe.com/go/lcds26_cap_planning_guide</a>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2008/09/load-test-flex-and-livecycle-data-services-enabled-applications/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RIAlisation of Document Management</title>
		<link>http://www.drflex.eu/2008/08/rialisation-of-document-management/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rialisation-of-document-management</link>
		<comments>http://www.drflex.eu/2008/08/rialisation-of-document-management/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 10:54:21 +0000</pubDate>
		<dc:creator>Marcel Van Espen</dc:creator>
				<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[LiveCycle ES]]></category>
		<category><![CDATA[LiveCycle ES Content Services]]></category>
		<category><![CDATA[Document Management]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/?p=70</guid>
		<description><![CDATA[Power to the end-users. A new wave of document management solutions has arrived to bring you all the features you could possibly want, in addition to usability, an aspect that is often forgotten in many products and implementations.]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot1.jpg" rel="lightbox[70]"></a><a href="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot1.jpg" rel="lightbox[70]"></a><a href="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot2.jpg" rel="lightbox[70]"></a>Disease:</strong></p>
<p>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.</p>
<p>Unfortunately the term end-users is often interpreted as &#8220;the last step in the deployment&#8221;, 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 &#8220;end-user&#8221; if they like the interface that is offered from that product!</p>
<p>Often the business where most &#8220;end-users&#8221; 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&#8230;. 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.</p>
<p><strong>Prescription:</strong></p>
<p>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&#8217;s can also be deployed on your desktop for instance by using Adobe AIR.</p>
<p>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!</p>
<p>Adobe offers a Document Management System via LiveCycle Content Services ES. Yes, it has all the features you need&#8230;. 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.</p>
<p>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.</p>
<p>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&#8217;s desktop. No bookmarks, no limitations of a web-browser&#8230; very simple and easy. Here is a screenshot on how this looks:</p>
<p> <a href="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot1.jpg" rel="lightbox[70]"></a><a href="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot1.jpg" rel="lightbox[70]"><img class="alignnone size-full wp-image-71" src="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot1.jpg" alt="" width="499" height="309" /></a></p>
<p>It has some interesting features such as live-search, preview, etcetera. Below a screenshot on how the preview is displayed.</p>
<p><a href="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot1.jpg" rel="lightbox[70]"></a><a href="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot1.jpg" rel="lightbox[70]"></a><a href="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot2.jpg" rel="lightbox[70]"><img class="alignnone size-full wp-image-72" src="http://www.drflex.eu/wp-content/uploads/2008/08/screenshot2.jpg" alt="" width="499" height="309" /></a></p>
<p>According to the website of <a title="Opsoro" href="http://www.opsoro.org/" target="_blank">Opsoro</a> there are other things planned to utilize the features that are offered by Adobe AIR even more, such as offline usage, drag&amp;drop interaction with the desktop. Check out the <a title="Opsoro website" href="http://www.opsoro.org/roadmap" target="_blank">roadmap and other things their website</a>.</p>
<p>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 <a title="FlexSpaces" href="http://integratedsemantics.org/" target="_blank">Integrated Semantics</a>. 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&amp;drop, and many others. Check out the <a title="FlexSpaces" href="http://www.integratedsemantics.com/products.html" target="_blank">complete list and their screencams</a>.</p>
<p>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 <a title="Content Services &amp; Alfresco" href="http://www.adobeforums.com/webx/.59b5e850" target="_blank">here</a>.</p>
<p>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.</p>
<p><strong>Tips to stay healthy:</strong></p>
<p>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&#8217;s time to RIAlise Document Management!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2008/08/rialisation-of-document-management/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LiveCycle Data Services and Java EE container managed security</title>
		<link>http://www.drflex.eu/2008/07/livecycle-data-services-and-java-ee-container-managed-security/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=livecycle-data-services-and-java-ee-container-managed-security</link>
		<comments>http://www.drflex.eu/2008/07/livecycle-data-services-and-java-ee-container-managed-security/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 14:14:19 +0000</pubDate>
		<dc:creator>Marc Meewis</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Dr Flex Question]]></category>
		<category><![CDATA[LiveCycle Data Services ES]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/2008/07/livecycle-data-services-and-java-ee-container-managed-security/</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Disease</strong></p>
<p>You want to authenticate via a <a href="http://flex.org/" target="_blank">Flex</a> application and still leverage Java EE container managed security. </p>
<p><strong>Prescription</strong></p>
<p>With <a href="http://www.adobe.com/products/livecycle/dataservices/" target="_blank">LiveCycle ES Data Services</a> 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. </p>
<p>Following steps explain how to set this up on <a href="http://tomcat.apache.org/download-55.cgi" target="_blank">Tomcat 5.5</a>.</p>
<ul>
<li>Download the source of this sample from <a href="https://share.acrobat.com/adc/document.do?docid=fc90c0f5-8f18-4d0a-9f7e-1f4ce9e55dfb" target="_blank">Adobe share</a> and import the Flex project</li>
<li><a href="http://tomcat.apache.org/tomcat-5.5-doc/realm-howto.html" target="_blank">Configure</a> container managed security in Tomcat.</li>
<li>Follow the steps in $LCDSHOME/resources/security/tomcat/readme.txt (<a href="http://www.adobe.com/products/livecycle/dataservices/" target="_blank">download</a> LiveCycle ES Data Services)</li>
<li>Create a LiveCycle ES Data Services project in Eclipse (<a href="http://www.drflex.eu/2008/06/what-is-the-preferred-livecycle-data-services-development-environment/" target="_blank">Dr. FLex &amp; Dr. LiveCycle</a>)</li>
<li>In your project, create a context.xml under META-INF/</li>
</ul>
<table cellspacing="0" cellpadding="2" width="619" border="0">
<tbody>
<tr>
<td valign="top" width="43">&#160;</td>
<td valign="top" width="529">
<p><em>&lt;Context&gt;             <br />&#160;&#160;&#160;&#160;&#160; &lt;Realm className=&quot;org.apache.catalina.realm.MemoryRealm&quot; /&gt;              <br />&#160;&#160;&#160;&#160;&#160; &lt;Valve className=&quot;flex.messaging.security.TomcatValve&quot;/&gt;              <br />&lt;/Context&gt;</em></p>
</td>
<td valign="top" width="45">&#160;</td>
</tr>
</tbody>
</table>
<ul>
<li>In your project, edit services-config.xml in WEB-INF/flex, the &lt;security&gt; tag should point to the following login command:</li>
</ul>
<table cellspacing="0" cellpadding="2" width="618" border="0">
<tbody>
<tr>
<td valign="top" width="44">&#160;</td>
<td valign="top" width="527">
<p><em>&lt;security&gt;             <br />&#160;&#160;&#160; &lt;login-command class=&quot;flex.messaging.security.TomcatLoginCommand&quot;               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; server=&quot;Tomcat&quot;&gt;              <br />&#160;&#160;&#160;&#160;&#160; &lt;per-client-authentication&gt;false&lt;/per-client-authentication&gt;              <br />&#160;&#160;&#160; &lt;/login-command&gt; </em></p>
<p><em>&lt;/security&gt;</em></p>
</td>
<td valign="top" width="45">&#160;</td>
</tr>
</tbody>
</table>
<ul>
<li>To pass on the credentials captured in your Flex application to your back-end you can use (see main.mxml in the code sample):</li>
</ul>
<table cellspacing="0" cellpadding="2" width="618" border="0">
<tbody>
<tr>
<td valign="top" width="42">&#160;</td>
<td valign="top" width="495">
<p><em>personDS.setCredentials(username.text, password.text);</em> </p>
</td>
<td valign="top" width="79">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;&#160;&#160;&#160;&#160; personDS is a LiveCycle ES Data Services Data Management endpoint</p>
<ul>
<li>The container will only allow you to access the LiveCycle ES Data Services endpoint when these credentials are valid.</li>
<li>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 <a href="http://www.drflex.eu/2008/07/livecycle-es-data-services-data-management-and-java-enums/" target="_blank">Dr Flex &amp; Dr. LiveCycle</a> or consult the <a href="http://livedocs.adobe.com/livecycle/es/sdkHelp/programmer/lcds/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=Part1_developer_1.html" target="_blank">LiveCycle Data Services Developer Guide</a>.</li>
</ul>
<table cellspacing="0" cellpadding="2" width="616" border="0">
<tbody>
<tr>
<td valign="top" width="39">&#160;</td>
<td valign="top" width="523"><em>Principal principal = FlexContext.getUserPrincipal();</em></td>
<td valign="top" width="52">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p><b>Tips to stay healthy :</b></p>
<p>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.</p>
<p>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):</p>
<table cellspacing="0" cellpadding="2" width="612" border="0">
<tbody>
<tr>
<td valign="top" width="48">&#160;</td>
<td valign="top" width="534">
<p><em>&lt;destination id=&quot;persons&quot;&gt; </em></p>
<p><em>&#160;&#160;&#160; &lt;adapter ref=&quot;java-dao&quot; /&gt;             <br />&#160;&#160;&#160; &lt;security&gt;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;security-constraint&gt;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;auth-method&gt;Custom&lt;/auth-method&gt;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;roles&gt;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;role&gt;help&lt;/role&gt;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/roles&gt;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/security-constraint&gt;              <br />&#160;&#160;&#160; &lt;/security&gt;</em></p>
<p><em>&#160;&#160;&#160; &#8230;.</em></p>
</td>
<td valign="top" width="28"><em></em></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2008/07/livecycle-data-services-and-java-ee-container-managed-security/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LiveCycle ES Data Services [Data Management] and Java Enums</title>
		<link>http://www.drflex.eu/2008/07/livecycle-es-data-services-data-management-and-java-enums/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=livecycle-es-data-services-data-management-and-java-enums</link>
		<comments>http://www.drflex.eu/2008/07/livecycle-es-data-services-data-management-and-java-enums/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 12:25:20 +0000</pubDate>
		<dc:creator>Marc Meewis</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Dr Flex Question]]></category>
		<category><![CDATA[LiveCycle Data Services ES]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/?p=49</guid>
		<description><![CDATA[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, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Disease : </strong></p>
<p>You want to use <a href="http://www.adobe.com/products/livecycle/dataservices/" target="_blank">LiveCycle ES Data Services</a> on top of a Java back-end that is using Java <a href="http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html" target="_blank">enums</a>.</p>
<p><strong>Prescription :</strong></p>
<p>LiveCycle ES Data Services <a href="http://labs.adobe.com/technologies/livecycle_dataservices2_6/" target="_blank">2.6</a> supports Java enums. When serializing from Java to <a href="http://en.wikipedia.org/wiki/ActionScript" target="_blank">ActionScript</a>, 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.</p>
<p>Let&#8217;s see how it looks like. To get started we create a LiveCycle ES Data Services project (<a href="http://www.drflex.eu/2008/06/what-is-the-preferred-livecycle-data-services-development-environment/" target="_blank">What is the preferred LiveCycle Data Services development environment</a>). In the next part we will run through all the steps needed to develop a LiveCycle ES Data Services Data Manangement application.</p>
<p><u>The Java side</u></p>
<p>The Java enum looks like this</p>
<table cellspacing="0" cellpadding="2" width="400" border="0">
<tbody>
<tr>
<td valign="top" width="73">&#160;</td>
<td valign="top" width="244">
<p><em>package myenum.test; </em></p>
<p><em>public enum MyEnum {              <br />&#160;&#160;&#160; VOLVO,               <br />&#160;&#160;&#160; PORSCHE,               <br />&#160;&#160;&#160; AUDI,               <br />&#160;&#160;&#160; BMW;               <br />}</em></p>
</td>
<td valign="top" width="81">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>The DTO looks like this:</p>
<table cellspacing="0" cellpadding="2" width="400" border="0">
<tbody>
<tr>
<td valign="top" width="73">&#160;</td>
<td valign="top" width="192">
<p><em>package myenum.test; </em></p>
<p><em>public class MyDTO { </em></p>
<p><em>&#160;&#160;&#160; public int id;              <br />&#160;&#160;&#160; public <font color="#8080ff"><strong>MyEnum</strong></font> car;               <br />&#160;&#160;&#160; public String name;               <br />}</em></p>
</td>
<td valign="top" width="133">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>&#160;</p>
<p>LiveCycle ES Data Services Data Management automatically takes care of all DTO&#8217;s that are modified and retrieved by the Flex application (created, deleted and updated objects). When a client side &quot;commit&quot; 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:</p>
<p>&#160;</p>
<table cellspacing="0" cellpadding="2" width="587" border="0">
<tbody>
<tr>
<td valign="top" width="69">&#160;</td>
<td valign="top" width="485">
<p><em>package myenum.test; </em></p>
<p><em>import java.util.ArrayList;              <br />import java.util.Collection;               <br />import java.util.List; </em></p>
<p><em>import flex.data.assemblers.AbstractAssembler; </em></p>
<p><em>public class MyAssembler extends AbstractAssembler { </em></p>
<p><em>&#160;&#160;&#160; @Override              <br />&#160;&#160;&#160; public Collection fill(List fillParameters) {               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; ArrayList&lt;MyDTO&gt; list = new ArrayList&lt;MyDTO&gt;();               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; MyDTO myDTO = new MyDTO();               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; myDTO.id = 1;               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; myDTO.name = &quot;Marc&quot;;               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; myDTO.car = <strong><font color="#8080ff">MyEnum.AUDI</font></strong>;               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; list.add(myDTO);               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // TODO Auto-generated method stub               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return list;               <br />&#160;&#160;&#160; } </em></p>
<p><em>&#160;&#160;&#160; @Override              <br />&#160;&#160;&#160; public void createItem(Object item) {               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; MyDTO myDTO = (MyDTO) item;               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.format(&quot;Name : %s\nCar : %s&quot;, myDTO.name, <strong><font color="#8080ff">myDTO.car</font></strong>);              <br />&#160;&#160;&#160; } </em></p>
<p><em>&#160;&#160;&#160; @Override              <br />&#160;&#160;&#160; public void deleteItem(Object previousVersion) { </em></p>
<p><em>&#160;&#160;&#160;&#160;&#160;&#160;&#160; MyDTO myDTO = (MyDTO) previousVersion;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.format(&quot;Name : %s\nCar : %s&quot;, myDTO.name, <font color="#8080ff"><strong>myDTO.car</strong></font>);              <br />&#160;&#160;&#160; } </em></p>
<p><em>&#160;&#160;&#160; @Override              <br />&#160;&#160;&#160; public void updateItem(Object newVersion, Object previousVersion,               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; List changes) { </em></p>
<p><em>&#160;&#160;&#160;&#160;&#160;&#160;&#160; MyDTO myDTO = (MyDTO) newVersion;              <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.format(&quot;Name : %s\nCar : %s&quot;, myDTO.name, <strong><font color="#8080ff">myDTO.car</font></strong>);              <br />&#160;&#160;&#160; }               <br />}</em></p>
</td>
<td valign="top" width="31"><em></em></td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>In the real world these methods will be calling your specific services to retrieve and process the information.</p>
<p>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)</p>
<p>&#160;</p>
<table cellspacing="0" cellpadding="2" width="594" border="0">
<tbody>
<tr>
<td valign="top" width="69">&#160;</td>
<td valign="top" width="486">
<p>&lt;destination id=&quot;<strong><font color="#8080ff">myds</font></strong>&quot;&gt; </p>
<p>&#160;&#160;&#160; &lt;adapter ref=&quot;java-dao&quot; /&gt;            <br />&#160;&#160;&#160; &lt;channels&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160; &lt;channel ref=&quot;my-rtmp&quot;/&gt;             <br />&#160;&#160;&#160; &lt;/channels&gt; </p>
<p>&#160;&#160;&#160; &lt;properties&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;auto-sync-enabled&gt;true&lt;/auto-sync-enabled&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;use-transactions&gt;false&lt;/use-transactions&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;source&gt;<strong><font color="#8080ff">myenum.test.MyAssembler</font></strong>&lt;/source&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;scope&gt;application&lt;/scope&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;metadata&gt;            <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;identity property=&quot;id&quot; /&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/metadata&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;network&gt;            <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;session-timeout&gt;20&lt;/session-timeout&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;paging enabled=&quot;false&quot; pageSize=&quot;10&quot; /&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;throttle-inbound policy=&quot;ERROR&quot; max-frequency=&quot;500&quot; /&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;throttle-outbound policy=&quot;REPLACE&quot; max-frequency=&quot;500&quot; /&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/network&gt; </p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;server/&gt; </p>
<p>&#160;&#160;&#160; &lt;/properties&gt; </p>
<p>&lt;/destination&gt; </p>
</td>
<td valign="top" width="37">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p><u>The Flex side</u></p>
<p>The ActionScript DTO (it maps directly to the Java class):</p>
<table cellspacing="0" cellpadding="2" width="593" border="0">
<tbody>
<tr>
<td valign="top" width="69">&#160;</td>
<td valign="top" width="481">
<p><em>package vo              <br />{               <br />&#160;&#160;&#160; [Managed]               <br />&#160;&#160;&#160; [RemoteClass(alias=&quot;<strong><font color="#8080ff">myenum.test.MyDTO</font></strong>&quot;)]&#160;&#160;&#160; <br />&#160;&#160;&#160; public class MyDTO               <br />&#160;&#160;&#160; {               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; public function MyDTO()               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; }               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; public var id:int;               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; public var name:String;               <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; public var <strong><font color="#8080ff">car:String</font></strong>; </em></p>
<p><em>&#160;&#160;&#160; }              <br />}</em></p>
</td>
<td valign="top" width="41"><em></em></td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>The Flex application:</p>
<table cellspacing="0" cellpadding="2" width="596" border="0">
<tbody>
<tr>
<td valign="top" width="32">&#160;</td>
<td valign="top" width="552">
<p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;            <br />&lt;mx:Application xmlns:mx=&quot;<a href="http://www.adobe.com/2006/mxml">http://www.adobe.com/2006/mxml&quot;</a> layout=&quot;absolute&quot;&gt; </p>
<p>&#160;&#160;&#160; &lt;mx:Script&gt;            <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;![CDATA[             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; import vo.MyDTO;</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; private function createMyDTO():void {             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var myDTO:MyDTO = new MyDTO();             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; myDTO.id = 0;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; myDTO.name = &quot;Marc&quot;;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong><font color="#8080ff">myDTO.car = &quot;BMW&quot;</font></strong>;            <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; myCol.addItem(myDTO);             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ]]&gt;             <br />&#160;&#160;&#160; &lt;/mx:Script&gt; </p>
<p>&#160;</p>
<p>&#160;&#160;&#160; &lt;mx:DataService id=&quot;myDS&quot; destination=&quot;myds&quot; autoCommit=&quot;false&quot;/&gt;            <br />&#160;&#160;&#160; &lt;mx:ArrayCollection id=&quot;myCol&quot;/&gt;</p>
<p>&#160;&#160;&#160; &lt;mx:Panel x=&quot;116&quot; y=&quot;49&quot; width=&quot;488&quot; height=&quot;204&quot; layout=&quot;absolute&quot;&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mx:DataGrid id=&quot;myDG&quot; x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;100%&quot;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataProvider=&quot;{myCol}&quot; editable=&quot;true&quot;&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/mx:DataGrid&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mx:ControlBar&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mx:Button label=&quot;Query&quot; click=&quot;myDS.fill(myCol)&quot;/&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mx:Button label=&quot;Create&quot; click=&quot;createMyDTO()&quot;/&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mx:Button label=&quot;Save&quot;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; enabled=&quot;{myDS.commitRequired}&quot; click=&quot;myDS.commit()&quot;/&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;mx:Button label=&quot;Undo&quot;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; enabled=&quot;{myDS.commitRequired}&quot; click=&quot;myDS.revertChanges()&quot;/&gt;             <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/mx:ControlBar&gt;             <br />&#160;&#160;&#160; &lt;/mx:Panel&gt;             <br />&lt;/mx:Application&gt;</p>
</p>
</td>
<td valign="top" width="10">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p>On the Java side &quot;car&quot; is a enum while in ActionScript it is a String. Assigning &quot;BMW&quot; to a newly created myVO results serverside in a new myVO with the car enum equal to BMW.</p>
<p>Notice that there are no explicit calls made to the server for creating, deleting or updating the DTO&#8217;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.</p>
<p><a href="http://www.drflex.eu/wp-content/uploads/2008/07/image.png" rel="lightbox[49]"><img style="0px" height="250" alt="image" src="http://www.drflex.eu/wp-content/uploads/2008/07/image-thumb.png" width="526" border="0" /></a> </p>
<p>You can download the sources for this sample as a LiveCycle ES Data Services project archive from <a href="https://share.acrobat.com/adc/document.do?docid=273d29f3-c8de-4114-b3fd-95ea65a6a8e1" target="_blank">Adobe Share</a>, next import this into your Eclipse + Flex plugin environment.</p>
<p><strong>Tip to stay healthy:</strong></p>
<p>Check out <a href="http://coenraets.org/" target="_blank">Christophe Coenraets</a>&#8216; website to find more examples about LiveCycle ES Data Services. You can download LiveCycle ES Data Services 2.6 (beta) from <a href="http://labs.adobe.com/downloads/livecycle_dataservices2_6.html" target="_blank">Adobe Labs</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2008/07/livecycle-es-data-services-data-management-and-java-enums/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to integrate Flex with an online payment system like Ogone ?</title>
		<link>http://www.drflex.eu/2008/06/how-to-integrate-flex-with-an-online-payment-system-like-ogone/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-integrate-flex-with-an-online-payment-system-like-ogone</link>
		<comments>http://www.drflex.eu/2008/06/how-to-integrate-flex-with-an-online-payment-system-like-ogone/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 15:20:08 +0000</pubDate>
		<dc:creator>Christoph Rooms</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Dr Flex Question]]></category>
		<category><![CDATA[LiveCycle Data Services ES]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/2008/06/how-to-integrate-flex-with-an-online-payment-system-like-ogone/</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<div><strong>Disease : </strong></div>
<div>What would be the best way to integrate an <a href="http://en.wikipedia.org/wiki/E-commerce_payment_systems" target="_blank">online payment system</a> like <a href="http://www.ogone.be/" target="_blank">Ogone</a> into my Flex application ?</div>
<div></div>
<div><strong>Prescription :</strong></div>
<div></div>
<div>Depending on the payment system, there are a number of different options.</div>
<div></div>
<div><strong>Option 1 : Use the payment provider web application that handles payment</strong></div>
<div></div>
<div>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. <span> </span>When the payment transaction is done,<br />
the payment service will return your customer to your application and provide<br />
it with information on the transaction. So your <a href="http://www.flex.org" target="_blank">Flex</a> application will not even see any credit card details !</div>
<div>So how can you integrate this secure HTML payment application into your Flex application ? The best way is to show the application in an <a href="http://en.wikipedia.org/wiki/IFrame" target="_blank">iFrame</a> on top of your Flex application. The Flex application will be able to communicate with the iFrame through <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=ajaxbridge_1.html" target="_blank">FABridge</a>. FABridge is an Adobe javascript library that allows flash player to interact with the HTML container and the other way around. <a href="http://ccgi.arutherford.plus.com/blog/wordpress/?p=133" target="_blank">Alistair Rutherford</a> wrote a <a href="http://ccgi.arutherford.plus.com/blog/wordpress/?p=133" target="_blank">post</a> on how to use an iFrame on top of your Flex application.</div>
<div>The solution Ogone is providing is <a href="http://www.ogone.com/ncol/web_ecommerce1.asp?BRANDING=ogone&amp;ISP=&amp;SubID=1&amp;SOLPRO=&amp;MODE=&amp;ACountry=BE&amp;CSRFSP=%2Fncol%2Fweb_standard1.asp&amp;CSRFKEY=C9446A6732288BAD843525E4C5C85DA8B8E97FA2&amp;CSRFTS=20080625113034" target="_blank">Ogone e-commerce</a>. I have build an example integrating Flex with Ogone e-commerce. You can find the source code here.</div>
<div>Here in a few steps what you need to take care of :</div>
<div>1. <span class="Apple-style-span" style="underline">PaymentEvent.as</span> : Custom event that is used to pass the payment data to the HTML page running in the iFrame.</div>
<div>2. <span class="Apple-style-span" style="underline">iFrame.as</span> : iFrame component build by Alistair RutherFord</div>
<div>3. Add the FABridge javascript library to &#8216;html-template/index.template.html&#8217; and add the .js itself.</div>
<div>4. <span class="Apple-style-span" style="underline">ogone_html.html</span> : html file that will runn in iFrame. Main part is an HTML form that we&#8217;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.</div>
<div>5. <span class="Apple-style-span" style="underline">ogone_bevestiging</span> : 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&#8217;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.</div>
<div>You can find the source files on <a href="http://samples.drflex.eu/ogone/Ogone.zip" target="_blank">here</a></div>
<div>And have a look at the application <a href="http://samples.drflex.eu/ogone/Ogone.html" target="_blank">here</a>. (Use this test VISA number : 4111 1111 1111 1111)</div>
<div><strong>Option 2 : Use the payment provider API&#8217;s.</strong></div>
<div>In this case you&#8217;ll build the UI that will handle payment details yourself, which means you&#8217;ll be responsable for providing the necesary security measures. After collectint the credit card details you&#8217;ll be using the API&#8217;s to handle the payment.</div>
<div>So depending on the API technology you&#8217;ll have to use a specific solution :</div>
<div>
<ul>
<li>Java API : <a href="http://www.adobe.com/producst/livecycle/dataservices/" target="_blank">LiveCycle Data Services</a>/<a href="http://opensource.adobe.com/wiki/display/blazeds/" target="_blank">BlazeDS</a>.</li>
<li>Web Services API : Flex client or through LiveCycle Data Services or BlazeDS</li>
<li>PHP API : <a href="http://www.amfphp.org/" target="_blank">AMFPHP</a></li>
<li>Actionscript API : Flex Client</li>
</ul>
</div>
<div><strong>Tips to stay healthy :</strong></div>
<div>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.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2008/06/how-to-integrate-flex-with-an-online-payment-system-like-ogone/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>What is the preferred LiveCycle Data Services development environment</title>
		<link>http://www.drflex.eu/2008/06/what-is-the-preferred-livecycle-data-services-development-environment/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-is-the-preferred-livecycle-data-services-development-environment</link>
		<comments>http://www.drflex.eu/2008/06/what-is-the-preferred-livecycle-data-services-development-environment/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 09:04:39 +0000</pubDate>
		<dc:creator>Christoph Rooms</dc:creator>
				<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Dr Flex Question]]></category>
		<category><![CDATA[LiveCycle Data Services ES]]></category>

		<guid isPermaLink="false">http://www.drflex.eu/2008/06/what-is-the-preferred-livecycle-data-services-development-environement/</guid>
		<description><![CDATA[Disease :  What would be the best development environment if I want to start developing a Flex applications that uses LiveCycle ES Data Services, so I can interact with a database or any other backend system ?  Prescription :  You will need these components : Flex Builder (full version or plugin) : You will use [...]]]></description>
			<content:encoded><![CDATA[<div><b>Disease : </b></div>
<div><br class="webkit-block-placeholder"></div>
<div>What would be the best development environment if I want to start developing a Flex applications that uses <a href="http://www.adobe.com/products/livecycle/dataservices/" target="_blank">LiveCycle ES Data Services</a>, so I can interact with a database or any other backend system ? </div>
<div><br class="webkit-block-placeholder"></div>
<div><b>Prescription :</b> </div>
<div><br class="webkit-block-placeholder"></div>
<div>You will need these components :</div>
<div><br class="webkit-block-placeholder"></div>
<div>
<ul>
<li><a href="http://www.adobe.com/products/flex/features/flex_builder/" target="_blank">Flex Builder</a> (full version or plugin) : You will use the Flex Builder plugin to build and debug your Flex application (MXML/Actionscript).</li>
<li><a href="http://tomcat.apache.org/" target="_blank">Apache Tomcat</a> (or any other J2EE server) : LiveCycle Data Services is a J2EE Web component (WAR), so you need a J2EE web container to run LiveCycle ES DataServices. You’ll need to add “Java Open Transaction Manager” to Tomcat, to make sure Data Management can handle your database transactions. </li>
<li><a href="http://www.eclipse.org/webtools/" target="_blank">Eclipse WTC plugin</a> : This plugin extends the Eclipse platform with tools for developing Web and Java EE applications. </li>
<li><a href="http://www.adobe.com/products/livecycle/dataservices/" target="_blank">LiveCycle Data Services</a> (<a href="https://www.adobe.com/cfusion/tdrc/index.cfm?product=livecycle%5Fdataservices" target="_blank">get your trial version at adobe.com</a>)</li>
</ul>
</div>
<div><br class="webkit-block-placeholder"></div>
<div>All these components are available for Windows and Mac. So you can set up this environment on both operating systems. </div>
<div><br class="webkit-block-placeholder"></div>
<div>For setting up these components there are 2 approaches :</div>
<div>
<ul>
<li>Install <a href="http://www.eclipse.org" target="_blank">Eclipse</a> and add Flex Builder as a plugin. In this case you probably want to start off with the <a href="http://www.eclipse.org/europa/" target="_blank">Eclipse “Europa”</a> version. The Eclipse Europa build is is a coordinated release of different Eclipse project teams. This release will contain extra components, like WTC,  that will make development easier. </li>
<li>Install Flex Builder and add the WTC plugin. </li>
</ul>
</div>
<div><br class="webkit-block-placeholder"></div>
<div>Mihae Corlan has described the second option. In <a href="http://corlan.org/2008/06/05/creating-a-combined-flexjava-project-in-flex-builder-wo-lcdsblazeds/" target="_blank">his post</a> you can also find how to create a combined Flex/J2EE project and how to add the Tomcat installation. (which is applicable to both approaches ofcourse )</div>
<div><br class="webkit-block-placeholder"></div>
<div>Mihae also added a <a href="http://corlan.org/2008/06/06/debugging-a-combined-javaflex-project/" target="_blank">post on how debugging works</a> in a Flex/J2EE project. </div>
<div><br class="webkit-block-placeholder"></div>
<div>So now you are ready to build your Flex data rich application that will use LiveCycle Data Services. You will be able to edit the Flex Data Services configuration XML files in Eclipse, write your Assemblers, etc &#8230; Every modification will be picked up and automatically deployed. </div>
<div>  </div>
<div><b>Tips to stay healthy :</b></div>
<div> </div>
<div>When building data intensive <a href="http://en.wikipedia.org/wiki/Rich_Internet_application" target="_blank">RIA</a> applications with intensive use  of <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete" target="_blank">CRUD operations</a>, use LiveCycle Data Services data management functionality. It will save you loads of development time and minimize the number of code that has to be written. This will benefit the readability and maintenance of your code and it provides you extra functionality like support for database transactions. </div>
]]></content:encoded>
			<wfw:commentRss>http://www.drflex.eu/2008/06/what-is-the-preferred-livecycle-data-services-development-environment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>



