Developer Guide

  • Development Guidelines
  • Version Numbering Scheme

    Version numbering

    CATS version numbering scheme follows similar approach to what’s known as Semantec versioning (semver). A given version number includes the following parts:

    MAJOR.MINOR.PATCH.BUILD
  • Kanban Board Usage Guidelines

    Introduction

    Kanban is a methodology that constrains the amount of work that can be assigned to a particular workflow state at any one time. This helps teams to optimize their lead time (the time taken from when an issue is logged until work is completed on that issue) or cycle time(time spent working on an issue — typically, the time taken from when work begins on an issue to when work is completed, but also includes any other time spent working on the issue) — that is, the average time taken to complete a task. 

  • Gitflow Branch Management Process

    Background

    Git repository usage for CATS is based on topic/feature branch strategy. It dictates topic branch development approach with a handful of long-lived mainline branches. These branches are:

    master: branch where production build is created from. This is read-only branch and should never be pushed to directly.

  • Environments

    Introduction

    CATS Environments represent a configuration where by CATS application is deployed and executed. In simple cases, such as developing and immediately executing a program on the same machine, there may be a single environment, but in mission-critical use the development environment (where changes are originally made) and production environment (what end users use) are separated, often with several stages in between, in order to allow phased deployment (rollout), testing, and rollback in case of problems.

  • Confluence / JIRA Support Requests

    This page documents shortcomings and desired improvements to JIRA and/or Confluence

    Better Integration when creating a JIRA issue from a Confluence page

    Creating a new JIRA issue from a confluence page only allows the barest minimum of information to be entered:

  • Worflow: Define Document Workflow Stored Procedure [e.g. Requisition]

    Step-by-step guide

    1. Define stored procedure to define workflow for requisition

      /********************************************************************************************************
      ********************************************************************************************************
      – Author: Nathnael Getahun (Senior Software Developer @ Neuronet)
      – Type: Stored Procedure
      – Name: Define Document Workflow
      – Description: A Generic Document Workflow Definition Procedure
      – What it does:
      – > Reads a formally formatted XML document
      – > Inserts a process template
      – > Uses the above inserted process id to insert application setting
      – > Inserts all the states of the document process defined in the xml document
      – > Iterate through each process states trigger a flow template insert query
      ********************************************************************************************************
      ********************************************************************************************************/
      DROP PROCEDURE define_document_workflow
      GO
      CREATE PROCEDURE define_document_workflow @xmldoc int
      AS
      /* Begin a transaction that will hold all the statements executed in this procedure */
      BEGIN TRANSACTION
      /* Define the variable that holds the insert_id for the process template */
      DECLARE @ProcessTemplateID INT;
      /* Define the variables that hold the name, the final states, and actions defined for each states in the xml document */
      DECLARE @name varchar(50), @finalstates varchar(50), @actions varchar(50)
      /* Insert a new process template into the 'ProcessTemplate' table from the <ProcessTemplate /> definition in the xml document */
      INSERT INTO ProcessTemplate SELECT Name, Description, GraphicsData, PartitionId FROM OPENXML(@xmldoc, '//ProcessTemplate') WITH ProcessTemplate
      /* Check if the above statement failed to execute and rollback the transcation */
      IF(@@error <> 0)
      ROLLBACK /* Rollback of the transaction */
      /* Set the insert_id to the above defined variable for later reference */
      SET @ProcessTemplateID = SCOPE_IDENTITY();
      /* Insert a new application setting into the 'ApplicationSetting' table from the <ApplicationSetting /> definition in the xml document */
      INSERT INTO ApplicationSetting
      VALUES ( (SELECT SettingName FROM OPENXML(@xmldoc, '//ApplicationSetting') WITH ApplicationSetting), @ProcessTemplateID, NULL);
      /* Check if the above statement failed to execute and rollback the transcation */
      IF(@@error <> 0)
      ROLLBACK /* Rollback of the transaction */
      /* Insert new state templates into the 'StateTemplate' table from the list of <StateTemplate /> definitions in the xml document */
      INSERT INTO StateTemplate
      SELECT @ProcessTemplateID, Name, AllowedAccessLevel, StateNo, StateType, NULL FROM OPENXML(@xmldoc, '//StateTemplate') WITH StateTemplate
      /* Check if the above statement failed to execute and rollback the transcation */
      IF(@@error <> 0)
      ROLLBACK /* Rollback of the transaction */

  • Workflow: Upgrade old data [e.g. Requisition]

    Step-by-step guide

    1. Define a stored procedure for upgrading old data of entities which starts using workflow

      use [CatsDRMFSS];

      /********************************************************************************************************
      ********************************************************************************************************
      -- Author: Nathnael Getahun (Senior Software Developer @ Neuronet)
      -- Type: Stored Procedure
      -- Name: Upgrade Old Data
      -- Description: Make old data of Relief Requisition table support the new workflow implementation
      -- What it does:
      ---- > Add BusinessProcessID column in Relief Requisition table
      ---- > Iterate through each Relief Requisition entry and create them a business process and
      ---- business process state for their current status only
      ********************************************************************************************************
      ********************************************************************************************************/