Power of CMIS – Interoperable Content Management

June 16, 2009

As you may aware, CMIS (Content Management Interoperability Services) uses web services to provide greater interoperability across multiple Enterprise Content Management (ECM) repositories. Here is a small introduction about CMIS who doesn’t aware of it: CMIS  is a standards proposal consisting of a set of Web services for sharing information among disparate content repositories that seeks to ensure interoperability for people and applications using multiple content repositories. Alfresco, Day Software, Dennis Hamilton, EMC, IBM, Microsoft, Open Text, Oracle and SAP have joined forces to propose CMIS, the first Web services technical specification for exchanging content with and between Enterprise Content Management (ECM) systems. Here is the conceptual CMIS architecture

CMIS

and here is the Service Oriented Content Management architecture from Optaros

Service Oriented Content Management

When you think about Interoperable Content Management(CMIS), first thing you could have ask: Is (CMIS) the perfect solution? Maybe. Maybe not. But the fact that something has been developed that ECMs and other application developers can work with to provide an integrated view of an organization’s content is a step in the direction we need to go. We all know the days of a single, in-house ECM system are pretty much over. SharePoint has already taken care of that. We need something to give us hope that our content is manageable — regardless of where it’s located. CMIS does that. Kyle McNabb has answered the lehman question on his prespectives and here is the DRAFT specification which will be submitted to OASIS – and AIIM has shown an excellent CMIS Demo (i.e., “Federator”)

[Update]:

Attached: CMIS Federated Search Code from AIIM iECM Demo – You can download it from here https://community.emc.com/docs/DOC-3771

    BDC as a Dataconnection for InfoPath Development

    June 16, 2009

    One of my customer wanted to create a BDC application definition file for Oracle 11g database Entity. Also, they wanted to use an InfoPath to leverage or pre-populate the dropdown list from Oracle database entity. Due to the budget cut, they are not willing to spend money/hours to create a seperate webservice wrapper for an oracle entity to pre-populate the dropdowns(in InfoPath) and they would like to use BDC application definition file as a datasource for an InfoPath(sounds crazy  here? [:)] ). They had raised a valid question to me that “Why don’t to use BDC as a Data Connection for Infopath? – BDC application definition file has connection string and method instance, blah, blah… so why we can not re-use this application definition file as a datasource for InfoPath Developement?”- Pretty good question, isit? [;)] – Conceptual Design diagram attaced. 

    Conceptual Design

    But unfortunately, InfoPath data connection wizard doesn’t support BDC application definition file as a Datas ource and it does supports the following options.

    InfoPath Options

    We can not use BDC application definition file as an XML form or anyother options. So, I suggested to them to create a simple webmethod(i.e, 4 hours effort) to pre-populate the lookup values from LOB Instances, and make use of this webservice as a datasource in infopath form. So that you can re-use the same application definition file for both BDC application & InfoPath form.

    Code

    They were really happy to use this technology to satisfy their technical issue as well as save cost [:)] – Using this approach we can able to use Business Data Catalog as a DataConnection for an InfoPath development.

    Hope this helps!

    New hotfix for Visual Studio 2008 is available

    February 19, 2008

    Recently, an announcement is published on WebDevTools blog @ msdn that there is a new hotfix available for Visual Studio 2008 (and Visual Web Developer 2008 Express) that fixes some performance and editor issues that have arisen in Visual Studio 2008 and Visual Web Developer 2008 Express. Fixes are related to HTML Source view performance, Design view performance, HTML editing, JavaScript editing and Web Site build performance. The download is available on connect.microsoft.com and is related to KB article KB946581. It is approximately 2,5MB large and in order to download it one must login to connect using Live ID. Here is address on connect, and here is official announcement . Installation is easy, quick and straightforward and on my dev machine it doesn’t ask for install DVD.

    Best Practices in Javascript Library Design

    September 27, 2007

    Last night, I’d the chance to look at John Resig’s talk on the Best Practices in Javascript Library Design.

                    This talk explores all the techniques used to build a robust, reusable, cross-platform JavaScript Library. We’ll look at how to write a solid JavaScript API, show you how to use functional programming to create contained, concise, code, and delve deep into common cross browser issues that you’ll have to solve in order to have a successful library. John Resig is a JavaScript Evangelist, working for the Mozilla Corporation, and the author of the book ‘Pro Javascript Techniques.’ He’s also the creator and lead developer of the jQuery JavaScript library and the co-designer of the FUEL JavaScript library (included in Firefox 3).

    1. jQuery - that simplifies how you traverse HTML documents, handle events, perform animations, and add Ajax interactions to your web pages.
    2. Fuel - Firefox User Extension Library – is a JavaScript Library designed to help developers build extensions using terminology and interfaces that are familiar to them. It will be usable in Firefox 1.5-3.0.

    Download jQuery

    .NET Framework 3.5 New Features

    June 13, 2007

    Thom has a table of .NET Framework 3.5 features, Daniel also has a good list of the new stuff in .NET Framework 3.51. System.Data.Linq.dll – The implementation for LINQ to SQL.
    2. System.Xml.Linq.dll – The implementation for LINQ to XML.
    3. System.AddIn.dll, System.AddIn.Contract.dll – New AddIn (plug-in) model.
    4. System.Net.dll – Peer to Peer APIs.
    5. System.DirectoryServices.AccountManagement.dll – Wrapper for Active Directory APIs.
    6. System.Management.Instrumentation.dll – WMI 2.0 managed provider (combined with System.Management namespace in System.Core.dll).
    7. System.WorkflowServices.dll and System.ServiceModel.Web.dll – WF and WCF enhancements (for more on WF + WCF in v3.5 follow links from here).
    8. System.Web.Extensions.dll – The implementation for ASP.NET AJAX (for more web enhancements, follow links from here) plus also the implementation of Client Application Services.
    9. System.Core.dll – In addition to the LINQ to Objects implementation, this assembly includes the following: HashSet, TimeZoneInfo, Pipes, ReaderWriteLockSlim, System.Security.*, System.Diagnostics.Eventing.* and System.Diagnostics.PerformanceData.

    Workflow Enabled Services – Process and Messaging together Web 2.0 Friendly and AJAX Enabled WCF Services Visual Studio Developer Tools for WF, WCF and in Visual Studio “Orcas”
    Using workflow to provide for durable and long-running services. New Tools, WF activities and new programming model classes have been added to simplify building workflow-enabled services using WF and WCF. This allows a .NET Framework developer to build business logic for a service using WF and expose messaging from that service using WCF. These improvements not only provide tools for this scenario but they reduce the amount of glue code that was previously required. Ajax is a web development technique for making asynchronous exchanges of small amounts of data between browser and web service calls from the browser client script to the web server. A programming model is provided for building Ajax style web applications using WCF services. An HTTP programming model is also provided allowing for REST style web services. Visual Studio”Orcas” has built in tools for web service authoring with WCF and for building workflow enabled software with WF. There are new project templates for WCF services, WF business logic, workflow enabled services, and AJAX services. The templates are conveniently set up to compile and run even before any custom code is added enabling .NET developers to get going quickly. There are also numerous other tools for developing with WF, WCF and WPF.
    More WS-* Standards Support RSS and ATOM Syndication API Partial Trust Support for WCF Hosting
    Implementation in WCF of the latest OASIS specifications Web Services Atomic Transaction (WS-AtomicTransaction) 1.1, WS-ReliableMessaging 1.1, WS-SecureCOnversation and Web Services Coordination (WS-Coordination) 1.1. Applications built using WCF will be able to easily expose syndicated data which can be consumed by an RSS or ATOM reader. Partial trust on the vlient is provided for ASMX parity focussing mainly on partially trusted WCF applications deployed through click-once. Support is provided for basic HTTP binding provided that the application runs in the Internet zone permissions and have granted the apropriate WebPermission. Secure communication is possible through transport security only. All other features are not available to partially trusted applications including hosting services, duplex communications, non-HTTP transports, WS-* protocols and any WF use.
    Rules Data Improvements Built-in WPF tools for Visual Studio “Orcas” Additional WPF Features and Improved Performance
    The rules engine in WF is improved to add support for C# 3.0 extension metods, and for operator overloading . Also the ”new” operator is added to compete the base set of expression types. The Visual Studio designer for WPF was previously released as a CTP. It is not integrated into the development environment and is significantly improved. WPF has smoother animations, faster startup and better overall performance. There are also new data types available for data binding with LINQ. Better integration support is now provided for with codename “WPF/E”.
    Faster .NET Framework execution Base Class Library – New Class Additions Language Integrated Query (LINQ)
    1. Faster garbage collection2. Smarter, faster NGen requiring smaller working set RAM3. 64 bit client improvements4. ThreadPool performance improvements5. Security check caching during NGen 6. BigInteger, HashSet and DateTime2 types7. NSA Suite ”B” and FIPs compliant cryptography8. Lightweight Reader/Writer Lock Classes9. Anonymous and Named Pipes IO Classes10.   Integration with Event Tracing for Windows11.   New Addin hosting model for extensibility Deep integration of LINQ data-awareness into the programming languages and framework.

    “Astoria” – Data Services For ASP.Net Ajax and Silver light

    May 3, 2007
    A new framework to make it easy for use to build data services to make it easy for developers to get data for a rich web client using ASP.Net Ajax and Silverlight, Microsoft Codename “Astoria”.By using URL’s we can simply get data from our data source, for example let assume we want to get an Order entity, we can simply write:http://webserver/data.svc/OrdersIf we want to get an specific Order we can write:

    http://webserver/data.svc/Orders[Pizza]

    There are several things we can do, like sorting, using “property path” to get child entities, we can use paging etc.Currently Astoria can represent data in plain XML, JSON and in a subset of RDF and XML.For example if we get the data as XML it could look like:

    <DataService xml:base=”http://myserver/data.svc”> 

           <Orders> 

                      <Order uri=”Orders[Pizza]“>  

                                    <OrderID>1</OrderID>   

                                      <ShopName>Domino</ShopName>   

                                      <ContactName>Johnson</ContactName>   

                                       <ContactTitle>Sales Manager</ContactTitle>   

                                       <Address>#15, Kakkanji Street, Gandhi Nagar</Address>   

                                        <City>Chennai</City>   

                                        <Region>Tamil Nadu</Region>   

                                       <PostalCode>600072</PostalCode>   

                                       <Country>India</Country>   

                                         <Phone>91-044-220074321</Phone>   

                                        <Fax>91-044-220074321</Fax>   

                                        <OrderDetails href=”Order[Pizza]/OrderDetails” mce_href=”Order[Pizza]/OrderDetails” />  

                       </Order> 

            </Orders>

    </DataService> 

     Astoria uses the ADO.NET Entity Framework. With the Entity Framework we could use EDM schemas and map our entities against a relational data source.

    Update:

    Here’s the description from the Astoria Project Site (where you can get the CTP today): http://astoria.mslivelabs.com/.

    Description:

    “The goal of Microsoft Codename Astoria is to enable applications to expose data as a data service that can be consumed by web clients within a corporate network and across the Internet. The data service is reachable over HTTP, and URIs are used to identify the various pieces of information available through the service. Interactions with the data service happens in terms of HTTP verbs such as GET, POST, PUT and DELETE, and the data exchanged in those interactions is represented in simple formats such as XML and JSON. “

    Here’s a great video by Pablo Castora: http://channel9.msdn.com/ShowPost.aspx?PostID=306736#306736

    Web Developers Essential – The Web Client Software Factory

    May 2, 2007

    In the last week Fredrick wrote about the MVP pattern and controllers etc, he also wrote about his old page workflow framework. But if you want something similar and also want to use controllers/presenter then take a look at the Web Client Software Factory from the Patterns & Practices team. It will help us build really cool web apps. The Web Client Software Factory have a page flow Application Block that can be used  to create a page flow (similar to fredrick framework, but the Page Flow Application Block use  .Net .3.0’s Workflow foundation and don’t support Shared transitions between different page flows.). But most of you probably already have .Net 3.0 installed (you can download it here). 

    Pass parameter to Infopath 2007 browser forms using Business Data Catalog

    April 30, 2007

    Last week, I got an excellent oppurtunity to work with Infopath 2007 and Business Data Catalog(BDC). As per requirement, need to pass employee personal information id to infopath forms. Infopath form should pre-populate data from DB based on PersonalInfoID from Querystring.  Whether i pass a parameter to a form file in InfoPath 2007 or the Web browser, first i need to update the form template’s Loading event. The LoadingEventArgs class of the Loading event provides the InputParameters property. This property gets an IDictionary object, which contains any input parameters that are specified in the URL that is used to start a form file. Next, use the TryGetValue method of the IDictionary object that was returned by the InputParameters property to retrieve a parameter value. Then, use the SetValue method on an XPathNavigator object to set the corresponding node value in the form file. The following example sets the Employee Name box to the value based on PersonalInfoID parameter that was passed in the URL that was used to start the form.  public void FormEvents_Loading(object sender, LoadingEventArgs e) {

    string personalInfoId = string.Empty;

    try    

    e.InputParameters.TryGetValue(”PersonalInfoID”, out personalInfoId);  

    } catch (Exception ex) {

    personalInfoId = ex.Message.ToString();

    } finally {

     …do some db calls…

    MainDataSource.CreateNavigator().SelectSingleNode (”/my:myFields/my: Name”, NamespaceManager).SetValue(customerId);

    }

    Next, I must update the Business Data Catalog metadata file to include a custom action. So I’ve added as follows, which adds a custom action to the existing Employee entity (before the </Entity> end tag) that starts the status report form in the Web browser with a PersonalInfoID parameter.

    <Actions>   

        <Action Name=”Status Report” Position=”1″ IsOpenedInNewWindow=”true” Url=      “<i>My MOSS Server</i>/_layouts/formserver.aspx?xsnlocation=       /formservertemplates/statusreport.xsn&      openin=browser&PersonalInfoID={0}”>       

      <ActionParameters>           

                      <ActionParameter Name=”personalInfoID” Index=”0″/>       

        </ActionParameters>   

      </Action>

    </Actions>

    Now, if I would like to add save location(which user can save the form after submited to DB) as follows 

    http://mossserver/Employee Info/HR Response/Credit Response/Check In/_layouts/FormServer.aspx?XsnLocation=http://mossserver/FormServerTemplates/StatusCheck-In.xsn&SaveLocation=http://mossserver/Employee Info/HR Response/Credit Response/Check In /Personal CheckIn&Source=http://mossserver/Employee Info/HR Response/Credit Response/Check In /Pages/default.aspx&DefaultItemOpen=1   - Kindly note that, I’ve long URL which more than675 characters. If we would like to add this URL into our custom action, BDC services turncated longest URL because of MaxLength.Now, how we can resolve this problem? – I got an idea, why don’t to apply URLMapping functionality to this scenario. So finally I’ve added URL Mapping element to Web.Config as follows:       <urlMappings>        

                      <add url=”~/sample.aspx” mappedUrl=”~/_layouts/FormServer.aspx?XsnLocation= /FormServerTemplates/StatusCheck-In.xsn&SaveLocation= /Personal CheckIn&Source= /Pages/default.aspx&DefaultItemOpen=1&Perso nalInfoID={0} ” />     

        </urlMappings> 

    Ahrr….Finally, we solved the problem by adding URL mapping. Hatzz off to ASP.NET team J

    Also, here’re some pointer really help me to solve this issue.

    http://msdn2.microsoft.com/en-us/library/bb406004.aspx 

    http://wm.microsoft.com/ms/msdn/office/2007officevisualhowtos/infopathparameters.wmv – Excellent videocast regarding this context 

    XML Notepad 2007 for BDC XML Definition?

    April 20, 2007

                  One of the hurdles in BDC development is creating XML Metadata Definition file. Microsoft has not yet provided any tool to create XML Definition file – But lot of third party products (like MetaMan) available to create XML Definition file for BDC applications. But it can’t satisfy our BDC thrist! – If you folks would like to create it by yourself using any XML tools, then obvisouly you need to go for XML Notepad 2007. It is really wonderful tool to create/customize XML files. Which provides a simple intuitive User Interface for browsing and editing XML documents, one of the biggest new feature is IntelliSense, which is driven by XML Schema information provided via the SchemaCache. For example, if your element or attribute is defined by an XSD simpleType and this simpleType contains a list of enumeration facets, then you can select it from a drop-down.

    Screenshot:

     

    Excellent design from Microsoft Team(Chris) - See XML Notepad 2007 Design for information about how this application is built. The downloadable installer for version 2.3 is available.  

    Essential ToolBox for .NET Developers

    April 14, 2007

    I got a chance to work on following awesome tools. So, I would like to share my experience and tips using these tools.

    However, there are a number of third-party SQL query editors that offer the features developers today take for granted. One such product is ApexSQL Edit version 2005.03, by ApexSQL. ApexSQL Edit boasts a number of time-saving features, the most impressive one being the Object MemberLists, which provides functionality much like IntelliSense. Type a query, like “SELECT * FROM…”, and immediately a drop-down list appears listing the database’s tables. This feature also extends to columns, variables, parameters, procedures, and so forth. Once you start writing queries using MemberLists, having to go back to an editor without it feels like running underwater. This feature alone could save you countless keystrokes and typos and makes ApexSQL Edit an interesting tool for any developer’s toolbox.

    Write, Test, or Execute Queries
    Source Control : Microsoft has long offered developers Visual SourceSafe®, which was last upgraded with the Visual Studio 2005 release. Now, with Visual Studio Team System, Microsoft has released another source control tool, one designed specifically for supporting much larger developer teams.


    The TortoiseSVN Interface

    One such popular open-source offering is Subversion version 1.4.2. Like other such tools, Subversion provides a centralized repository for storing source code and maintains a history of changes. Subversion can be configured to support access to its repositories through HTTP and HTTPS, enabling remote developers to interface with the source code repository. And Subversion also supports both the “check-in, modify, check-out” and “modify and merge” workflows.Fortunately, an additional open-source project-TortoiseSVN-provides a more user-friendly, graphical interface, although there is no Visual Studio integration. However, TortoiseSVN is integrated with the Windows shell. Once you have established a working directory for a particular Subversion repository, you can lock, merge, update, diff, or view statistics for any file by right-clicking on it in Windows Explorer and choosing the appropriate option from the TortoiseSVN context menu. Don’t let TortoiseSVN’s lack of Visual Studio integration dissuade you from considering Subversion. In fact, soon after I started using Subversion, I found the Windows shell to be a more intuitive interface for working with the underlying source control system than the Visual Studio IDE.

    Regular Expression Editor: For developers new to regular expressions, the mishmash of text and special characters can quickly lead to incomprehensible gobbledygook. When creating a regular expression pattern in code using Visual Studio®, there’s no tool support. Gone are color syntax highlighting and IntelliSense®, and there’s no easy way to debug or test a regular expression pattern within Visual Studio. For more information, please have a look at Roy Osherove’s (weblogs.ASP.NET/rosherove) toolbox(tools.osherove.com)

    The Regulator