<?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>Armedia Blog &#187; Uncategorized</title>
	<atom:link href="http://www.armedia.com/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.armedia.com/blog</link>
	<description></description>
	<lastBuildDate>Thu, 02 Feb 2012 15:53:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>CONNtext: A Product Demonstration</title>
		<link>http://www.armedia.com/blog/2011/11/conntext-a-product-demonstration/</link>
		<comments>http://www.armedia.com/blog/2011/11/conntext-a-product-demonstration/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 16:29:49 +0000</pubDate>
		<dc:creator>Allison Cotney</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1937</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/S1M2QN8707k" frameborder="0" width="480" height="360"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/11/conntext-a-product-demonstration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personal Log, Stardate 65326.8</title>
		<link>http://www.armedia.com/blog/2011/11/personal-log-stardate-65326-8/</link>
		<comments>http://www.armedia.com/blog/2011/11/personal-log-stardate-65326-8/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 17:43:54 +0000</pubDate>
		<dc:creator>Scott Roth</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1930</guid>
		<description><![CDATA[For most of my professional life, I have kept a daily log of my activities. I use black and white marbled composition notebooks that you can buy at the office supply store for $2. They are nothing fancy, but they contain the record of problems I have solved, thoughts and ideas I have had, minutes [...]]]></description>
			<content:encoded><![CDATA[<p>For most of my professional life, I have kept a daily log of my activities. I use black and white marbled composition notebooks that you can buy at the office supply store for $2. They are nothing fancy, but they contain the record of problems I have solved, thoughts and ideas I have had, minutes of meetings I have attended, and interviews I have conducted over the course of my career. They are an invaluable knowledge bank. It&#8217;s fun &#8212; and sometime educational &#8212; to flip through the pages of the past and reflect on the problems and solutions contained in those books. In addition, I have found that history does in fact repeat itself. Having solved a problem once, I can return to the solution in my logbook every time it reoccurs in the future.</p>
<p>For a long time I have resisted the urge to convert to keeping my log on the computer in electronic form. First of all, I&#8217;m not that good of a typist so I often get distracted correcting spelling when I should be letting notes, conversations, and ideas flow through my hands to the page; I can write much quicker than I can type. Secondly, I like to draw simple pictures, arrows, boxes, etc. in-line with my notes to better express ideas and solutions; that is much more difficult on a computer.</p>
<p>There are certainly disadvantages to taking notes in a notebook with a pencil. I usually have to transcribe the information I collect or invent into reports or technical documents, which makes it seem like twice the work (It isn&#8217;t really, it&#8217;s reinforcing the information.). I also can&#8217;t full-text index a notebook &#8212; though I had a colleague who tried &#8212; to instantly find the page I am looking for. I have to browse through the pages.</p>
<p>The point is, regardless of the medium, I believe it is essential for all professionals to keep a log of some kind. Beyond the obvious benefits of keeping a record of activities, I believe there is something very therapeutic and cognitively-beneficial about taking the time to summarize your day&#8217;s activities, the solution you designed, or the brilliant idea you just had. You often learn something by explaining it to someone, in this case, yourself. Obviously our founding fathers believed that too since we have libraries full of journals from Adams, Jefferson and Washington (to name a few). And if you are a fan of <em>StarTrek</em> (you pick which flavor), you know that &#8220;logs&#8221; play an invaluable role in understanding other cultures, civilizations, and ourselves.</p>
<p>It is never too late to start. So, pick up a pencil, flip to a clean page, and record your most profound ideas &#8212; or just your daily activities. I think you will find it helps you grow as a professional in many ways.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/11/personal-log-stardate-65326-8/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Fast/Good/Cheap Rule of Software Development</title>
		<link>http://www.armedia.com/blog/2011/09/the-fastgoodcheap-rule-of-software-development/</link>
		<comments>http://www.armedia.com/blog/2011/09/the-fastgoodcheap-rule-of-software-development/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 18:43:26 +0000</pubDate>
		<dc:creator>Scott Roth</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Armedia]]></category>
		<category><![CDATA[content strategy]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1894</guid>
		<description><![CDATA[Triangles have been a staple of mathematics, architecture and engineering for centuries. They have also become important in software development by way of a project management concept. You may have heard of the &#8220;Fast/Good/Cheap&#8221; rule. This rule uses a triangle to depict and constrain the attributes of a project that are usually in conflict during [...]]]></description>
			<content:encoded><![CDATA[<p>Triangles have been a staple of mathematics, architecture and engineering for centuries. They have also become important in software development by way of a project management concept. You may have heard of the &#8220;Fast/Good/Cheap&#8221; rule. This rule uses a triangle to depict and constrain the attributes of a project that are usually in conflict during development: schedule, quality and budget. Ideally, a project should maximize speed (Fast), quality (Good), and efficiency (Cheap).</p>
<p>The rule of &#8220;Fast/Good/Cheap&#8221; states that a customer can choose only two of these attributes to maximize. The third, unchosen attribute, will naturally suffer. This is a physical constraint of a triangle, and a realistic constraint of a project.</p>
<p>If you consider the area of a triangle to be constant and represent the scope, or requirements of your software project, you can create numerous triangles to model the &#8220;Fast/Good/Cheap&#8221; rule. For example:</p>
<p><a href="http://www.armedia.com/blog/wp-content/uploads/2011/09/Good-Fast-Cheap-Triangles2.png"><img class="alignnone size-medium wp-image-1908" title="Good-Fast-Cheap Triangles" src="http://www.armedia.com/blog/wp-content/uploads/2011/09/Good-Fast-Cheap-Triangles2-300x166.png" alt="" width="300" height="166" /></a></p>
<p>Remember, the area of the triangle (scope of the project) must remain constant. Therefore, a change to any one side of the triangle necessarily affects the other two. The implications are these:</p>
<ul>
<li>Good &amp; Fast = Expensive. High quality software will be produced very quickly to meet a customer&#8217;s time constraint. However, this approach will require additional staff, extended work hours, additional testing, etc. &#8212; all things that will drive up the cost of the project.</li>
<li>Good &amp; Cheap = Slow. High quality software will be produced; however the project tempo will be slow. Other projects will take priority over this project and interrupt its schedule frequently.</li>
<li>Fast &amp; Cheap = Poor Quality. The project will be done quickly and on a shoe string budget, and you will get what you pay for. Don&#8217;t expect all of the requirements to be met and expect some bugs and unpredictable behavior because the development team didn&#8217;t have the time or resources to thoroughly design or test the software.</li>
</ul>
<p>In reality, everyone wants Good &amp; Fast, but can&#8217;t afford it so they settle for Fast &amp; Cheap. Then one of two things happen:</p>
<ol>
<li> Inferior, non-compliant, buggy software is delivered that the customer is unhappy with and your company gets a bad reputation for poor quality.</li>
<li>You and your staff absorb all the cost and overtime required to produce quality software on an unrealistic schedule with an insufficient budget (because you are perfectionists). You are lauded as heroes, but the project actually cost you money instead of making you money.</li>
</ol>
<p>Ideally, you strive to strike a balance among these competing constraints, although some projects will justifiably favor one attribute over another.</p>
<p>All complex systems are difficult to model, and the software development process is no exception. This very simple model can be used to easily and quickly demonstrate to customers how changes to any of a project&#8217;s constraints (Fast/Good/Cheap) will effect the other constraints of the project. I have used this model numerous times to demonstrate how these constraints relate and the consequences of changing or over emphasizing one of them. A picture is worth a thousand words and customers usually get the &#8220;Fast/Good/Cheap&#8221; rule immediately once you draw the triangle. And best of all, beyond its obviousness, there is a lot of solid project management research and data to validate it. I will leave that reading to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/09/the-fastgoodcheap-rule-of-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slides from the CONNtext Webinar</title>
		<link>http://www.armedia.com/blog/2011/09/slides-from-the-conntext-webinar/</link>
		<comments>http://www.armedia.com/blog/2011/09/slides-from-the-conntext-webinar/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 17:43:47 +0000</pubDate>
		<dc:creator>Allison Cotney</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Armedia]]></category>
		<category><![CDATA[Asset Management]]></category>
		<category><![CDATA[CONNtext]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[FileNet]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Maximo]]></category>
		<category><![CDATA[Maximo and FileNet integration]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1837</guid>
		<description><![CDATA[Last week, Armedia held a webinar demonstrating the key features of CONNtext, our IBM Maximo and FileNet integration solution. The CONNtext solution enables real-time bi-directional synchronization between IBM&#8217;s Maximo Asset Management suite and IBM ECM suite The solution provides the capability to leverage controlled documents to handle asset configuration management in real-time. This is achieved [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, Armedia held a webinar demonstrating the key features of <a title="CONNtext product page" href="http://www.armedia.com/conntext.php" target="_blank">CONN</a><em><a title="CONNtext product page" href="http://www.armedia.com/conntext.php" target="_blank">text</a>, </em>our IBM Maximo and FileNet integration solution.</p>
<p>The CONN<em>text</em> solution enables real-time bi-directional synchronization between IBM&#8217;s Maximo Asset Management suite and IBM ECM suite The solution provides the capability to leverage controlled documents to handle asset configuration management in real-time. This is achieved with minimal configuration and requires minimal end-user re-training. CONN<em>text</em> helps ensure the maintenance staff works with the correct documentation each and every time, eliminating re-work and helping to ensure compliance with regulatory standards. The end result is the effective and efficient utilization of assets along with significantly reducing the risk of fines, penalties, regulatory agency enforced shut-down and catastrophic<br />
failures.</p>
<p>If you are stressing out right now because you missed last weeks webinar demonstrating this innovative solution, don’t worry. Armedia has loaded the slides from the presentation <a title="CONNtext Presentation" href="http://www.slideshare.net/ArmediaLLC/conntext-presentation" target="_blank">HERE</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/09/slides-from-the-conntext-webinar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content Security: The Forgotten Project Feature</title>
		<link>http://www.armedia.com/blog/2011/09/content-security-the-forgotten-project-feature/</link>
		<comments>http://www.armedia.com/blog/2011/09/content-security-the-forgotten-project-feature/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 15:06:27 +0000</pubDate>
		<dc:creator>khusain</dc:creator>
				<category><![CDATA[Content Security]]></category>
		<category><![CDATA[ECM Industry]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[ECM]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1729</guid>
		<description><![CDATA[Throughout my many years of experience in the system and software development area, I have noticed one major thing that always seems to be at the top of requirements but becomes relegated to somewhere lower in priority as the project proceeds, only to come back to the forefront as testing and implementation time approach.  This [...]]]></description>
			<content:encoded><![CDATA[<p>Throughout my many years of experience in the system and software development area, I have noticed one major thing that always seems to be at the top of requirements but becomes relegated to somewhere lower in priority as the project proceeds, only to come back to the forefront as testing and implementation time approach.  This is security.   Even in today&#8217;s time, with CISSP and CSSLP professionals everywhere, security seem to still take a back seat in the development process.</p>
<p>Most projects include building security, network security, and various other types of security policies which are generally inherited from the environment where the task is occurring and are fairly defined and stable.  Controlling access to the building, access to the network, access to files and folders, and general access to computing resources are all well established.  However, when we sit down and try to implement some form of security into the software we develop, it gets left out or deferred and needs to be added in at the last moment.  Why is it deferred? Well, how many requirements are really created around security?</p>
<p>Let’s throw a few examples out there:</p>
<ul>
<li>The system will only permit access to authorized users</li>
<li>The authorized users will only be allowed to perform tasks they have been granted</li>
<li>The authorized users will only be able to see the data they are allowed to work on</li>
<li>The system will provide role and group based access controls</li>
<li>The system will log all unauthorized access to data (is this security or logging –you decide)</li>
<li>The system will log access to all data (Again, security or logging? Well, both)</li>
</ul>
<p>These are very similar from project to project and pretty high level and very few, usually a dozen or so, but, without them in place, the system is essentially, non-functional.  Well, with the other functional requirements, what the user wants to see and do, which usually number in the hundreds, it’s easy to see why the security component gets little attention.  Except for the initial log-in, the users don’t really experience what is happening in the background, except for an odd warning about doing something they aren’t allowed to do.  A correctly implemented security model won’t even let the user know that features exist beyond what they are permitted to see.  What prevents them from seeing hidden features by glancing over their co-workers shoulder – well, that’s another issue.</p>
<p>So what happens when one of the most critical components of an application is not designed in from the onset? Besides chaos, a lot of redevelopment which is required to implement the missing feature, which leads to missing project deadlines and at worst not meeting implementation times. This is especially true for Fixed Firm Price (FFP) contracts where this can be disastrous to the bottom line, not to mention project failure – after all who will accept a system that cannot meet their basic requirements. Things are changing for the better, as I have seen projects now that have distinct security implementation team which interacts with the other development teams rather than being a side-attraction.</p>
<p>Naturally, for small scale web projects which are usually secured with 2-factor authentication (userid and password), the implementation is fairly simple and can be supported by the OS or a very simple database table.   If, however, you also need to control what the user can do (functionally) once authenticated, it starts becoming complex as you now have to maintain Access Control information for the user as well.  If you now further need to control what data they user can see, use, or modify, the security implementation gets even more complex.   Finally, if you need to implement CAC card integration, IP based authentication, CPU based authentication, or N-factor authentication (more than just a User ID and PWD, such as secure tokens, bio-metric, key-card …) , then additional complexities arise which need to be implemented in code or at the enterprise IT level.  Even now, we still haven’t addressed any encryption and data security requirements that could exist (ie. The system shall encrypt all personal data – does that just mean when it’s stored or also when transmitted??).  It is for this reason that security requirements must get high priority in any project where application, data, and system security are paramount, with the design engaged from the onset of the project.</p>
<p>The actual size of the security team will vary depending on the size of a project, but at least a single resource, with knowledge on all aspects of security (yes all, not just software), should be assigned as the single point of contact.  This person/team, throughout the project, must be involved intimately at the architectural level and will have the final say in any security testing scenarios.  By being involved at the architectural level, no design will be allowed to move forward until the security implementation has been vetted and approved.  Regardless of the security implementation, the primary goal is to confirm that all teams are compliant, which in essence translates to a compliant and secure application.  Whatever tests are needed to validate compliance should be defined during the design process as there is no better way to validate a system then to penetrate it by knowing its internals.  If you know how the security model is implemented and are still unable to compromise it, and then be default, the system is secure.  Open source systems fall into this category since all their code is accessible; everyone knows how to try to gain access, however, due to a well-implemented security model, they cannot.</p>
<p>At this point, we can keep going on about how imperative it is to make security design a high priority in any application design, or for that matter, any system design.  How would you like it if the car you bought didn’t have a lock or key to get it going?  Instead, I’ll just finish up with stressing that security is not a feature that can be put on the back-burner.  Everyone talks about it – you hear about cyber-security everywhere these days, but when it comes to the actual implementation, it gets compromised and inadequately implemented.  Considering that the raw power of computers is such that most systems can be compromised by simple attacks (such as brute force attacks), effort must be put into not just installing measures at the front gate, but beyond that as well to control losses if a breach were to occur.  It is also essential that management personnel understand this when planning a project to account for the level of effort it entails and to ensure that it is effectively budgeted for the entire project duration.</p>
<p>Now that we have addressed the issue of security in software system (and other systems), where do we go from there?  The best security is achieved by informing and teaching the user base, from the users up through the developers and managers.  I have covered a lot of items in this quick prelude to discussing security in information systems, but each should be followed with further details and training.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/09/content-security-the-forgotten-project-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Insider&#039;s Perspective: The CPSC Project</title>
		<link>http://www.armedia.com/blog/2011/08/an-insiders-perspective-the-cspc-project/</link>
		<comments>http://www.armedia.com/blog/2011/08/an-insiders-perspective-the-cspc-project/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 17:28:01 +0000</pubDate>
		<dc:creator>mseth</dc:creator>
				<category><![CDATA[ECM Industry]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[Records Management]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CPSC]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[Migration]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1713</guid>
		<description><![CDATA[It was in the fall of 2010 when I got a call that began my engagement on one of the most interesting projects that I have worked on in recent times. The situation, the project was with one of the leading product safety regulators in the world.  The international arm of the organization was leading [...]]]></description>
			<content:encoded><![CDATA[<p>It was in the fall of 2010 when I got a call that began my engagement on one of the most interesting projects that I have worked on in recent times.</p>
<p>The situation, the project was with one of the leading product safety regulators in the world.  The international arm of the organization was leading an initiative to create a global information pool for product safety recall information in an effort to make product safety efforts across the world more coordinated and effective.  This would be a one stop, one shop view to “any recall &#8211; any where &#8211; any time” product safety recall information.</p>
<p>Armedia was asked to perform an initial assessment of what it would take a build a global recall information pool, build a roadmap for the process and structure the approach for the global consortium.  This was a pure play Information Technology (IT) strategy project where the focus was on creating an IT approach to meet a complex business situation.</p>
<p>What I loved about the project was the challenge of a highly unstructured business situation where the project sponsors understood the pain and knew the desirable outcome, but they had little understanding of what needed to be done.</p>
<p>Building an approach for an IT system in the area of product safety was a challenge, as I soon discovered.   Several factors contributed to the challenge, they included,  (a) plethora of legacy IT deployments, (b) changing data structures and data definitions over time, (c) different data structures and definitions across countries, and (d) project execution headwinds (Note: Our team ran into a situation of competing for attention amongst different priorities both within the organization and with 3<sup>rd</sup> parties outside, in this case the consortium of product safety organizations from other countries).</p>
<p>Sound familiar?</p>
<p>So we walk into the situation not knowing all the pieces of the puzzle and the Armedia team immediately began an assessment of the situation.  Quickly the team structured the analysis into the following topical areas:</p>
<ol>
<li>Strategic</li>
<li>Governance and Oversight</li>
<li>Functional Scope Definition</li>
<li>Usability, Data Search, and Discovery</li>
<li>Architecture</li>
<li>Deployment and Execution</li>
<li>Operations</li>
</ol>
<p>Next came a deep dive into each area to develop specific recommendations and a roadmap at a granular level. Data categorizations, normalization and data definitions were all important areas of focus given the complexity of handling these items across different jurisdictions. I believe that our team’s recommendations around this area were excellent and well received by the international community, especially because our approach required minimal impact to current product safety operations, which was a key requirement by the sponsors.</p>
<p>We brought value in terms of providing structure and simplification for execution to what seemed at the outset to be a complex problem.  The Armedia report on “Considerations for Pursuing Global IT Interoperability for Publicly Available Product Recalls ” was published by the OECD (Organization of Economic Development) and has been accepted as the strategic guidance document by the international product safety working party set-up for the purpose of creating the global recall pool. The execution work on report recommendations has started and is currently underway.</p>
<p>This complex business issue was in need of a technology execution plan that was intentionally kept simple, and yet met the unique requirements of the customer. My team and myself guided our efforts in order to meet these criteria, and in the end the Armedia team successfully developed recommendations that provided both strategic and efficient solutions to this international IT challenge.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/08/an-insiders-perspective-the-cspc-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Minding the Engineering and Maintenance Information Gap</title>
		<link>http://www.armedia.com/blog/2011/08/minding-the-engineering-and-maintenance-information-gap/</link>
		<comments>http://www.armedia.com/blog/2011/08/minding-the-engineering-and-maintenance-information-gap/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 18:06:45 +0000</pubDate>
		<dc:creator>jschivera</dc:creator>
				<category><![CDATA[Asset Management]]></category>
		<category><![CDATA[IBM FileNet]]></category>
		<category><![CDATA[Maximo]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[IBM]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1674</guid>
		<description><![CDATA[Phillip Crosby, notable business man and management theory author, asserted, “If anything is certain, it is that change is certain. The world we are planning for today will not exist in this form tomorrow.” When applied to managing a company’s enterprise asset base, truer words were never spoken .  Change is pervasive and anyone who [...]]]></description>
			<content:encoded><![CDATA[<p>Phillip Crosby, notable business man and management theory author, asserted,<em> “If anything is certain, it is that change is certain. The world we are planning for today will not exist in this form tomorrow.” </em>When applied to managing a company’s enterprise asset base, truer words were never spoken .  Change is pervasive and anyone who has ever worked in this environment is aware of the challenges of translating an engineering modification package into actual changes to the physical assets and the maintenance supporting infrastructure.</p>
<p>Closing this information gap is the idea behind the <em>CONN</em>text solution, bridging the gap between IBM&#8217;s Maximo Asset Management and IBM&#8217;s FileNet Content Management</p>
<p><strong>Different Lenses and Languages</strong></p>
<p>Engineering and maintenance staff view the their asset worlds through different lenses and languages. When engineers are assigned responsibility for a modification, they are envisioning a future or even abstract state. Typically they think of the change in terms of a system or at a functional level. They need to know the design requirements for the facility, applicable rules and regulations or industry codes , standards and requirements such as licensing basis analyses, specifications and calculations.On the other hand, the maintenance staff view the assets as they exist today, at the discrete component level and beyond.</p>
<p>Engineering conceives the change and is responsible for sending the requirements and instructions for implementing the change in the form of output documents such as installation drawings, specifications and procedures. With a different view of the facility that is function and design driven, engineering is likely not providing the change information with the level of detail that enables the maintenance staff to readily implement and maintain on a component level. In their world, every minute detail about a device is important and must be accounted for in order to properly perform maintenance.</p>
<p><strong>Different Tools</strong></p>
<p>With physical assets and information assets constantly in change and each having their own distinct lifecycles phases, managed in different systems, managed by different sets of people with different lenses, and changed at different times change coordination is a challenge . Engineering typically works within an enterprise content management (ECM) system that captures and stores such documents as design drawings, specifications, calculations, analyses, load studies and other controlled documents.  Within the ECM system the index, search and retrieval function is based on an information classification system derived by the engineering community in terms of how they think and work. What you might not always know is “all” the relationships that exist and are required in order to enact a given change. This knowledge is reliant to some extent on the engineer’s individual knowledge of how things operate on the component level within the plant: the minutiae of the maintenance world.</p>
<p>The maintenance community on the other hand typically uses a physical asset management system that is more focused on work order management. The strength of this type of system is the ability to handle ad hoc processes that span multiple departments. This kind of system assists in long- and short-term planning, preventive, reactive, and condition-based maintenance, schedule management, resource optimization and key performance monitoring. Within this system, maintenance information has been classified by terminology that resonates within their daily operational world.</p>
<p class="MsoNormal" style="line-height: 150%; margin: 0in 0in 0pt;"><strong>Framework To Bridge The Gap</strong></p>
<p>Our <em>CONN</em>text solution was designed to help bridge the gap between different views of the engineering and maintenance and the use of different information management systems by connecting IBM Maximo with IBM FileNet Content Management.</p>
<p><em>CONN</em>text operates within the existing user interfaces of Maximo and FileNet, meaning there is minimal user “retraining”. <em>CONN</em>text employs a document classification filtering scheme that identifies the organizational documents pertinent to maintenance. Once identified, <em>CONN</em>text is designed to help an organization further group those documents by maintenance terms to create views that enable automating the engineering to maintenance logic into a manageable process.</p>
<p>As a result, the Armedia <em>CONN</em>text solution bridges the two worlds and users can now:</p>
<ul>
<li>Access engineering drawings and documents within IBM Maximo without having to learn a new system.</li>
<li>Receive prompts to ensure that they are working with the most current version of the documents.</li>
<li>Have searchable access to unstructured documents within IBM Maximo such as video, pictures, and documentation .</li>
<li>Provide regulators with a complete work history of changes on the configuration of assets and their components.</li>
<li>Identify loopholes in previously captured document relationships.</li>
<li>Gain visibility into other changes and projects in process that are affecting the document that they are currently planning to change.</li>
</ul>
<p>Armedia’s CONNtext solution has been validated by IBM under the Information Management, Industry Frameworks  and Ready for Tivoli programs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/08/minding-the-engineering-and-maintenance-information-gap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 25 Programming Errors</title>
		<link>http://www.armedia.com/blog/2011/07/top-25-programming-errors/</link>
		<comments>http://www.armedia.com/blog/2011/07/top-25-programming-errors/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 15:31:50 +0000</pubDate>
		<dc:creator>Scott Roth</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Quality Assurance]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1650</guid>
		<description><![CDATA[The 2011 CWE/SANS Top 25 Most Dangerous Software Errors report was published by the SANS Institute and MITRE in June (cwe.mitre.org/top25).  The report leveraged the SANS Institute&#8217;s Tops 20 attack vectors (www.sans.org/top20) and MITRE&#8217;s Common Weakness Enumeration (CWE) to develop a list of the most frequent and sever programming errors this year.  The report details [...]]]></description>
			<content:encoded><![CDATA[<p>The <em>2011 CWE/SANS Top 25 Most Dangerous Software Errors </em>report was published by the SANS Institute and MITRE in June (<a href="http://cwe.mitre.org/top25">cwe.mitre.org/top25</a>).  The report leveraged the SANS Institute&#8217;s Tops 20 attack vectors (<a href="http://www.sans.org/top20">www.sans.org/top20</a>) and MITRE&#8217;s Common Weakness Enumeration (CWE) to develop a list of the most frequent and sever programming errors this year.  The report details each error, how it is implemented, what the danger is, and practical ideas for identifying and mitigating it.  The report is a fascinating report to read &#8212; both its compilation and technical content &#8212; and well worth your time even if you are an experienced developer.  The report also suggests it would be a valuable read for software project managers, software  project customers, and educators.  I agree.</p>
<p>Not surprising, the top 25 most dangerous programming errors contain some well known programming mistakes that have been with us for years (decades, in fact).  For example, the first error discussed in the report is SQL Injection.  Using<br />
improperly escaped special characters in a SQL query, hackers can steal and/or highjack your data. Skeptical?  Ask Sony Pictures, PBS and MySQL.com, they were all victims of attack this year enabled by this common programming mistake.  It is<br />
unfortunate, because with a little effort, this programming vulnerability can be easily mitigated.</p>
<p>Also, still in the top 5 is the classic Buffer Overflow problem. This mistake allows hackers to inject more information into a field or variable than it can handle.  The resulting &#8220;overflow&#8221; can contain malicious code and grant hackers access to your system, plant viral code, or simply crash your system.  Buffer overflows have been around for decades.  Too bad, since these too can<br />
easily be corrected.</p>
<p>Other common mistakes include:  OS Command Injection, Cross-site Scripting, Hard Coded Credentials, Unrestricted File Uploads, bogus or flawed cryptography, and Open Redirects.  As detailed in the report, all of the errors are very simple to correct and prevent.  It would server everyone well &#8212; developers, testers, designers, managers and users &#8212; to be aware of<br />
these errors, how to identify them, and most importantly, how to mitigate them.  Give it a read, it is well worth your time:  <a href="http://cwe.mitre.org/top25">cwe.mitre.org/top25</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/07/top-25-programming-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project Estimating: Lesson Learned</title>
		<link>http://www.armedia.com/blog/2011/06/project-estimating-lesson-learned/</link>
		<comments>http://www.armedia.com/blog/2011/06/project-estimating-lesson-learned/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 17:03:17 +0000</pubDate>
		<dc:creator>Scott Roth</dc:creator>
				<category><![CDATA[ECM Industry]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ECM]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1551</guid>
		<description><![CDATA[Hi, this is Scott Roth.  I am new to Armedia and Armedia&#8217;s blog.  I have been watching the past few weeks as Dave, Tim and Judy have shared their cutting edge technology lessons learned with you.  Personally, I have found these posts incredibly insightful and had to scurrying off to Google more than once to figure [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, this is Scott Roth.  I am new to Armedia and Armedia&#8217;s blog.  I have been watching the past few weeks as Dave, Tim and Judy have shared their cutting edge technology lessons learned with you.  Personally, I have found these posts incredibly insightful and had to scurrying off to Google more than once to figure out what exactly they were talking about.  Well, this post won&#8217;t be that technical.  In fact, this post won&#8217;t be technical at all.</p>
<p>I&#8217;ve been in the software development business for 20 years.  Over the course of those years I have been involved in a lot of proposals, project plans, project re-plans, and estimating exercises.  I have used a variety of approaches and processes from very rigid, overly-documented approaches, to looser, Agile approaches to develop estimates.  One thing I have seen, regardless of the approach, is that project plans rarely reflect reality.  I have observed three frequent oversights when  developing estimates that always seem to bite project teams once reality meets the plan.</p>
<ul>
<li>Developers will spend 5% of their time every week on project management activities.  Time and budget are not usually allocated to developers to attend status meetings or company staff meetings, write input for the project manager&#8217;s weekly report, mentoring, or help with business development efforts, but it happens.  So, figure that 2 hours of every week will be consumed by activities of this type.</li>
<li>Developers (especially those on the customer site) will spend another 5% of their time attending impromptu meetings,<br />
attending  ad hoc JAD design meetings, giving demos, supporting the project manager or customer, or dealing with customer drive-by meetings.<br />
Again, these are not activities easily anticipated or scheduled, but they occur all the time, and can negatively affect project performance.  Figure that 2 hours every week will be consumed by activities of this type.</li>
<li>Developers new to a project need time to get up to speed on the project, the requirements, the environment, the tools, the processes and practices, the rhythm of development, and the project culture.  Don&#8217;t expect developers &#8212; even senior, seasoned developers &#8212; to be 100% productive from day 1.  Expect that it will take at least 40 hours for a developer to settle into the project  before he will be as productive as the rest of the team.  Schedule tasking accordingly.</li>
</ul>
<p>I know it doesn&#8217;t seem like much, but over the course of a 5 week sprint, a team of 5 could lose 100 hours to these otherwise “invisible tasks”!  And, adding team member #6 will not immediately improve performance.</p>
<p>I mention these things because when I (and I suspect most project planners) sit down to estimate development times, we tend to estimate in a vacuum.  What I mean is, when asked how long it will take to develop Widget X or complete Requirement Y, we tend to give estimates that assume a perfect environment, the steady state of the universe, and that developers<em> never get distracted by other project activities</em>.  Or, that developers can be dropped into running projects and be 100% productive from the word &#8220;go&#8221;.</p>
<p>Hedging your task estimates by 10% and easing new developers into running projects can give your project plans a little buffer and more accurately reflect reality.  This advice will certainly not be popular with project managers or business development folk who continually strive for lower costs.  However, it may be to everyone&#8217;s advantage &#8212; yours and your customer&#8217;s &#8212; to produce a realistic project plan that can be met, as opposed to apologizing half way through the project that you have run out of resources for no ascertainable reasons.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/06/project-estimating-lesson-learned/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CMIS, SharePoint 2010, and file checkouts</title>
		<link>http://www.armedia.com/blog/2011/05/cmis-sharepoint-2010-and-file-checkouts/</link>
		<comments>http://www.armedia.com/blog/2011/05/cmis-sharepoint-2010-and-file-checkouts/#comments</comments>
		<pubDate>Wed, 25 May 2011 12:36:49 +0000</pubDate>
		<dc:creator>dmiller</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1120</guid>
		<description><![CDATA[SharePoint 2010 is the first SharePoint with a CMIS adapter.  SP 2010 offers a Web Part to request data from other CMIS servers (e.g. Alfresco and Documentum), and a CMIS producer to offer data to CMIS clients (e.g. Apache Chemistry). Theoretically this means you can write ECM applications targeting SP 2010, Alfresco, and Documentum using [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sharepoint.microsoft.com/en-us/Pages/default.aspx">SharePoint 2010</a> is the first SharePoint with a <a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis">CMIS </a>adapter.  SP 2010 offers a Web Part to request data from other CMIS servers (e.g. <a href="http://wiki.alfresco.com/wiki/CMIS">Alfresco </a>and <a href="https://community.emc.com/community/labs/cmis">Documentum</a>), and a CMIS producer to offer data to CMIS clients (e.g. <a href="http://chemistry.apache.org/">Apache Chemistry</a>).</p>
<p>Theoretically this means you can write <a href="http://en.wikipedia.org/wiki/Enterprise_content_management">ECM </a>applications targeting SP 2010, Alfresco, and Documentum using only Chemistry (or some other CMIS application), the same as you can write database applications using only JDBC (and the vendor&#8217;s JDBC driver).  How well does it work in practice?</p>
<p>Actually, it seems to work pretty well, especially if your application needs can be expressed using the operations supported by CMIS&#8230; to some extent CMIS is a lowest common denominator.  The vendor&#8217;s specific tools (SharePoint Web Services, Alfresco Explorer and Share, DFC / DFS) certainly expose much more of the vendor&#8217;s unique functionality.  CMIS supports repository, navigation, object, versioning, multifiling, ACL, policy, discovery, and relationship services, via WSDL and REST bindings.</p>
<p>The CMIS standard defines the above services, and also defines bindings for <a href="http://www.w3.org/TR/wsdl">WSDL</a>, and <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST </a>(using the Atom protocol).  Apache Chemistry provides a unified API, such that you specify WSDL or REST when you connect to the repository, and then use the same Chemistry API either way.  Chemistry translates your API calls into the appropriate WSDL or REST requests.</p>
<p>For my project, I wanted to use the REST binding, since REST requests tend to be less verbose than WSDL, hence sending less traffic over the wire.  Also I have more experience with REST, since my project is using Spring MVC to publish REST services.</p>
<p>So we tried connecting to SP2010 using Chemistry&#8217;s REST bindings.  This was no trouble, as soon as we figured out the right URL to use (something like this: http://&lt;sp2010_url&gt;/_vti_bin/cmis/rest/&lt;list_or_library_guid&gt;?getRepositoryInfo).  Chemistry&#8217;s <a href="http://chemistry.apache.org/java/opencmis-cookbook.html#connecting_to_a_cmis_repository">cookbook page</a> was a big help.  Then we tried querying the repository, listing folders, listing folder contents, creating files, and retrieving files.  Everything worked great!  CMIS looked really awesome!</p>
<p>Then we tried checking out a file.  Wham!  We ran into a brick wall here.  SP2010 always returned an HTTP 400 &#8220;bad request&#8221;, no matter what we tried.  I traced the REST request Chemistry sent to SP2010, and used the excellent <a href="https://addons.mozilla.org/en-US/firefox/addon/restclient/">Firefox REST Client</a> to send different versions of that request; no matter what, even when I sent invalid XML, I always got the same &#8220;bad request&#8221; response.</p>
<p>Time to work with Microsoft Support.  They reproduced the error, and are still working on the issue.  However, my support contact tried checking out over WSDL, and it worked fine!  I tried it myself; after jumping over a few hurdles to use Chemistry against SP2010 via WSDL, it worked fine!  So for now, we are stuck using the more-verbose WSDL protocol.  My MS support contact is still working with the REST support though.</p>
<p>As for the hurdles, Chemistry&#8217;s <a href="http://chemistry.apache.org/java/opencmis-cookbook.html#connecting_to_a_cmis_repository">cookbook page</a> came to the rescue again; the main issue is you have to download the WSDL from the SP2010 site yourself, and give Chemistry a file-based URL to the downloaded WSDL.  As far as I can tell, you can&#8217;t point Chemistry straight to SP2010&#8242;s WSDL; I always get a &#8220;401 Unauthorized&#8221; error.  It might be possible to use a normal HTTP client to download the WSDL locally, then point Chemistry to the dynamically-downloaded WSDL; I haven&#8217;t gotten that far yet.</p>
<p>I did make one change to Chemistry&#8217;s recipe; the cookbook page says to use Chemistry&#8217;s NTLM authentication module.  As far as I can tell, this requires the app server running your Chemistry-based application to run as a Windows domain user known to the SP2010 server.  But I want the app server to run on any Tomcat-supported OS.  Happily, it turns out you can use Chemistry&#8217;s standard authentication provider, and just provide a username and password like normal&#8230; obviously you would want to run such a connection over HTTPS!</p>
<p>Below is the code snippet I used to verify I could check out from SP2010 using CMIS (specifically Apache Chemistry) over WSDL:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.armedia.acm.ecm.service</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.HashMap</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.List</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Map</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.client.api.Document</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.client.api.ObjectId</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.client.api.Repository</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.client.api.Session</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.client.api.SessionFactory</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.client.bindings.CmisBindingFactory</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.commons.SessionParameter</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.chemistry.opencmis.commons.enums.BindingType</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.junit.Test</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #008000; font-style: italic; font-weight: bold;">/**<br />
&nbsp;*<br />
&nbsp;* @author millerd<br />
&nbsp;*/</span><br />
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SharePointWSDLTest<br />
<span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; @Test<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> connectViaWsdl<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">String</span> cwd <span style="color: #339933;">=</span> <span style="color: #003399;">System</span>.<span style="color: #006633;">getProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user.dir&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Working dir: &quot;</span> <span style="color: #339933;">+</span> cwd<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Default factory implementation of client runtime.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; SessionFactory sessionFactory <span style="color: #339933;">=</span> SessionFactoryImpl.<span style="color: #006633;">newInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Map<span style="color: #339933;">&lt;</span>string, String<span style="color: #339933;">&gt;</span> parameter <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HashMap<span style="color: #339933;">&lt;</span>string, String<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// User credentials.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">USER</span>, <span style="color: #0000ff;">&quot;some-domain<span style="color: #000099; font-weight: bold;">\\</span>some-user-account&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">PASSWORD</span>, <span style="color: #0000ff;">&quot;some-password&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// getting the wsdl via http doesn't work - 401 Unauthorized.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">//String wsdl = &quot;http://some-host/_vti_bin/cmissoapwsdl.aspx?wsdl&quot;;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// relative file-based URL works fine so long as you give it the</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// right relative path... ie. you have to know what the current</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// working directory is.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">String</span> wsdl <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;file:target/classes/acmv2-sharepoint.wsdl&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// Connection settings.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">BINDING_TYPE</span>, <span style="color: #003399;">BindingType</span>.<span style="color: #006633;">WEBSERVICES</span>.<span style="color: #006633;">value</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_ACL_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_DISCOVERY_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_MULTIFILING_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_NAVIGATION_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_OBJECT_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_POLICY_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_RELATIONSHIP_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_REPOSITORY_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">WEBSERVICES_VERSIONING_SERVICE</span>, wsdl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; parameter.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>SessionParameter.<span style="color: #006633;">AUTHENTICATION_PROVIDER_CLASS</span>, CmisBindingFactory.<span style="color: #006633;">STANDARD_AUTHENTICATION_PROVIDER</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Create session.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; Session session <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// This supposes only one repository is available at the URL.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; List<span style="color: #339933;">&lt;</span>repository<span style="color: #339933;">&gt;</span> repositories <span style="color: #339933;">=</span> sessionFactory.<span style="color: #006633;">getRepositories</span><span style="color: #009900;">&#40;</span>parameter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span> <span style="color: #003399;">Repository</span> rep <span style="color: #339933;">:</span> repositories <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Rep name: &quot;</span> <span style="color: #339933;">+</span> rep.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;; id: &quot;</span> <span style="color: #339933;">+</span> rep.<span style="color: #006633;">getId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Unapproved Files&quot;</span>.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span>rep.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; session <span style="color: #339933;">=</span> rep.<span style="color: #006633;">createSession</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">Document</span> doc <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Document</span><span style="color: #009900;">&#41;</span> session.<span style="color: #006633;">getObjectByPath</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/2011/05/03/10/31/19/log4j_103124.properties&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Doc ID: &quot;</span> <span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span> doc <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #339933;">?</span> <span style="color: #0000ff;">&quot; *NOT FOUND* &quot;</span> <span style="color: #339933;">:</span> doc.<span style="color: #006633;">getId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span> doc <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span> <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ObjectId co <span style="color: #339933;">=</span> doc.<span style="color: #006633;">checkOut</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Checked out doc ID: &quot;</span> <span style="color: #339933;">+</span> co.<span style="color: #006633;">getId</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">Repository</span> soleRepository <span style="color: #339933;">=</span> sessionFactory.<span style="color: #006633;">getRepositories</span><span style="color: #009900;">&#40;</span>parameter<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; session <span style="color: #339933;">=</span> soleRepository.<span style="color: #006633;">createSession</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/05/cmis-sharepoint-2010-and-file-checkouts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

