{"id":23234,"date":"2015-09-22T13:56:33","date_gmt":"2015-09-22T17:56:33","guid":{"rendered":"https:\/\/www.ixiasoft.com\/modernizing-user-assistance-2\/"},"modified":"2022-01-22T20:04:28","modified_gmt":"2022-01-23T01:04:28","slug":"from-mono","status":"publish","type":"post","link":"https:\/\/www.ixiasoft.com\/ja\/from-mono\/","title":{"rendered":"From Monolithicity to Flexibility, Using DITA Keyrefs"},"content":{"rendered":"<p>mono\u2022lith\u2022ic adjective \\m\u00e4-n\u0259-li-thik\\<\/p>\n<p>1. a: of, relating to, or resembling a monolith : huge, massive&#8230;<\/p>\n<p>2. a: cast as a single piece &lt;a monolithic concrete wall&gt; b: formed or composed of material without joints or seams &lt;a monolithic \ufb02 oor covering&gt; c: consisting of or constituting a single unit<\/p>\n<p>3. a: constituting a massive undifferentiated and often rigid whole &lt;a monolithic society&gt; b: exhibiting or characterized by often rigidly \ufb01 xed uniformity &lt;monolithic party unity&gt;<\/p>\n<p><em>Extract from &lt;http:\/\/www.merriam-webster.com\/dictionary\/ monolithic&gt;<\/em><\/p>\n<p>SAP is a leading provider of enterprise application software. Nearly 65 percent of the world\u2019s \ufb01nancial transaction revenue involves SAP software somewhere along the way. Traditionally, SAP\u2019s offerings such as SAP Customer Relationship Management or SAP ERP (SAP Enterprise Resource Planning) have not only been applications, but also end-to-end business suites: stable and reliable but at times also massive in scope and complexity, with major releases sometimes supported for twenty years and more. Monolithic may have been the word that came to mind when many people thought of SAP products.<\/p>\n<h3><span style=\"color: #fa740b;\">New Product Strategy<\/span><\/h3>\n<p>A few years ago, SAP expanded its offerings in \ufb01ve market categories: applications, analytics, mobile, database and technology, and the cloud. SAP is accelerating change as the IT industry undergoes a structural shift toward investment in software-based innovation. Legacy products were broken up to be more nimble and release faster. Big data, cloud computing, mobility, and social networking present a signi\ufb01cant market opportunity for SAP. Additionally, acquisitions complemented SAP\u2019s organic growth and boosted SAP in speci\ufb01c areas of strategic interest.<\/p>\n<p>The challenges of SAP\u2019s new product strategy were\u2014among other business units\u2014evident in the Technology and Innovation Platform (TIP) unit, the unit that has been developing SAP NetWeaver, the platform for SAP\u2019s classic product portfolio. SAP NetWeaver documentation was as monolithic as the platform itself. The core documentation for a single release contained some 50,000 information objects, at delivery strung together and interlinked in a single massive HTML library.<\/p>\n<p>Five major SAP NetWeaver releases, with dozens of support packages, would eventually be supported concurrently, and proliferating code lines had created a byzantine evolution of content across the documentation set. What a challenge for product documentation, then, when SAP NetWeaver\u2019s software components began to be decoupled, bundled in varying subsets within the larger platform, with asynchronous delivery cycles and, in some cases, shared components. The only way to deliver documentation was to componentize the documentation into sets mirroring the software components. If the linking binding them together could be reduced, they could be shuf\ufb02ed and re-packaged just like the SAP NetWeaver products.<\/p>\n<h3><span style=\"color: #fa740b;\">Componetization<\/span><\/h3>\n<p>Componetization began with the de\ufb01nition of a basic architectural model to re\ufb02ect the platform\u2019s software components, their hierarchy, and dependencies. SAP NetWeaver documentation was then segmented into dozens of building blocks, arranged in logical architectural layers from highlevel products, through their components, and down through application servers to databases. Information developers then spent months combing through their content, grouping topics into smaller subsets (one of which, nonetheless, contains 30,000 objects in two languages) and excising links that didn\u2019t re\ufb02ect product dependencies, to render their content more manageable in changing contexts.<\/p>\n<h3><span style=\"color: #fa740b;\">We Need a New CMS<\/span><\/h3>\n<p>Componentization wasn\u2019t SAP NetWeaver\u2019s only challenge, however. Analytic applications from BusinessObjects, a business intelligence \ufb01 rm that SAP acquired in 2007, began to integrate with products from the SAP NetWeaver portfolio. Shortly thereafter, a major upheaval emerged from within the TIP development unit: a revolutionary, in-memory platform called SAP HANA, which speeds up data transactions and analysis so radically, that in short order it became the foundation of SAP\u2019s technology strategy. From the start, it was delivered with SAP NetWeaver and SAP BusinessObjects components, but was slated to be associated with further SAP offerings.<\/p>\n<p>Within the TIP knowledge management unit (TIP KM), the once monolithic world of SAP had become a vast set of juggling balls, pins, and hoops, any combination of which might need to be kept up in the air at once. TIP KM was challenged to meet the product roadmap across two different environments and even more source \ufb01le formats, with SAP NetWeaver in Microsoft Word and propriety XML in SAP\u2019s legacy content management system, and SAP Business Object\u2019s Darwin Information Typing Architecture (DITA) content in another legacy content management system (CMS), in which key components were shortly to be deprecated.<\/p>\n<p>The roadmap was only going to involve more integration and diversi\ufb01 cation. So in 2012, in an effort to optimize, align, and unify all product documentation into a single content management solution, we made the decision to consolidate across the TIP unit, on DITA 1.2, in a new third-party CMS.<\/p>\n<p>Our primary requirements for the new CMS were these:<\/p>\n<ul>\n<li>Support for the type of content structuring model used in SAP NetWeaver componentization, to provide content building-blocks that could be assembled \ufb02exibly according to release requirements.<\/li>\n<li>Versioning capabilities to \ufb01t all release management strategies, without having to physically branch (copy) all content with each release. Given the massive quantities of topics we are managing, we didn\u2019t want obligatory multiplication of all \ufb01les with each new release, even if many of them remained unchanged.<\/li>\n<li>Full compliance with DITA 1.2 for consolidation on a proven open-industry standard, with all of its bene\ufb01ts.&nbsp;In preparation for migrating TIP content into a single environment and to provide technical support for componentization, knowledge architects built on the SAP NetWeaver architectural model to create a generic model that could meaningfully organize content coming from anywhere in TIP, or even beyond.<\/li>\n<\/ul>\n<p>This model contains thirteen layers:<\/p>\n<ul>\n<li>The bottom eight layers are the SAP NetWeaver model, dedicated to platform components.<\/li>\n<li>The top \ufb01ve layers are reserved for business applications either developed on top of the platform or without any back end. They run from a suite of end-user products at the top, down through applications, their components, and reuse components.The documentation content sets associated with each component in these layers are called containers. Containers are versioned, just as software components are versioned; a speci\ufb01c container version contains the version of the content maps\/topics\/images that are relevant for a speci\ufb01c release. Each container belongs to a speci\ufb01c architecture layer. The hierarchy of all the containers required for a speci\ufb01c release is called a dependency tree.<\/li>\n<\/ul>\n<p>The dependency tree also de\ufb01nes linking rules:<\/p>\n<ul>\n<li>Linking is only allowed between topics belonging to the containers in the dependency tree. This ensures that link targets are always relevant for the release.<\/li>\n<li>Topics in one container can only link to topics in a container in the same or lower layer in the dependency tree. This policy ensures that linking within the documentation set is logically sound and supports the need to re-bundle products without breaking links.<\/li>\n<\/ul>\n<p>This model is designed to work for releases of any scope, from sprawling and complex SAP NetWeaver releases, down to the standalone product SAP BusinessObjects Explorer, whose content is contained in a single container. When we looked for a new content management system, support for this content architecture model was a priority.<\/p>\n<h3><span style=\"color: #fa740b;\">Our Solution<\/span><\/h3>\n<p>The CMS evaluation resulted in our selection of IXIASOFT DITA CMS solution from Montreal-based IXIASOFT not the least because of IXIASOFT\u2019s elegant response to this requirement, using standard DITA. IXIASOFT\u2019s solution reposed upon extensive use of the DITA 1.2 keyref feature:<\/p>\n<p>DITA 1.2 introduces the \u201ckeyref\u201d feature which provides an indirect addressing mechanism. You can use \u2026 keydef elements (new with DITA 1.2) to de\ufb01ne keys in a DITA map. Topics can now be given a symbolic name (keys attribute) that points to a topic \ufb01 le path (href attribute). Future references to such topics are made using a key reference (keyref attribute). At a later point in time, if the topic is relocated, the path needs to be updated only in the map where it is de\ufb01ned. All other references will automatically pick up the new location.1.<\/p>\n<p>In our implementation, all references created between content objects would be indirect: keyrefs instead of hrefs and conkeyrefs instead of conrefs.<\/p>\n<h3><span style=\"color: #fa740b;\">Containers<\/span><\/h3>\n<p>Containers are de\ufb01ned using specialized DITA maps (container maps) that use keydefs to reference all the objects (content maps, topics, and images) that \u201cbelong\u201d to the container. Object IDs 1 Extract from \u201cDITA 1.2 feature article: Keyref overview\u201d by Sowmya Kannan (http:\/\/dita.xml.org\/resource\/keyref-overview-dita-12) are used as each object\u2019s key. Each container is associated with an architectural layer, whose numerical value is inherited by all objects belonging to the container to support checking of compliance with linking rules.<\/p>\n<p>At the beginning of a product release cycle, information architects de\ufb01 ne required containers or create new versions of existing ones, simply by cloning the container map. They then model the dependencies between the containers, establishing the dependency tree for the release. Dependencies between containers are created simply by dragging the child container and then dropping it into the parent container in the CMS interface. This creates a mapref from the parent container to the child. The dependency tree in Figure 3 (on page 4) refers to the global set of content with potential relevance for the release. Once a project\u2019s containers and dependency tree have been set up by information architects, authors are ready to begin their work. Shielded from the complexity of information architecture requirements, they can work in much the same way as authors working in a DITA environment using standard hrefs.<\/p>\n<h3><span style=\"color: #fa740b;\">Content Maps<\/span><\/h3>\n<p>Content maps are specialized DITA maps that, like classic DITA maps, de\ufb01 ne the structure of topics, images, and submaps in a deliverable, but using keyrefs instead of hrefs. In addition, each content map references a single container map (to which it is said to belong); the keydefs in the container map, and those beneath it in the dependency tree, provide the resolution for the keyrefs in the content map. References are resolved in real-time in the CMS environment and the oXygen editor so that as soon as an author adds a topic to a content map or a link to a topic target, titles are displayed instead of their keys.<\/p>\n<p>The keydef\/keyref mechanism also enforces the linking rules established by the information architect in the dependency tree:<\/p>\n<ul>\n<li>When authors add topics to their deliverables or set links, any topicref pointing to a key that doesn\u2019t exist in the map\u2019s container or a lower container in the project\u2019s dependency<br>tree, simply doesn\u2019t resolve, and is \ufb02agged by the CMS.<\/li>\n<li>Likewise, links are validated to ensure they respect the layer rules\u2014a link can only point to objects at the same or lower level than itself.<\/li>\n<\/ul>\n<h3><span style=\"color: #fa740b;\">Versioning<\/span><\/h3>\n<p>Each version of a container map references the versions of topics that are relevant for that container version. When you create a new version of a container, you create a new container map, with the same key de\ufb01nitions, pointing to the same content objects but without creating copies of the objects themselves, as in classical branching approaches. Since content maps use only keyrefs to reference objects, they don\u2019t require manual adjustment to pull in updated objects. They rely on their container to provide the speci\ufb01c version of the referenced objects. To create Version 2 of product documentation associated with a single container, Container_A_v1, an information architect clones the container.<\/p>\n<ul>\n<li>A new physical version of the container \ufb01le is created, Container_A_v2.<\/li>\n<li>All of the content maps in Container_A_v1 are also cloned and any references to them from other maps are adjusted, creating new versions of the maps that authors will use to update the documentation deliverables.<\/li>\n<li>By default, all the topic and image references in the container still point to the objects\u2019 versions in Container_A_v1.<\/li>\n<\/ul>\n<p>When authors begin to work on the content for the new release, they simply open the cloned v2 content maps and work from there. The content maps automatically reference the new version of their associated container. At this point, all topics and images are shared between both container versions. Authors can decide whether they want their modi\ufb01cations to apply to both versions or branch an object to make modi\ufb01cations in one version only. Branching creates a new physical version of the object, with the same ID (key) but a different version. Its reference in Container A v2 is automatically updated. In this case, all content maps in Version 2 will automatically use this new \ufb01le\u2014without any action from the author\u2014because the keyref they contain now points to it in the container.<\/p>\n<p>In this way, speci\ufb01c versions of containers are gradually updated with references to updated topics, but references to topics that haven\u2019t been changed remain the same. If you need to create new maps or topics for Version 2 of this product, you simply associate them with Container_A_v2 at creation and set their version from the beginning to v2. Thanks to indirect linking, no existing links are broken when you move to the next version of product documentation and no manual updating is required. And thanks to the features designed by IXIASOFT to support this container and versioning model, authors manage versioning with ease.<\/p>\n<h3><span style=\"color: #fa740b;\">Bundling<\/span><\/h3>\n<p>The advantages of indirect linking are also underscored when software components are removed from their traditional contexts and bundled with different product stacks. The information architect determines the containers with relevant content for the new project. For containers whose content will be updated, a new container version is created.<\/p>\n<p>The information architect then models a new dependency tree using all the relevant containers, arranging them into a hierarchy according to the common architectural layering model. When documenting the new release, authors either modify existing content maps (documentation deliverables) or create new maps associated with the updated container versions. Linking rules and resolution are de\ufb01ned by the new dependency tree. Any pre-existing references to topics that don\u2019t belong to the current dependency tree are automatically \ufb02agged as unresolved. And because we will largely limit linking to relationship tables, unresolved links can easily be \ufb01xed\u2014or simply not rendered in output.<\/p>\n<h3><span style=\"color: #fa740b;\">Conclusion<\/span><\/h3>\n<p>TIP KM released its \ufb01rst customer-facing product documentation in November, 2012, just eight months after our decision to go with IXIASOFT DITA CMS. The SAP NetWeaver documentation set is in the process of migration, and by the end of the year, the documentation content for a recent acquisition, Sybase, is intended to move into the new system. Already mostly in DITA, it \ufb01ts right into our model. We are DITA-compliant. We can version simply and elegantly, without redundancy. We can support the evolution of our products. We are in a good place.<\/p>\n\n\n<h3 class=\"has-text-align-left is-style-heading-style-1 wp-block-heading\">AUTHOR<\/h3>\n\n\n\n<p>Priscilla Buckley<br><span style=\"color: #ff8c0a;\" class=\"ugb-highlight\"><em>SAP<\/em><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>mono\u2022lith\u2022ic adjective \\m\u00e4-n\u0259-li-thik\\ 1. a: of, relating to, or resembling a monolith : huge, massive&#8230; 2. a: cast as a sing&#8230;<\/p>\n","protected":false},"author":26,"featured_media":23240,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44],"tags":[],"class_list":["post-23234","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles"],"mb":[],"featured_image_urls":{"full":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",1890,1417,false],"thumbnail":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-150x150.jpg",150,150,true],"medium":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-300x225.jpg",300,225,true],"medium_large":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-768x576.jpg",768,576,true],"large":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-1024x768.jpg",1024,768,true],"1536x1536":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-1536x1152.jpg",1536,1152,true],"2048x2048":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",1890,1417,false],"ultp_layout_landscape_large":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",1067,800,false],"ultp_layout_landscape":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",760,570,false],"ultp_layout_portrait":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",600,450,false],"ultp_layout_square":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",600,450,false]},"post_excerpt_stackable":"<p>mono\u2022lith\u2022ic adjective \\m\u00e4-n\u0259-li-thik\\ 1. a: of, relating to, or resembling a monolith : huge, massi&hellip;<\/p>\n","category_list":"<a href=\"https:\/\/www.ixiasoft.com\/ja\/articles\/\" rel=\"category tag\">Articles<\/a>","author_info":{"name":"MadCap IT","url":"https:\/\/www.ixiasoft.com\/ja\/author\/madcap_it\/"},"comments_num":"0 comments","featured_image_urls_v2":{"full":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",1890,1417,false],"thumbnail":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-150x150.jpg",150,150,true],"medium":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-300x225.jpg",300,225,true],"medium_large":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-768x576.jpg",768,576,true],"large":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-1024x768.jpg",1024,768,true],"1536x1536":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1-1536x1152.jpg",1536,1152,true],"2048x2048":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",1890,1417,false],"ultp_layout_landscape_large":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",1067,800,false],"ultp_layout_landscape":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",760,570,false],"ultp_layout_portrait":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",600,450,false],"ultp_layout_square":["https:\/\/www.ixiasoft.com\/wp-content\/uploads\/2015\/09\/BP-NewsSAP-1.jpg",600,450,false]},"post_excerpt_stackable_v2":"<p>mono\u2022lith\u2022ic adjective \\m\u00e4-n\u0259-li-thik\\ 1. a: of, relating to, or resembling a monolith : huge, massi&hellip;<\/p>\n","category_list_v2":"<a href=\"https:\/\/www.ixiasoft.com\/ja\/articles\/\" rel=\"category tag\">Articles<\/a>","author_info_v2":{"name":"MadCap IT","url":"https:\/\/www.ixiasoft.com\/ja\/author\/madcap_it\/"},"comments_num_v2":"0 comments","mfb_rest_fields":["title","featured_image_urls","post_excerpt_stackable","category_list","author_info","comments_num","featured_image_urls_v2","post_excerpt_stackable_v2","category_list_v2","author_info_v2","comments_num_v2"],"_links":{"self":[{"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/posts\/23234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/comments?post=23234"}],"version-history":[{"count":2,"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/posts\/23234\/revisions"}],"predecessor-version":[{"id":56787,"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/posts\/23234\/revisions\/56787"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/media\/23240"}],"wp:attachment":[{"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/media?parent=23234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/categories?post=23234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ixiasoft.com\/ja\/wp-json\/wp\/v2\/tags?post=23234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}