Table of Contents
- Introduction
- Data file Directory Structure
- Change Management Workflow
- Roadmap JSON file
- Rel-Links JSON files
- Pipeline Overview
Introduction
This repository is designed for the automation of training and evaluation requirements, traceability, and metrics. Below are the requirements for our organization's Master Training Tasks List (MTTL).
- Must contain all necessary Knowledge, Skills, Abilities, and Tasks (KSA&Ts) for the organization's work roles
- We must be able to link every KSA&T to "one or many" work roles
- The proficiency of each KSA&T as they relate to their respective work role.
- Should be able to trace the training required to accomplish a specific KSA&T at a specific proficiency level
- Should be able to trace the evaluation material to accomplish a specific KSA&T at a specific proficiency level
- Individuals should be able to submit a change management request to add/remove/modify a work role KSA&T.
The primary and official source for information about the MTTL webpage is located on the official MTTL page.
We initially relied on a non-relational database and GitLab static pages. However, we have begun migrating our infrastructure elsewhere.
We rely heavily upon Git and Gitlab for change and project management, Gitlab continuous integration (CI) pipelines and a disposable MongoDB service in the pipeline to join the data and build the presentation layer. To do this we first organize the data in a logical manner to promote scalability/sustainability. The items below are necessary to maintain this concept.
- The MTTL repo does not contain a single MTTL file. Instead, the MTTL file (mttl.min.json) is an artifact that is produced in the repo's CI/CD pipeline.
- The core of the the MTTL repo are the knowledge, skill, ability, and task files, and the WORK-ROLES.json and SPECIALIZATIONS.json files that contain a list of all work-roles and specializations.
- The knowledge, skill, ability, and task files are datasets of all of the knowledge, skills, abilities, tasks that are required for the organization. These items only have the KSA&T to KSA&T relationship information, topic information, requirement source information, and available training and evaluation information. Proficiency of work roles/specializations are located inside the TTL files in the 'work-roles' folder respectively.
- The WORK-ROLES.json and SPECIALIZATIONS.json files are dictionaries of work role/specialization specific information that contain work role/specialization repository URLs that contain progression information for the MTTL Training Roadmap
Data file Directory Structure
MTTL Repo
├── build_frontend.sh
├── CODEOWNERS
├── CONTRIBUTING.md
├── docs
├── mttl
│ ├── database
│ ├── scripts
│ └── src
├── mttl.py
├── scripts
└── server.js
- docs: mdbooks user documentation
- build_frontend.sh: script to build MTTL locally
- mttl: files need to create MTTL web page including app and database files
- mttl/database/requirements: directory with all MTTL KSAT JSON files
- mttl/database/rel-links: directory with training/eval relationship-link files
- mttl/database/work-roles: directory with work-role JSON files containing requirement mappings
- mttl/scripts: directory with all source CI/CD python and bash scripts
- .gitlab-ci.yml: Gitlab CI/CD configuration file
- CODEOWNERS: Gitlab ownership file to designate necessary approval for changes to specific files
- mttl.py: Entry point maintenance script
- scripts: deprecated directory maintained for legacy reasons *** Please note, more thorough documentation is maintained with the official documentation available here
Change Management Workflow
The change management workflow is depicted below.
graph TD;
NEW_REQUEST[NEW CUSTOMER REQUEST]-->|ASSIGN POC| REVIEW(REVIEW REQUEST);
REVIEW-->CLARIFY(CLARIFY REQUEST);
CLARIFY-->RESPONSE{CUSTOMER RESPONSE};
RESPONSE-- Revise -->CLARIFY;
RESPONSE-- Accept -->CREATE(CREATE MERGE REQUEST);
CREATE-->UPDATE(MAKE UPDATES);
UPDATE-->GOVREVIEW(GOV/CUSTOMER REVIEW);
GOVREVIEW-->APPROVED{CHANGES APPROVED};
APPROVED-- No -->UPDATE;
APPROVED-- Yes -->DONE[MERGED TO MASTER]
APPROVED-- Rejected -->DEAD[CLOSED WITHOUT MERGE]
Rel-Links JSON Files
This section describes the *.rel-links.json file; rel is short for relation. There are many of these files inside the 'rel-links' folder that describe the KSATs and proficiency levels for corresponding training and evaluation materials. Theses file are used in the pipeline to create metrics and visualization for the MTTL. You can find the template for these json object in the json_templates.py file under the trn_rel_link_item_template() and evl_rel_link_item_template() functions.
Pipeline Overview
graph TD;
START-->STAGE_VALIDATE[Stage: Validate]
STAGE_VALIDATE-- Job -->VALIDATE_docs([Docs])
STAGE_VALIDATE-- Job -->VALIDATE_K([Knowledge])
STAGE_VALIDATE-- Job -->VALIDATE_S([Skills])
STAGE_VALIDATE-- Job -->VALIDATE_A([Abilities])
STAGE_VALIDATE-- Job -->VALIDATE_T([Tasks])
STAGE_VALIDATE-- Job -->VALIDATE_TRN_REL_LINKS([Training Rel-Links])
STAGE_VALIDATE-- Job -->VALIDATE_EVL_REL_LINKS([Eval Rel-Links])
STAGE_VALIDATE-- Job -->VALIDATE_WORK_ROLES([Work-Roles])
VALIDATE_docs-->STAGE_PRE_BUILD[Stage: Pre-Build]
VALIDATE_K-->STAGE_PRE_BUILD[Stage: Pre-Build]
VALIDATE_S-->STAGE_PRE_BUILD[Stage: Pre-Build]
VALIDATE_A-->STAGE_PRE_BUILD[Stage: Pre-Build]
VALIDATE_T-->STAGE_PRE_BUILD[Stage: Pre-Build]
VALIDATE_TRN_REL_LINKS-->STAGE_PRE_BUILD[Stage: Pre-Build]
VALIDATE_EVL_REL_LINKS-->STAGE_PRE_BUILD[Stage: Pre-Build]
VALIDATE_WORK_ROLES-->STAGE_PRE_BUILD[Stage: Pre-Build]
STAGE_PRE_BUILD-- Job -->PRE_BUILD_PREP([Build Prep])
PRE_BUILD_PREP-->STAGE_BUILD[Stage: Build]
STAGE_BUILD-- Job -->BUILD_MTTL([MTTL Dataset])
STAGE_BUILD-- Job -->BUILD_TTL([TTL Dataset])
STAGE_BUILD-- Job -->BUILD_EXTRAS([Extra Datasets])
STAGE_BUILD-- Job -->BUILD_METRICS([MTTL Metrics])
STAGE_BUILD-- Job -->BUILD_ROADMAP([Roadmap])
STAGE_BUILD-- Job -->BUILD_Docs([Docs])
BUILD_MTTL-->STAGE_TEST[Stage: Test]
BUILD_TTL-->STAGE_TEST[Stage: Test]
BUILD_EXTRAS-->STAGE_TEST[Stage: Test]
BUILD_METRICS-->STAGE_TEST[Stage: Test]
BUILD_ROADMAP-->STAGE_TEST[Stage: Test]
BUILD_Docs-->STAGE_TEST[Stage: Test]
STAGE_TEST-- Job -->TEST_DUPS([Test Identical KSATs])
STAGE_TEST-- Job -->TEST_FIND([Test MTTL find])
STAGE_TEST-- Job -->TEST_INSERT([Test MTTL insert])
STAGE_TEST-- Job -->TEST_MODIFY([Test MTTL modify])
STAGE_TEST-- Job -->TEST_DELETE([Test MTTL delete])
STAGE_TEST-- Job -->TEST_PAGES([Test Pages])
TEST_DUPS-->STAGE_DEPLOY[Stage: Deploy]
TEST_FIND-->STAGE_DEPLOY[Stage: Deploy]
TEST_INSERT-->STAGE_DEPLOY[Stage: Deploy]
TEST_MODIFY-->STAGE_DEPLOY[Stage: Deploy]
TEST_DELETE-->STAGE_DEPLOY[Stage: Deploy]
TEST_PAGES-->STAGE_DEPLOY[Stage: Deploy]
STAGE_DEPLOY-- Job -->DEPLOY_PAGES([Deploy to GitLab Static Pages])
DEPLOY_PAGES-->FINISH>User can see MTTL changes]