ECCR has been developed based on ECC, with CIS resembling XIS. This has been done so that ECC components can be used as stand-ins until other ECCR applications are built out. CIS currently supports the metadata API used by XIAs, and the managed-data APIs used by XMS. CIS currently supports reading of relationships, but only supports writing of the domain relationship.
CIS Component is the primary funnel for competency and credential data collected by the XIA components. In addition, the CIS can handle data updates from the CMS.
Competency and credential data received from XIAs (or manually uploaded) is stored in the associated Neo4j DB. Neo4j is used to support the storage of data with non-uniform data schemas, instead data schemas are validated using XSS/LDSS when it is submitted to the CIS. Objects are associated with a domain node within the DB, so that the graph and repsonses can be organized.
CIS currently requires that objects have a field labeled uuid which must be a unique identifier, and a field labeled profile which should be a reference to schema resolvable in the XSS/LDSS, any other fields specified by the profile will also be validated. If a WITHIN relationship to a NeoDomain object is included, then a HOLDS relationship from the NeoDomain to the obj will be created.
---
config:
layout: elk
title: ECCR Connected Systems
---
graph TD;
subgraph Legend
1("System")-->|MVP|2("System");
1("System")-.->|Future Planned|2("System");
end
subgraph External Sources
XSS;
XIA;
end
subgraph External Dependents
ECC;
ELRR;
EDLM[EDLM Portal];
end
subgraph ECCR
CIS;
CES;
CDS;
CMS;
CDSUI[CDS UI];
CMSUI[CMS UI];
end
XSS-->|Profile|CIS;
XIA-.->|Indexing|CIS;
CIS-.->|References|ECC & ELRR & EDLM;
CIS-.->|Competency & Credential|CMS;
CIS-.->|Competency & Credential|CDS & CES;
CMS-.->CMSUI;
CDS-.->CDSUI;
CES-.->CDS;
ETL pipeline from XIA loads processed competency and credential data into a Neo4j domain after schema validation. Data can also be edited using the APIs directly or CMS, but all edits will also need to pass schema validation prior to saving back to the Neo4j DB.
- The following environment variables are required:
| Environment Variable | Description |
|---|---|
| DB_HOST | The host name, IP, or docker container name of the database |
| DB_PORT | The port of the database |
| DB_NAME | The name to give the database |
| DB_PASSWORD | The password for the user to access the database |
| DB_USER | The name of the user to use when connecting to the database. When testing use root to allow the creation of a test database |
| LOG_PATH | The path to the log file to use |
| SECRET_KEY_VAL | The Secret Key for Django |
| NEO4J_BOLT_URI | The full Bolt URL for the Neo4j Instance |
| NEO4J_URI | The full URL for the Neo4j Instance (is overriden by NEO4J_BOLT_URI) |
| NEO4J_USERNAME | The username to use for the Neo4j Instance |
| NEO4J_PASSWORD | The password to use for the Neo4j Instance |
-
Clone the Github repository:
git clone https://github.com/adlnet/eccr-cis.git
-
Open terminal at the root directory of the project.
example: ~/PycharmProjects/eccr-cis
-
Run command to install all the requirements from requirements.txt
docker-compose build.
-
Once the installation and build are done, run the below command to start the server.
docker-compose up
-
Once the server is up, go to the admin page:
- http://localhost:8080/admin (replace localhost with server IP)
-
From the command line of the CIS application run
python manage.py createsuperuserto create a super user. -
Navigate over to
http://localhost:8080/admin/in your browser and log in with the credentials set in step 1. -
COMPETENCIES
- Configure Competency Index Service (CIS)
-
Click on
Competencies>Add Configurations- Enter configurations below:
- Add the
Ldss host. The host is the hostname/port of XSS/LDSS instance.
- Add the
Note: Please make sure to upload schema file in the Experience Schema Server (XSS).
- Enter configurations below:
-
- Configure Neo4j Domains
-
Click on
Competencies>Add Django domains- Enter configurations below:
Uuidis a UUID4.Nameis the human readable name of the domain.
Note: This will create the domain in Neo4j if it doesn't exist.
- Enter configurations below:
-
- Configure Competency Index Service (CIS)
Logging is written to standard output and the file specified by the LOG_PATH environment variable.
This project uses the MIT license.