<?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>Saket @ Adobe</title>
	<atom:link href="http://blogs.adobe.com/saket/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.adobe.com/saket</link>
	<description>Riding the enterprise horse</description>
	<lastBuildDate>Fri, 04 Nov 2011 14:28:37 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Using Lists and Conditions in Correspondence Management to create complex template rules</title>
		<link>http://blogs.adobe.com/saket/cm-lists-and-conditions/</link>
		<comments>http://blogs.adobe.com/saket/cm-lists-and-conditions/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 14:22:28 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[asset management]]></category>
		<category><![CDATA[cm]]></category>
		<category><![CDATA[correspondence management]]></category>
		<category><![CDATA[solutions]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=364</guid>
		<description><![CDATA[The Correspondence Management Solution presents unique concepts of List and Condition assets (aka modules), to enable advanced correspondence template design. These asset types allow defining rules for content inclusion, that may be quite complex by using a combination of (nested) &#8230; <a href="http://blogs.adobe.com/saket/cm-lists-and-conditions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The Correspondence Management Solution presents unique concepts of <strong>List</strong> and <strong>Condition</strong> assets (aka modules), to enable advanced correspondence template design. These asset types allow defining rules for content inclusion, that may be quite complex by using a combination of (nested) Lists and Conditions.</p>
<h2>Lists</h2>
<p>Lists are a great way to group content, i.e. Texts, Images, nested Lists and Conditions (read on, if you are new to Conditions) together into logical groups. For instance, when you wish to mandate the inclusion of a Text paragraph A with Text paragraph B, you could create List, and include Texts A and B within the List, marking them as <em>mandatory</em> content.</p>
<p>Apart from this, you could also set advanced <strong>Styles</strong> on Lists, so as to specify if and how the content should be bulleted or numbered, set indentation on individual content, and much more. You could also specify advanced rules for the List to control whether the List can accept more content than what is originally assigned to it (during correspondence creation), or whether content within it can be re-ordered, and so on.</p>
<p>Visit the official document to see <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementSolution/WS6db1f95d7f6c954f-27f2691012b7fafb54f-7fff.html">how to work with Lists using the List Editor</a>.</p>
<p>&nbsp;</p>
<h2>Conditions</h2>
<p>Conditions are a great way to specify inclusion rules of content within a correspondence. One could define expressions on control variables (placeholders and/or Data Dictionary elements), such that appropriate content may be selected into the correspondence,  based on runtime values of these variables. Content may be Texts, Images, Lists or Conditions (thereby allowing deeply nested conditions).</p>
<p>Conditions are defined similar to SWITCH-CASE statements. Each expression has a result content associated with it. The first expression that evaluates to TRUE is chosen as the result and the content associated with it is included in the final correspondence.</p>
<p>Note that you can choose to return multiple content against an expression by wrapping (grouping) them within a List and then select the List as the result of that expression.</p>
<p>Visit the official document to see <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementSolution/WS6db1f95d7f6c954f-27f2691012b7fafb54f-7ffe.html">how to work with Conditions using the Condition Editor</a>.</p>
<p>&nbsp;</p>
<p>As you can see, Lists can be included within other Lists or Conditions and vice-versa. Thus allowing users to create complex rules for their templates, optionally combined with styles.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/cm-lists-and-conditions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Understanding and Configuring the Correspondence Management Manage Assets interface</title>
		<link>http://blogs.adobe.com/saket/manage-assets-interface/</link>
		<comments>http://blogs.adobe.com/saket/manage-assets-interface/#comments</comments>
		<pubDate>Sun, 02 Oct 2011 17:53:55 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[asset management]]></category>
		<category><![CDATA[author-publish]]></category>
		<category><![CDATA[cm]]></category>
		<category><![CDATA[correspondence management]]></category>
		<category><![CDATA[solution template]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=341</guid>
		<description><![CDATA[While the out-of-the-box experience of the Manage Assets interface will blow you away, it is worth noting that the interface itself is highly configurable, given that deployments of the Correspondence Management solution may need a different/customized look-n-feel of this interface, &#8230; <a href="http://blogs.adobe.com/saket/manage-assets-interface/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>While the out-of-the-box experience of the <strong>Manage Assets</strong> interface will blow you away, it is worth noting that the interface itself is highly configurable, given that deployments of the Correspondence Management solution may need a different/customized look-n-feel of this interface, based on specific customer requirements.</p>
<p>The overall knitting of the UI components on the interface is done using the <strong>AMApplicationSkin.mxml</strong> which you can find in the CM Solution Template @ <strong>CorrespondenceManagementSolutionTemplate\ManageAssets\src\com\adobe\solutions\cmg\manage\skins\AMApplicationSkin.mxml</strong>.</p>
<p>Here&#8217;s a quick look at the high-level components:</p>
<p><a class="lightbox" title="manageassets" href="http://blogs.adobe.com/saket/files/2011/10/manageassets.png"><img class="alignleft size-medium wp-image-352" title="manageassets" src="http://blogs.adobe.com/saket/files/2011/10/manageassets-300x162.png" alt="" width="300" height="162" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>While what&#8217;s shown on the <strong>Application Header</strong> (the various tab navigators) is largely governed by the (customizable) application&#8217;s skin (AMApplicationSkin), the rest of the UI components (i.e., which actions/buttons to be shown on the <strong>Application Toolbar, </strong>which columns to be shown in the <strong>Search Results Grid</strong> and which properties to be shown in the <strong>Advanced Search</strong> panel when searching) are driven by an XML definition, i.e. asset definition FMLs, which require almost no code changes to get yourself a customized UI experience. You will find these asset definition FMLs under <strong>/apps/solutions/cm/assetDefinitions</strong> in the CRX repository. See snapshot below:</p>
<p><a class="lightbox" title="assetdefs" href="http://blogs.adobe.com/saket/files/2011/10/assetdefs.png"><img class="alignleft size-medium wp-image-353" title="assetdefs" src="http://blogs.adobe.com/saket/files/2011/10/assetdefs-180x300.png" alt="" width="180" height="300" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Note that you will find two sets of FMLs there. Ones that are named [Asset type]<strong>.fml</strong> and ones that are named [Asset type]<strong>-publish.fml &#8211; </strong>the former being the definitions used for the solution&#8217;s Author instance and the latter for the Publish instance.</p>
<p>The initial view of the Manage Assets interface lists all assets in the system. That is because the default view has all assets selected for search (&#8220;<strong>Search all assets</strong>&#8221; in the <strong>Advanced Search </strong>panel<strong>- </strong>see snapshot above). This view uses the <strong>Asset.fml</strong> descriptor as the UI definition/design. The same descriptor is used when searching for assets across multiple asset types. However, when searching for a specific type of asset (i.e., only Texts or only Conditions, and so on&#8230;), the descriptor for that asset type drives the UI definition/design. For example, when searching for <strong>Texts</strong> only (all other checkboxes deselected), the <strong>TextModule.fml</strong> drives how the interface looks like.</p>
<p>The FMLs are part of the CM Solution Template (@ <strong>CorrespondenceManagementSolutionTemplate\package-resources\apps\solutions\cm\assetDefinitions</strong>), and can be modified as required. Once modified, follow the <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS3ad6fd7a5b41dea4-3be0a31d1309f787f4e-8000.html#WSc070aef4a1ec5456-4b89a078130dd36fe4b-7ff1">steps to build and deploy the solution template</a> for changes to take effect.</p>
<p>&nbsp;</p>
<p><span class="Apple-style-span" style="font-size: 20px; font-weight: bold;">Understanding the Asset Definition descriptors (FMLs)</span></p>
<p>Now that we know the significance of these FMLs, let&#8217;s take a look at what&#8217;s in there&#8230;</p>
<p>The FML has a lot inside it, but we will only focus on what&#8217;s relevant towards the Manage Assets UI definition. Let&#8217;s take the <strong>TextModule.fml</strong> as an example here.</p>
<p>The first section of interest is the <strong>assetActions</strong> item, which defines <strong>what action buttons are available on the Application Toolbar</strong> when searching for Texts (only). Here&#8217;s how the section looks like for Texts:</p>
<p><a class="lightbox" title="textfml" href="http://blogs.adobe.com/saket/files/2011/10/textfml.png"><img class="alignleft size-medium wp-image-355" title="textfml" src="http://blogs.adobe.com/saket/files/2011/10/textfml-300x90.png" alt="" width="300" height="90" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Note the list of actions highlighted (within the grey boundary). Each <strong>&lt;action&gt;</strong> also defines the User Groups (names) who can perform that action (<em>groupName=&#8221;&#8230;&#8221;</em>),  whether the action is enabled by default or not (<em>defaultEnabled=&#8221;&#8230;&#8221;</em>), and other styling configurations such as the icons to be used in enabled or disabled states, tooltip and label (<em>enabledIcon, disabledIcon, tooltip, label</em>).</p>
<p>The next section of interest would be the various <strong>&lt;property&gt;</strong> tags. Here&#8217;s a snapshot of the <em>name</em> property for Texts:</p>
<p><a class="lightbox" title="property" href="http://blogs.adobe.com/saket/files/2011/10/property.png"><img class="alignleft size-medium wp-image-356" title="property" src="http://blogs.adobe.com/saket/files/2011/10/property-300x58.png" alt="" width="300" height="58" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The set of <strong>&lt;property&gt;</strong> tags define the properties/attributes that are part of that asset. Each &lt;property&gt; may define whether it is visible as a column in the <strong>Search Results Grid</strong> (note the <em>visible</em> attribute highlighted in RED), whether it is available as a searchable property in the <strong>Advanced Search</strong> panel (note the <em>searchable</em> attribute highlighted in GREEN), and other attributes such as the <em>displayName, columnOrder, </em>etc.</p>
<p>So, to add a column in the Manage Assets UI (in the <strong>Search Results Grid</strong>), you would need to add an additional &lt;property&gt; node for that property (if it does not exist already). Properties could either be one of the existing ones for the asset or a custom property added for that asset.</p>
<p>Overall, to configure the properties to be shown in the Search Results Grid and the Advanced Search panel, you may tweak existing properties and/or add/remove properties to the concerned FML.</p>
<p>&nbsp;</p>
<p>This was a very generic description of such configurations. You may check out <a title="Better search using asset tagging" href="http://blogs.adobe.com/saket/better-search-using-asset-tagging/">my post which adds a <strong>Tags</strong> column</a> to the Manage Assets UI for all assets, as an example. You should also check out the public documentation which <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS3e571947ecd22b22-3e5cde4d13174a58523-7fff.html">adds custom properties to assets</a> and displays them on the Manage Assets interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/manage-assets-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Restart/Refresh the ADEP OSGi container [Apache Felix]</title>
		<link>http://blogs.adobe.com/saket/restartrefresh-the-adep-osgi-container-apache-felix/</link>
		<comments>http://blogs.adobe.com/saket/restartrefresh-the-adep-osgi-container-apache-felix/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 10:10:52 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[felix web console]]></category>
		<category><![CDATA[osgi]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=343</guid>
		<description><![CDATA[One of the main components of the Adobe Digital Enterprise Platform is the Apache Felix OSGi Container over which the various services and sub-components of the platform are deployed. The container obviously brings along the great capabilities of OSGi as a &#8230; <a href="http://blogs.adobe.com/saket/restartrefresh-the-adep-osgi-container-apache-felix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>One of the main <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/OverviewADEP/WSfc76cf3007e1a2a352791fba131956652ae-8000.html">components of the Adobe Digital Enterprise Platform</a> is the <a href="http://felix.apache.org/site/index.html">Apache Felix</a> OSGi Container over which the various services and sub-components of the platform are deployed.</p>
<p>The container obviously brings along the great capabilities of OSGi as a dynamic component model, where components (and services) can be remotely installed, started, stopped, updated and uninstalled without requiring a reboot. However, one of the other very cool aspect of the container is the ability to <strong>Stop and/or Restart  the entire OSGi framework remotely, </strong>to help resolve/refresh the installed bundles, their bundle contexts and dependencies, etc.</p>
<p>To do so, you just need to go to the Felix Web Console @ the URL &#8211; <strong>http://server:port/system/console. </strong>Go to the <strong>System Information</strong> tab, where you will something like this:</p>
<p><a class="lightbox" title="restart_felix" href="http://blogs.adobe.com/saket/files/2011/10/restart_felix.png"><img class="alignleft size-medium wp-image-344" title="restart_felix" src="http://blogs.adobe.com/saket/files/2011/10/restart_felix-300x119.png" alt="" width="300" height="119" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><em>Note the <strong>Restart</strong> and <strong>Stop</strong> options indicated in <span style="color: #339966;">green</span>.</em></p>
<p>The<strong> System Information</strong> tab is also useful to gather other system related information such as the JVM details, memory consumption (with the ability to perform a forced Garbage Collection), etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/restartrefresh-the-adep-osgi-container-apache-felix/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adobe Digital Enterprise Platform in 10 minutes!</title>
		<link>http://blogs.adobe.com/saket/adep-10-minute-intro/</link>
		<comments>http://blogs.adobe.com/saket/adep-10-minute-intro/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 16:05:33 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[introduction]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=327</guid>
		<description><![CDATA[For those of you who are new to the Adobe Digital Enterprise Platform (ADEP), the short (but concise) 10 minute video below is a MUST watch, for an introduction to the platform. Watch out for the ADEP Developers Channel on &#8230; <a href="http://blogs.adobe.com/saket/adep-10-minute-intro/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>For those of you who are new to the Adobe Digital Enterprise Platform (ADEP), the short (but concise) 10 minute video below is a MUST watch, for an introduction to the platform.</p>
<p><iframe src="http://www.youtube.com/embed/IjKoNJJ9mS4" frameborder="0" width="420" height="345"></iframe></p>
<p>Watch out for the <a href="http://www.youtube.com/user/ADEPDevelopers">ADEP Developers Channel on YouTube</a> for more&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/adep-10-minute-intro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customizing ADEP Solutions &#8211; simplified!</title>
		<link>http://blogs.adobe.com/saket/customizing-adep-solutions-simplified/</link>
		<comments>http://blogs.adobe.com/saket/customizing-adep-solutions-simplified/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 20:13:21 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[solutions]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=317</guid>
		<description><![CDATA[Here are some critical aspects that contribute greatly towards the ease of customization of Adobe&#8217;s Customer Experience Management (CEM) Solutions. No EAR deployments and Application server overheads! The fact that the CEM solutions sit over the OSGi framework (the Apache &#8230; <a href="http://blogs.adobe.com/saket/customizing-adep-solutions-simplified/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Here are some critical aspects that contribute greatly towards the ease of customization of Adobe&#8217;s Customer Experience Management (CEM) Solutions.</p>
<h2><strong>No EAR deployments and Application server overheads!</strong></h2>
<p>The fact that the CEM solutions sit over the OSGi framework (the Apache Felix OSGi container), has completely changed the way they are built and deployed. As compared to the conventional application server model, where one would typically deploy an EAR file, restart the server and wait for an awful long time for the complete server startup, the OSGi model and the new platform brings in the capability to deploy artifacts (bundles and packages) at runtime, without having to bounce the entire server (which anyway is much, much faster). If at all, there may be cases where you would have to restart the OSGi bundles, but that&#8217;s a piece of cake given that you have a sophisticated console to do this from, within a few seconds.</p>
<h2><strong>Simplified UI changes &#8211; Great separation of concerns!</strong></h2>
<p>The UI components of all CEM solutions are based on what is known as the <a href="http://craigrandall.net/archives/2011/06/what-is-a-ux-component/">Experience Oriented (XOA) architecture</a>. These UI components are popularly known as <a href="http://craigrandall.net/archives/2011/06/what-is-a-ux-component/">UX Components</a>, which by definition is a combination of MXML and ActionScript classes that is bundled into SWC files that separate concerns and encapsulate each concern behind an interface. Interfaces make the implementation of concerns (i.e. presentation, domain, etc.) replaceable and extensible. The Presentation layer of each component, further has the separation of a <strong>HostComponent</strong> and the <strong>Skin</strong>, such that one can change the UI look-and-feel (for example, re-ordering of UI elements) by simply modifying the Skin of that component, without having to worry about the overall presentation logic (which lies in the HostComponent). Similarly, the component&#8217;s <strong>Styles</strong> are externalized into CSS files, such that one can change the themes, colors, fonts, etc. by simply changing these CSS files. This allows changes to the solutions while still retaining supportability. Apart from these, other enhanced customizations may involve changes to the HostComponents or the Domain layer, as per the desired use case.</p>
<p>Apart from these, the overall development model around customizations on the UI layer, takes-away the overhead of making changes in various different projects. One can now just add the necessary customized artifacts (MXML, Actionscript, CSS, etc.) to the Solution Template projects itself and override the default implementations via CSS definitions and/or standard inheritance. To learn more, refer to <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WSc070aef4a1ec5456864ec66130e17eb83b-7ffb.html">this sample scenario</a> from the Correspondence Management solution.</p>
<h2></h2>
<h2><strong>CRX as the Content repository &#8211; Ease of debugging!</strong></h2>
<p>The solution assets are now stored in CRX, which provides an <em>Apache Jackrabbit</em> based content repository. The nice and intuitive <strong>Content Explorer</strong> allows an easy way to navigate across the repository to search for your assets (that are clearly visible as nodes, by their <strong>names</strong>). Users can select an asset or one of its child nodes to see/investigate the properties associated with the asset. One can also download asset content by selecting an asset and clicking on the data property of that asset (for example, for a Layout asset in CM, it is the <strong>filexdp</strong> property on the layout node). This greatly helps in debugging/troubleshooting assets within the system.</p>
<p>Apart from this, there is also the <strong>CRXDE Lite</strong> interface that enables you to perform standard development tasks from the browser.</p>
<p>Check out the <a title="Common ADEP URLs" href="http://blogs.adobe.com/saket/common-adep-urls/">links to some of these common interfaces in ADEP</a>,  that you would need frequently during development.</p>
<h2><strong>OSGi Services &#8211; Possibility of isolated server-side customizations!</strong></h2>
<p>Since services deployed in the container are classic OSGi services, one can choose to <a title="Building OSGi bundles for ADEP" href="http://blogs.adobe.com/saket/building-osgi-bundles-for-adep/">build/deploy his/her own service as a separate OSGi bundle</a>. Thus, allowing clear separation of custom services vs. the out-of-the-box ones.</p>
<h2><strong>Great overall Development Platform!</strong></h2>
<p>The Adobe Digital Enterprise Platform (ADEP) offers great tools to support <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/AEPDeveloperGuide/index.html">development with ADEP Experience Services</a>. The tools include a set of additional extensions for Flash Builder and a rich SDK (Flex, Java, Mobile) for building applications. The Experience Services SDK is an Experience Package distributed and downloadable using Adobe Package Share.</p>
<p>Overall, since the solutions are built on top of the Adobe Digital Enterprise Platform, they leverage these great capabilities of the platform itself, such that one can build custom applications around it that solves one or more end-to-end use cases.</p>
<h2><strong>Comprehensive Help Content!</strong></h2>
<p>The solutions publish comprehensive <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/documentation.html#task=0,1,2,3,4,5,6&amp;module=-1">documentation</a> around the usage of the solution, steps to customize areas within the solution, sample customization scenarios, etc. &#8211; all of which are a great set of resources to learn about the solution and provide helpful starting points/references for customizations. These learning resources keep evolving as more features are added to the solution, and more scenarios are identified. So, keep an eye on them!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/customizing-adep-solutions-simplified/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Find your OSGi-ready enterprise (thirdparty) libraries</title>
		<link>http://blogs.adobe.com/saket/osgified-libraries/</link>
		<comments>http://blogs.adobe.com/saket/osgified-libraries/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 17:32:42 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[osgi]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=313</guid>
		<description><![CDATA[Ok, this is  going to be a short one&#8230; While building custom OSGi bundles or components over the Adobe Digital Enterprise Platform (which contains the Apache Felix OSGi container) or any other OSGi container for that matter, you may often &#8230; <a href="http://blogs.adobe.com/saket/osgified-libraries/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ok, this is  going to be a short one&#8230;</p>
<p>While <a title="Building OSGi bundles for ADEP" href="http://blogs.adobe.com/saket/building-osgi-bundles-for-adep/">building custom OSGi bundles </a>or components over the <strong>Adobe Digital Enterprise Platform</strong> (which contains the Apache Felix OSGi container) or any other OSGi container for that matter, you may often come across a need to access and hence introduce OSGi bundles of other enterprise thirdparty libraries within the container.</p>
<p>A common way to achieve this is to <a href="http://blog.springsource.com/2008/02/18/creating-osgi-bundles/">create a wrapper bundle</a> for these libraries using the BND  tool. However, thanks to SpringSource, <strong>we already have the OSGi-ready versions</strong> of hundreds of open source enterprise libraries that are commonly used/needed, hosted for public use.  So, you can easily search for the library you are looking for <a href="http://ebr.springsource.com/repository/app/bundle">here</a>, before creating one on your own (in case the one you are looking for does not exist &#8211; which should be quite rare).</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/osgified-libraries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designing a Correspondence Draft workflow</title>
		<link>http://blogs.adobe.com/saket/designing-a-draft-workflow/</link>
		<comments>http://blogs.adobe.com/saket/designing-a-draft-workflow/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 12:59:32 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[cm]]></category>
		<category><![CDATA[correspondence management]]></category>
		<category><![CDATA[create correspondence]]></category>
		<category><![CDATA[postprocess]]></category>
		<category><![CDATA[reload correspondence]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=276</guid>
		<description><![CDATA[Saving correspondences as a draft (i.e., an in-progress correspondence), and the ability to reopen the same at a later point in time, seems to be a common use case in Correspondence Management. While it is known that the Adobe CM &#8230; <a href="http://blogs.adobe.com/saket/designing-a-draft-workflow/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Saving correspondences as a draft (i.e., an in-progress correspondence), and the ability to reopen the same at a later point in time, seems to be a common use case in Correspondence Management.</p>
<p>While it is known that the Adobe CM solution can be easily extended to <strong>save</strong> correspondence drafts by following some <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS4bf027e0865072853fda00341316ce519d0-7ffd.html">very simple steps</a>, I would like to enlighten as to how one could extend beyond that to design an end-to-end workflow around it.</p>
<h1>Summary</h1>
<p>In a nutshell, this post talks about the steps you could follow to Save your correspondence drafts (in the CRX repository), load the (list of) saved drafts on the Manage Assets interface and then (usually at a later point in time) choose a particular draft to be re-opened in the Create Correspondence interface.</p>
<p>The same workflow can have multiple iterations, depending upon the number of steps taken to author the final correspondence.</p>
<h1>Details</h1>
<p>Here are the steps that you could follow to design such a correspondence draft workflow :</p>
<p><strong>The steps below involve code changes (both Flex and Java), so please ensure that you have <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS3ad6fd7a5b41dea4-3be0a31d1309f787f4e-8000.html">setup your development environment</a> correctly, before proceeding.</strong></p>
<h2><span style="text-decoration: underline;">Step 1 :</span> <strong>Save correspondence drafts from Create Correspondence</strong></h2>
<p>Your first step would be to <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS4bf027e0865072853fda00341316ce519d0-7ffe.html">enable Save As Draft functionality</a> on the <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementSolution/WS95b7ae257854e416-4781a16912bd0b7f796-8000.html">Create Correspondence UI</a>. After these changes, you will have a new <strong>SaveAsDraft</strong> button on your Create Correspondence UI, that can be clicked to invoke the postprocess (an ADEP process) designed and configured for that button.</p>
<p>If you are new to designing postprocesses for the solution, it is highly recommended that you read <a title="Postprocessing your correspondence" href="http://blogs.adobe.com/saket/cm-postprocess/">more on designing postprocesses</a>.</p>
<p>We will now look into what needs to be done in the process&#8230;</p>
<h2><span style="text-decoration: underline;">Step 2 :</span> Postprocess definition to save drafts</h2>
<p>In the ADEP process that you design for Step 1, <a href="http://blogs.adobe.com/mtg/2011/02/custom-livecycle-es-component-that-communicates-with-crx.html">save the XML data (given to the postprocess) onto a given location in the CRX repository</a> as a node (of type XML), with the Letter template name as a property on that node. You may add other details (properties) to the node such as the <em>username</em> who saved the correspondence , <em>timestamp </em>when the draft was saved, <em>comments </em>captured from the user when saving the draft, etc<em>.</em></p>
<p>Your saved draft nodes may look like this (assuming you save them under <strong>/content/CMDrafts</strong>) :</p>
<p><a class="lightbox" title="draftnodes" href="http://blogs.adobe.com/saket/files/2011/09/draftnodes2.png"><img class="alignleft size-medium wp-image-305" title="draftnodes" src="http://blogs.adobe.com/saket/files/2011/09/draftnodes2-300x145.png" alt="" width="300" height="145" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="text-decoration: underline;">Step 3:</span> Custom OSGi Service to fetch drafts</h2>
<p>Now that you have a process that saves your correspondences in the CRX repository as nodes, you need the ability to fetch those from CRX (so that they can be enlisted).</p>
<p>Use/customize the CM Solution Template&#8217;s <strong>Services</strong> (Java) project to define an OSGi service that can <a title="Read/Write content node(s) or files from/into the CRX repository" href="http://blogs.adobe.com/saket/readwrite-content-nodes-or-files-frominto-the-crx-repository-2/">fetch the XML data nodes (and their details/properties) from CRX</a>. The first couple of steps in <a title="Building OSGi bundles for ADEP" href="http://blogs.adobe.com/saket/building-osgi-bundles-for-adep/">this post</a> indicate how to write an OSGi service and expose it over Flex and Spring remoting (note that you do not need the other steps, since the <strong>Services</strong> project is already configured to do that for you).</p>
<p>Your service would return a List of a custom value object, say <strong>DraftVO</strong>, which contains the XML data URL string (URL to node in the CRX repository, which would be something like <strong>crx:///content/CMDrafts/SampleLetterDraft1.xml</strong>) and the other properties attached to the draft&#8217;s node (created in <strong>Step 2</strong>).</p>
<p>Additionally, your service could filter the list of drafts based on the logged in user, so that a user only sees the drafts saved by him/her. Of course, you need to ensure that <strong>Step 2</strong> persists the <em>username</em> within the node properties (to filter the appropriate nodes).</p>
<h2><span style="text-decoration: underline;">Step 4:</span> List Drafts on the Manage Assets</h2>
<p>Now that you have a service which can return you a list of drafts saved in the system, you can customize the <strong>Manage Assets</strong> UI to enlist these drafts.</p>
<p>To do so, you can start by <a title="Adding a new Tab to the Manage Assets interface" href="http://blogs.adobe.com/saket/adding-a-new-tab-to-the-manage-assets-interface/">adding a new tab</a>, say &#8220;<strong>Drafts</strong>&#8220;, alongside the existing tabs on the Manage Assets interface. When you launch the Manage Assets UI after these changes, it should look something like this:</p>
<p><a class="lightbox" title="draftstab" href="http://blogs.adobe.com/saket/files/2011/09/draftstab.png"><img class="alignleft size-medium wp-image-301" title="draftstab" src="http://blogs.adobe.com/saket/files/2011/09/draftstab-300x93.png" alt="" width="300" height="93" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><span class="Apple-style-span" style="font-size: 13px; font-weight: normal;">The <strong>Drafts</strong> tab can be designed such that it contains a DataGrid which will enlist the saved drafts within the grid, by invoking the service, that we defined in <strong>Step 3,</strong></span><span class="Apple-style-span" style="font-size: 13px; font-weight: normal;"> as the data provider. The columns to be shown in the grid would depend on what properties you have saved (in <strong>Step 2</strong>) for a given draft item. </span></h3>
<h3><span class="Apple-style-span" style="font-size: 13px; font-weight: normal;">The below snapshot is a sample that shows two columns for the drafts list &#8211; the Letter template used for the draft, and the time when the draft was saved (assuming that the user is only seeing drafts loaded by him/her).</span></h3>
<p><a class="lightbox" title="reloadbutton" href="http://blogs.adobe.com/saket/files/2011/09/reloadbutton.png"><img class="alignleft size-medium wp-image-307" title="reloadbutton" src="http://blogs.adobe.com/saket/files/2011/09/reloadbutton-300x76.png" alt="" width="300" height="76" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="text-decoration: underline;">Step 5:</span> Reload selected draft</h2>
<p>Before you proceed, if you are not already aware of reloading correspondences in CM, please ensure that you read through <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WSc070aef4a1ec5456864ec66130e17eb83b-7fc7.html">how to reload a correspondence</a> in CM.</p>
<p>So, now that you have fetched the list of drafts on the UI, you would add a <strong>toolbar</strong> above your data grid, that has a button <strong>Reload </strong>(see snapshot above)<strong>.</strong> The button should have a click handler, such that when you select a draft item, and click Reload, it launches the CCR UI with the URL<em> http://server:port/cm/createcorrespondence.html?cmDataUrl=&lt;the data URL for the selected Draft item&gt;. </em>The data URL would be available to you for each item through the <strong>DraftVO</strong> that your service returns in <strong>Step 3</strong>.</p>
<p>&nbsp;</p>
<p>That&#8217;s it, you now have an end-to-end workflow for saving and reloading correspondence drafts!</p>
<p>Note that this is just an example that shows the solution&#8217;s extension and core capabilities to design such a workflow. You may tweak this to have more steps within it, design a more sophisticated UI, or extend this further depending upon the actual requirements.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/designing-a-draft-workflow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adding a new Tab to the Manage Assets interface</title>
		<link>http://blogs.adobe.com/saket/adding-a-new-tab-to-the-manage-assets-interface/</link>
		<comments>http://blogs.adobe.com/saket/adding-a-new-tab-to-the-manage-assets-interface/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 04:38:56 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[asset management]]></category>
		<category><![CDATA[cm]]></category>
		<category><![CDATA[correspondence management]]></category>
		<category><![CDATA[solution template]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=278</guid>
		<description><![CDATA[The Manage Assets user interface presents three main tabs for users to work with: Assets :  This is the tab where the Correspondence Management assets are listed, can be searched for (based on basic/advanced search criteria), or acted upon using &#8230; <a href="http://blogs.adobe.com/saket/adding-a-new-tab-to-the-manage-assets-interface/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementSolution/WSf9baf68802c6cf39247794012b8d09bd06-7fff.html">Manage Assets user interface </a>presents three main tabs for users to work with:</p>
<ul>
<li><strong>Assets</strong> :  This is the tab where the Correspondence Management assets are listed, can be searched for (based on basic/advanced search criteria), or acted upon using the various actions available in the toolbar.</li>
<li><strong>Editors</strong> : This is the tab where the editor for an asset is presented (opens up), when opened for <em>Edit</em> or <em>View</em> or <em>Copy</em> or other such actions using the asset toolbar.</li>
<li><strong>Admin</strong> : This tab is meant for users with administrator-like roles, wherein they can author the administrative assets, i.e. Data Dictionaries and Categories. The tab also allows users to <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementSolution/WSa575e88730e9bd2c7c1bf94613140fae096-7ffe.html">export all assets</a> in the system as an archive (ZIP), that can then be imported onto another system; thus allowing <a title="Transporting assets across systems/environments in CM 3.0" href="http://blogs.adobe.com/saket/transporting-assets-across-systemsenvironments-in-cm-3-0/">asset transport across systems</a>.</li>
</ul>
<p>While the above is available out-of-the-box, one can easily <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WSc070aef4a1ec5456864ec66130e17eb83b-7ffb.html">extend/customize the Manage Assets interface</a> to introduce a new tab (alongside the above three tabs) that may be required to display a custom user interface (what&#8217;s displayed within the tab would be customer specific, based on the exact use case). We will see how&#8230;</p>
<p><strong>Before you start with any customization(s) on the solution, ensure that you have correctly <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS3ad6fd7a5b41dea4-3be0a31d1309f787f4e-8000.html">setup your development environment</a>.</strong></p>
<p>Once you have your development environment setup in your FlashBuilder, you will see a project <strong>ManageAssets </strong>in it. As the name suggests, this is the main flex project for the Manage Assets UI, and hence any client (flex) side customization to this user interface, would involve working with this project.</p>
<p>To start with, locate the file <strong>AMApplicationSkin.mxml. </strong>You will find it under <strong>src\com\adobe\solutions\cmg\manage\skins\AMApplicationSkin.mxml. </strong>This is the Skin file for the Manage Assets interface, where you will find the declaration for the above three tabs, as shown below:</p>
<p><a class="lightbox" title="amappskin" href="http://blogs.adobe.com/saket/files/2011/09/amappskin.png"><img class="alignleft size-medium wp-image-279" title="amappskin" src="http://blogs.adobe.com/saket/files/2011/09/amappskin-300x117.png" alt="" width="300" height="117" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>We will add our new tab (named &#8220;<strong>My New Tab</strong>&#8220;) before the Assets tab by adding an additional <em>Spark NavigatorContent (s:NavigatorContent)</em> as shown below:</p>
<p><a class="lightbox" title="newtabcode" href="http://blogs.adobe.com/saket/files/2011/09/newtabcode-e1317184385710.png"><img class="alignleft size-medium wp-image-281" title="newtabcode" src="http://blogs.adobe.com/saket/files/2011/09/newtabcode-e1317184385710-300x113.png" alt="" width="300" height="113" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><em>Note that for now we have specified the label for the tab (&#8230; <strong>label=&#8221;My New Tab&#8221; &#8230;</strong>) within the skin itself, for simplicity. This should ideally be externalized to the resource bundle, just as the other tabs&#8217; labels are.</em></p>
<p>That&#8217;s it! Once done with the above change in the skin, <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS3ad6fd7a5b41dea4-3be0a31d1309f787f4e-8000.html#WSc070aef4a1ec5456-4b89a078130dd36fe4b-7ff1">re-build and deploy the solution</a>, after which, when you open the Manage Assets UI (@ <em>http://server:port/cm/manageassets.html</em>), you will see this:</p>
<p><a class="lightbox" title="newtab" href="http://blogs.adobe.com/saket/files/2011/09/newtab.png"><img class="alignleft size-medium wp-image-280" title="newtab" src="http://blogs.adobe.com/saket/files/2011/09/newtab-300x43.png" alt="" width="300" height="43" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><em>(our new tab indicated in RED)</em></p>
<p>Of course, our new tab does not have anything to show inside it and appears as an empty canvas at this time, because we haven&#8217;t added any view within it yet. However, that should be easy, as you now need to add standard Flex components within our additional <em>NavigatorContent, </em>depending upon what view you wish to show up within this tab. Additional code may be needed to implement the overall business use case, the extent of which would depend upon the complexity of the same.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/adding-a-new-tab-to-the-manage-assets-interface/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Postprocessing your correspondence</title>
		<link>http://blogs.adobe.com/saket/cm-postprocess/</link>
		<comments>http://blogs.adobe.com/saket/cm-postprocess/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 17:48:18 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[cm]]></category>
		<category><![CDATA[correspondence creation]]></category>
		<category><![CDATA[correspondence management]]></category>
		<category><![CDATA[create correspondence]]></category>
		<category><![CDATA[postprocess]]></category>
		<category><![CDATA[solutions]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=259</guid>
		<description><![CDATA[Correspondences created in enterprises would typically have to be integrated to a back-end process for further distribution (via email, fax, print), document processing (apply digital signatures, encryption, etc.) or archival of the correspondence. The Adobe Correspondence Management solution provides a convenient &#8230; <a href="http://blogs.adobe.com/saket/cm-postprocess/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Correspondences created in enterprises would typically have to be integrated to a back-end process for further distribution (via email, fax, print), document processing (apply digital signatures, encryption, etc.) or archival of the correspondence.</p>
<p>The Adobe Correspondence Management solution provides a convenient way to achieve this by leveraging orchestrations/processes on the ADEP Document Services platform for defining the back-end process (that can use one or more Document Services, based on the enterprise requirements), and providing the ability to easily bind them to a given correspondence template.</p>
<p>Read more about <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WSc070aef4a1ec545675e40cc6130e19b0ac7-7fe0.html#WSc070aef4a1ec545675e40cc6130e19b0ac7-7fdb">creating a postprocess for the CM solution</a> on the Document Server.</p>
<p>Once such processes are created on the Document Server, can then be mapped to a Letter template in the  <strong>Postprocess</strong> drop down of the <strong>Letter Template Editor </strong>(as shown below), where the available postprocesses (as defined on the Document Server) are listed:</p>
<p><a class="lightbox" title="lettereditor" href="http://blogs.adobe.com/saket/files/2011/09/lettereditor.png"><img class="alignleft size-medium wp-image-260" title="lettereditor" src="http://blogs.adobe.com/saket/files/2011/09/lettereditor-300x218.png" alt="" width="300" height="218" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><em><strong>Tip</strong>: If you create a new process, with an existing Manage Assets UI session opened, your process will not be listed in the Postprocesses dropdown until you relaunch or refresh (F5) the Manage Assets browser window (or open the Manage Assets UI in a new browser window).</em></p>
<p>When the correspondence creation is complete (using the Create Correspondence UI), users can <strong>Submit</strong> the correspondence (see snapshot below indicating the Submit button), which invokes the associated/mapped postprocess for that Letter template, with the final correspondence PDF and XML data (used to generate the PDF). The postprocess, which would be an orchestration, can then act upon the document (PDF) as necessary.</p>
<p><a class="lightbox" title="ccr" href="http://blogs.adobe.com/saket/files/2011/09/ccr.png"><img class="alignleft size-medium wp-image-261" title="ccr" src="http://blogs.adobe.com/saket/files/2011/09/ccr-300x197.png" alt="" width="300" height="197" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/cm-postprocess/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Better search using asset tagging</title>
		<link>http://blogs.adobe.com/saket/better-search-using-asset-tagging/</link>
		<comments>http://blogs.adobe.com/saket/better-search-using-asset-tagging/#comments</comments>
		<pubDate>Tue, 13 Sep 2011 11:23:36 +0000</pubDate>
		<dc:creator>sakagarw</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adep]]></category>
		<category><![CDATA[asset management]]></category>
		<category><![CDATA[cm]]></category>
		<category><![CDATA[cmsa]]></category>
		<category><![CDATA[tagging]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/saket/?p=234</guid>
		<description><![CDATA[Tagging has always been one of the classic approaches towards categorization of assets/objects, that allows a convenient way to &#8216;search&#8217; for objects based on the associated tags, at a later point in time. While the Correspondence Management Solution provides advanced &#8230; <a href="http://blogs.adobe.com/saket/better-search-using-asset-tagging/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>Tagging</strong> has always been one of the classic approaches towards categorization of assets/objects, that allows a convenient way to &#8216;search&#8217; for objects based on the associated tags, at a later point in time.</p>
<p>While the Correspondence Management Solution provides advanced search capabilities, wherein one can search over asset properties such as <em>name, description, content</em>, etc., users (customers) may want to associate custom tag(s) with an asset so that assets can then be more easily (and even, logically) searched using these tags.</p>
<p>Now, the obvious question&#8230;how to achieve this??</p>
<p>Here goes the answer&#8230;</p>
<p>As part of the various extensions points, the solution provides the <strong>capability to add custom attributes/properties to an asset,</strong> which can then be searched upon (and used in any other asset management workflows). We can leverage this aspect and add a custom property, say &#8216;tag&#8217;, to the desired asset types, which will be used to associate tags with any asset created of that type.</p>
<p>For details and samples around adding a custom attribute/property to an asset type, refer to the <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS3e571947ecd22b22-3e5cde4d13174a58523-8000.html">ADEP documentation</a>.</p>
<p>Below are the key changes done (snippets) to enable <strong>tagging</strong> on Letter templates. The same can be applied on other asset types (Texts, Images, etc.) as well.</p>
<p>1. Here&#8217;s the addition to the <em>Letter.fml</em> that drives the Manage Assets UI look when searching for Letter Templates:</p>
<p>[Note: <em>Letter.fml</em> can be found in the <em>Services</em> project of the <a href="http://help.adobe.com/en_US/enterpriseplatform/10.0/CorrespondenceManagementDeveloper/WS3ad6fd7a5b41dea4-3be0a31d1309f787f4e-8000.html#WS74a1cc3271d4c98222831a6c13162446e14-8000">Solution Template</a>]</p>
<p><span style="color: #ff9900;"><code>&lt;property name="tags" type="string"&gt;<br />
&lt;annotation name="DDS"&gt;<br />
&lt;item name="displayName"&gt;Tags&lt;/item&gt;<br />
<span style="color: #ff00ff;"><strong><code>     </code><span style="color: #993366;">&lt;item name="visible"&gt;true&lt;/item&gt;</span></strong></span><br />
<span style="color: #993366;"><strong><code>     </code> &lt;item name="searchable"&gt;true&lt;/item&gt;</strong></span><br />
<span style="color: #993366;"><strong> <code>     </code>&lt;item name="columnOrder"&gt;11&lt;/item&gt;</strong></span><br />
<code>     </code>&lt;item name="searchRendererOrder"&gt;11&lt;/item&gt;<code>     </code><br />
<code>     </code>&lt;item name="searchPath"&gt;Letter.extendedProperties.tags&lt;/item&gt;<br />
<code>     </code>&lt;item name="assetPropertyType"&gt;extended&lt;/item&gt;<br />
<code>     </code>&lt;item name="extendedPropertyPath"&gt;Letter.extendedProperties.tags&lt;/item&gt;<br />
&lt;/annotation&gt;<br />
&lt;/property&gt;</code></span></p>
<p>&#8230; which basically is adding a property named &#8216;<strong>tags</strong>&#8216; to the Manage Assets UI, such that it can appear in the <em>Advanced Search</em>, and as a column in the <em>Letters view</em> data grid. Note the entries in <span style="color: #993366;">purple</span>.</p>
<p><a class="lightbox" title="ma_tags" href="http://blogs.adobe.com/saket/files/2011/09/ma_tags.jpg"><img class="alignleft size-thumbnail wp-image-243" title="ma_tags" src="http://blogs.adobe.com/saket/files/2011/09/ma_tags-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>2. The new/extended Host Component for the Letter Editor that extends the out-of-the-box Host Component to add UI logic specific to our new attribute &#8216;tags&#8217;:</p>
<p><a class="lightbox" title="LetterEditorHC" href="http://blogs.adobe.com/saket/files/2011/09/LetterEditorHC.jpg"><img class="alignleft size-thumbnail wp-image-243" title="LetterEditorHC" src="http://blogs.adobe.com/saket/files/2011/09/LetterEditorHC-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>3. A new Skin would be created for the Letter Editor that adds a Text Input to the <strong>Properties Editor</strong> where users can supply values for the applicable tags on a template:</p>
<p><a class="lightbox" title="LESkin" href="http://blogs.adobe.com/saket/files/2011/09/LESkin.jpg"><img class="alignleft size-thumbnail wp-image-243" title="LESkin" src="http://blogs.adobe.com/saket/files/2011/09/LESkin-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&#8230;which basically, would lead to the Letter Editor showing up like this:<br />
[note the additional text box for entering tags]</p>
<p><a class="lightbox" title="LESnapshot" href="http://blogs.adobe.com/saket/files/2011/09/LESnapshot.jpg"><img class="alignleft size-thumbnail wp-image-243" title="LESnapshot" src="http://blogs.adobe.com/saket/files/2011/09/LESnapshot-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Users can now add comma-separated (you are free to use a different separator) tags when creating their Letter templates. Once added, these tags can be used to search for templates on the basis of these tags. See the below snapshot, where a search for templates with the tag &#8216;<strong>noida</strong>&#8216;, lists the Letter template that was created with that tag.</p>
<p><a class="lightbox" title="tagResult" href="http://blogs.adobe.com/saket/files/2011/09/tagResult.jpg"><img class="alignleft size-thumbnail wp-image-243" title="tagResult" src="http://blogs.adobe.com/saket/files/2011/09/tagResult-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>As mentioned before, the above snippets just give you an idea of the capability and the necessary changes to get the desired results. There are other (though minor) changes needed as part of this customization, which are similar to the way custom attributes are added to an asset type in general. So, please refer to that documentation for comprehensive steps and details.</p>
<p>Also, you could implement more complex logic within your customized solution to further enhance tagging on assets.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/saket/better-search-using-asset-tagging/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
