Skip to content

Latest commit

 

History

History
103 lines (86 loc) · 9.84 KB

knowledge-export.md

File metadata and controls

103 lines (86 loc) · 9.84 KB

Knowledge Export

ConDec enables to export decision knowledge and related knowledge elements, such as requirements, code, and work items. Three export formats are supported: Word, JSON, and Markdown. The user can filter the knowledge to be exported using the same filter criteria as in the knowledge graph views, e.g. by knowledge type, status, decision groups, and many other criteria.

The user can export knowledge either via the context menu in a knowledge graph view or via the More menu in the Jira issue view.

Context menu item to export the knowledge subgraph

Context menu item to export the knowledge subgraph

Jira issue More menu item to export the knowledge subgraph

Jira issue More menu item to export the knowledge subgraph

The user customizes the export e.g. by choosing the export format in the export dialog.

Dialog to export the knowledge subgraph

Dialog to export the knowledge subgraph offering the same filter criteria as in the views on the knowledge graph

Meeting managers can use the JSON export to create a meeting agenda using the ConDec Confluence plug-in.

Design Details

The Java code for the knowledge export feature can be found here:

The UI code for the knowledge export feature can be found here:

Important Decisions

The knowledge elements listed below were exported via the knowledge export feature for the system function SF: Export knowledge from Jira, which specifies the export feature. In particular, the following filter criteria were used for the export:

  1. Selected element: system function SF: Export knowledge from Jira (CONDEC-484), which is a requirement for ConDec
  2. Link distance: 5 from the selected element
  3. Decision group: export
  4. Transitive links should be established. For example, the code file MarkdownCreator.java is only indirectly linked to the system function via a work item. The work item is not part of the export decision group, but the code file MarkdownCreator.java is part of this decision group. The code file is included in the filtered knowledge graph because of transitive linking. The code file contains decision knowledge documented in its code comments.
  5. All other filter criteria were the default filter criteria used in ConDec. For example, this means that the exported decision knowledge is taken from different documentation locations: entire Jira issues, Jira issue description and comments, commit messages, and code comments.
  • SF: Export knowledge from Jira (CONDEC-484)
    • Issue Which format do we support for exporting the knowledge documentation?
      • Decision Use Word to export the decision knowledge documentation!
        • Pro Word files can be edited.
      • Alternative PDF
        • Con PDF files cannot be edited.
      • Decision Use Markdown format to enable the export of the knowledge subgraph!
        • Pro Markdown text can be imported into github release notes and .md files for feature documentation.
        • Pro Is also used for release notes creation with explicit decision knowledge, thus, the code can be reused for general export.
      • Alternative CSV
    • Issue Which word files should be supported?
      • Decision Word Docs should be supported, as it was well documented!
    • Issue How do we deal with irrelevant sentences/parts of text when exporting knowledge elements from Jira?
      • Decision The user is offered the same filter settings as in the knowledge graph views during export! Thus, the user can decide whether irrelevant text wrt. decision knowledge can be exported!
        • Pro Flexible solution because of same filtering possibilities in all views
      • Decision rejected: Irrelevant sentences are not included in the exported list of decision knowledge elements!
    • Issue How should disconnected sub-graphs be handled in the getElements REST API method?
      • Decision rejected: The knowledge-elements REST API method used to return a list of lists of elements belonging to a connected graph!
        • Con This is hard to understand/low abstraction level.
      • Decision The knowledge-elements REST API method returns only one list of all elements matching the query!
    • Issue How to export and present decision knowledge from Jira into Confluence? (CONDEC-271)
      • Decision Create a Confluence plugin with a new macro to import decision knowledge from Jira into Confluence! (CONDEC-298)
      • Decision We add a possibility to export decision knowledge to the context menu! (CONDEC-480)
    • Issue Which machine readable format should be implemented?
      • Decision JSON should be used as machine readable format to export the knowledge documentation! (CONDEC-487)
        • Pro web standard, easily parsable, many libraries that can handle the JSON format
      • Alternative CSV comma separated values
        • Con hard to parse, not very flexible own parser has to be build, no data hierarchies
        • Pro Also readable by humans with excel, lightweight
      • Alternative XML Extensive markup language
        • Con Created for document markup, not for data exchange
        • Pro Full Data hierarchies, old standard for Documents
    • Code MarkdownCreator.java
      • Issue How can we include icon images into the markdown used for release notes and general knowledge export?
        • Decision We use the icon URL of github to include icon images into the markdown used for release notes and general knowledge export!
          • Pro The icons can be seen also by non Jira users. Thus, the markdown text could be excluded in external systems such as release page on github.
        • Alternative We could use the icon URL on the Jira server.
          • Con The icons could not be seen by non Jira users.
      • Issue How can we get the depth of an element in the markdown tree?
        • Decision We use the BreadthFirstIterator::getDepth method to get the depth of an element!
          • Con We build the markdown with a DepthFirstIterator which does not offer a method getDepth. We currently traverse the graph twice: first, with a breadth first and second, with a depth first iterator, which is not very efficient.
        • Alternative We could use a shortest path algorithm (e.g. Dijkstra) to determine the link distance.
          • Con Might also not be very efficient.
    • Issue How to sort the exported knowledge elements?
      • Decision Sort elements by key when exporting them to Word and JSON!
        • Pro Keeps the order in Jira issue text
        • Con Can be different to for example the order in the indented outline.
      • Alternative We could change the REST API to return an ordered list created with e.g. a depth first iterator.
        • Con Would take more computation effort