Skip to content

Commit 9608735

Browse files
tomhollingworthTom Hollingworth
andauthored
Add concrete JSON schema definitions for WorkflowSpecificationConnectionType, WorkflowSpecificationNodeType, and ResourceNetworkConnectionType (#5)
* Add copy of v2.0.0 into v2.0.1 schema * Add concrete JSON schema definitions for `WorkflowSpecificationConnectionType`, `WorkflowSpecificationNodeType`, and `ResourceNetworkConnectionType` Previously, these schema definitions mistakenly referenced the `xxxTypeType` entity instead of defining their own structures. This MR introduces the correct definitions for these types and updates references accordingly. * Add documentation post for v2.0.1 Change respository documentation to reference v2.0.1 instead of v2.0.0 Change copyright date to 2025 Adding a post for v2.0.1 to indicate the changes. Tidy up some of the repository to reference the latest version v2.0.1. * Change indentation in workflow/main.yml * Fix resolution of `WorkflowSpecificationConnectionType` and `WorkflowSpecificationNodeType` to their respective types --------- Co-authored-by: Tom Hollingworth <[email protected]>
1 parent 8b9259b commit 9608735

File tree

44 files changed

+58731
-347
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+58731
-347
lines changed

.github/workflows/main.yml

Lines changed: 103 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,104 +1,104 @@
1-
name: Continuous Deployment
2-
on:
3-
push:
4-
tags:
5-
- v*
6-
branches:
7-
- main
8-
- develop
9-
10-
jobs:
11-
lint:
12-
runs-on: ubuntu-latest
13-
steps:
14-
- uses: actions/checkout@master
15-
- name: Setup Go ${{ matrix.go-version }}
16-
uses: actions/setup-go@v5
17-
with:
18-
go-version: 1.23
19-
- name: install schemalint
20-
run: go install github.com/giantswarm/schemalint/v2@latest
21-
- name: lint schema files
22-
run: |
23-
for i in ./schemas/*.json;
24-
do echo "checking $i";
25-
schemalint verify $i;
26-
done
27-
28-
containerize:
29-
runs-on: ubuntu-latest
30-
needs: lint
31-
if: ${{ github.ref_type == 'tag' }}
32-
strategy:
33-
matrix:
34-
BUILD_HOST: ["http://localhost/", "https://json.libremfg.ai/"]
35-
permissions:
36-
contents: read
37-
packages: write
38-
steps:
39-
- uses: actions/checkout@master
40-
- name: Login to GitHub Container Registry
41-
uses: docker/login-action@v3
42-
with:
43-
registry: ghcr.io
44-
username: ${{ github.actor }}
45-
password: ${{ secrets.GITHUB_TOKEN }}
46-
- name: Publish to GitHub Container Registry for localhost
47-
if: ${{ github.ref_type == 'tag' && matrix.BUILD_HOST == 'http://localhost/' }}
48-
uses: docker/build-push-action@v6
49-
with:
50-
push: true
51-
file: ./docker/Dockerfile
52-
build-args: |
53-
HOST=${{ matrix.BUILD_HOST }}
54-
tags: |
55-
ghcr.io/libremfg/json-schema:${{ github.ref_name }}
56-
ghcr.io/libremfg/json-schema:latest
57-
- name: Publish to GitHub Container Registry for json.libremfg.ai
58-
if: ${{ github.ref_type == 'tag' && matrix.BUILD_HOST == 'https://json.libremfg.ai/' }}
59-
uses: docker/build-push-action@v6
60-
with:
61-
push: true
62-
file: ./docker/Dockerfile
63-
build-args: |
64-
HOST=${{ matrix.BUILD_HOST }}
65-
tags: |
66-
ghcr.io/libremfg/json-schema:jsonlibremfgai-${{ github.ref_name }}
67-
ghcr.io/libremfg/json-schema:jsonlibremfgai-latest
68-
69-
deploy:
70-
runs-on: ubuntu-latest
71-
needs: containerize
72-
if: ${{ github.ref_type == 'tag' }}
73-
env:
74-
ENV_SLUG: jsonlibremfgai
75-
KUBE_NAMESPACE: json-schema
76-
INGRESS_HOST: json.libremfg.ai
77-
steps:
78-
- name: Set the Kubernetes context
79-
uses: azure/k8s-set-context@v2
80-
with:
81-
method: service-account
82-
k8s-url: ${{ secrets.NA1_KUBERNETES_URL }}
83-
k8s-secret: ${{ secrets.NA1_KUBERNETES_SECRET }}
84-
- name: Install Helm
85-
uses: azure/[email protected]
86-
- uses: actions/checkout@master
87-
- name: Helm Install
88-
run: |
89-
if [ -z "$CI_COMMIT_TAG" ]; then
90-
export TAG=$ENV_SLUG-latest;
91-
else
92-
export TAG=$ENV_SLUG-$CI_COMMIT_TAG;
93-
fi
94-
echo "using tag $TAG";
95-
helm upgrade --install libremfg-jsonschema ./chart \
96-
--set image.tag=$TAG \
97-
--set ingress.enabled=true \
98-
--set ingress.className=traefik \
99-
--set ingress.hosts[0].host=$INGRESS_HOST \
100-
--set ingress.hosts[0].paths[0].path=/ \
101-
--set ingress.hosts[0].paths[0].pathType=ImplementationSpecific \
102-
--set ingress.tls[0].hosts[0]=$INGRESS_HOST \
103-
--set ingress.tls[0].secretName=$INGRESS_HOST-tls \
1+
name: Continuous Deployment
2+
on:
3+
push:
4+
tags:
5+
- v*
6+
branches:
7+
- main
8+
- develop
9+
10+
jobs:
11+
lint:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@master
15+
- name: Setup Go ${{ matrix.go-version }}
16+
uses: actions/setup-go@v5
17+
with:
18+
go-version: 1.23
19+
- name: install schemalint
20+
run: go install github.com/giantswarm/schemalint/v2@latest
21+
- name: lint schema files
22+
run: |
23+
for i in ./schemas/*.json;
24+
do echo "checking $i";
25+
schemalint verify $i;
26+
done
27+
28+
containerize:
29+
runs-on: ubuntu-latest
30+
needs: lint
31+
if: ${{ github.ref_type == 'tag' }}
32+
strategy:
33+
matrix:
34+
BUILD_HOST: ["http://localhost/", "https://json.libremfg.ai/"]
35+
permissions:
36+
contents: read
37+
packages: write
38+
steps:
39+
- uses: actions/checkout@master
40+
- name: Login to GitHub Container Registry
41+
uses: docker/login-action@v3
42+
with:
43+
registry: ghcr.io
44+
username: ${{ github.actor }}
45+
password: ${{ secrets.GITHUB_TOKEN }}
46+
- name: Publish to GitHub Container Registry for localhost
47+
if: ${{ github.ref_type == 'tag' && matrix.BUILD_HOST == 'http://localhost/' }}
48+
uses: docker/build-push-action@v6
49+
with:
50+
push: true
51+
file: ./docker/Dockerfile
52+
build-args: |
53+
HOST=${{ matrix.BUILD_HOST }}
54+
tags: |
55+
ghcr.io/libremfg/json-schema:${{ github.ref_name }}
56+
ghcr.io/libremfg/json-schema:latest
57+
- name: Publish to GitHub Container Registry for json.libremfg.ai
58+
if: ${{ github.ref_type == 'tag' && matrix.BUILD_HOST == 'https://json.libremfg.ai/' }}
59+
uses: docker/build-push-action@v6
60+
with:
61+
push: true
62+
file: ./docker/Dockerfile
63+
build-args: |
64+
HOST=${{ matrix.BUILD_HOST }}
65+
tags: |
66+
ghcr.io/libremfg/json-schema:jsonlibremfgai-${{ github.ref_name }}
67+
ghcr.io/libremfg/json-schema:jsonlibremfgai-latest
68+
69+
deploy:
70+
runs-on: ubuntu-latest
71+
needs: containerize
72+
if: ${{ github.ref_type == 'tag' }}
73+
env:
74+
ENV_SLUG: jsonlibremfgai
75+
KUBE_NAMESPACE: json-schema
76+
INGRESS_HOST: json.libremfg.ai
77+
steps:
78+
- name: Set the Kubernetes context
79+
uses: azure/k8s-set-context@v2
80+
with:
81+
method: service-account
82+
k8s-url: ${{ secrets.NA1_KUBERNETES_URL }}
83+
k8s-secret: ${{ secrets.NA1_KUBERNETES_SECRET }}
84+
- name: Install Helm
85+
uses: azure/[email protected]
86+
- uses: actions/checkout@master
87+
- name: Helm Install
88+
run: |
89+
if [ -z "$CI_COMMIT_TAG" ]; then
90+
export TAG=$ENV_SLUG-latest;
91+
else
92+
export TAG=$ENV_SLUG-$CI_COMMIT_TAG;
93+
fi
94+
echo "using tag $TAG";
95+
helm upgrade --install libremfg-jsonschema ./chart \
96+
--set image.tag=$TAG \
97+
--set ingress.enabled=true \
98+
--set ingress.className=traefik \
99+
--set ingress.hosts[0].host=$INGRESS_HOST \
100+
--set ingress.hosts[0].paths[0].path=/ \
101+
--set ingress.hosts[0].paths[0].pathType=ImplementationSpecific \
102+
--set ingress.tls[0].hosts[0]=$INGRESS_HOST \
103+
--set ingress.tls[0].secretName=$INGRESS_HOST-tls \
104104
--namespace $KUBE_NAMESPACE
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
+++
2+
title = 'Version 2.0.1'
3+
date = 2025-02-19T12:50:23-05:00
4+
+++
5+
6+
> A JSON Schema implementation of the ANSI/ISA-95 and ANSI/ISA-88 standards.
7+
8+
An JSON implementation of the ANSI/ISA-95, Enterprise-Control System Integration, family of standards (ISA-95), known internationally as IEC/ISO 62264. B2MML consists of a set of JSON schemas written using the JSON Schema's Schema language (2020) that implement the data models in the ISA-95 standard.
9+
10+
This JSON schema can be used for design for syncrhonous and asynchronous APIs.
11+
12+
Based on the works of https://github.com/MESAInternational/B2MML-BatchML.
13+
14+
## Abbreviations
15+
16+
| Acronynm | Description |
17+
|-------------|---------------------------------------------------------------|
18+
| **ANSI** | American National Standards Institute |
19+
| **API** | Application Programming Interface |
20+
| **B2MML** | Business to (2) Manufacturing Markup Language |
21+
| **BatchML** | Batch Markup Language |
22+
| **BOD** | Business Object Document |
23+
| **ISA** | International Society of Automation |
24+
| **IEC** | International Electrotechnical Commission |
25+
| **JSON** | JavaScipt Object Notation |
26+
| **XML** | eXensible Markup Language |
27+
| **XSD** | eXtensible markup language Schema Definition |
28+
29+
## Quick start
30+
31+
Start out by importing the schema and using it in your JSON documents. As an example:
32+
33+
```
34+
"$schema": "{{< siteurl >}}schemas/v2.0.1.equipment.schema.json"
35+
```
36+
37+
Here is an example using the JSON schema in a `ProcessEquipment` message.
38+
39+
```json
40+
{
41+
"$schema": "https://json.libremfg.ai/schemas/v2.0.1.equipment.schema.json",
42+
"ProcessEquipment": {
43+
"@releaseID": "1",
44+
"ApplicationArea": {
45+
"CreationDateTime": "2021-01-01T00:00:00Z",
46+
"Sender": {
47+
"LogicalID": "Rhize Manufacutring Data Hub"
48+
}
49+
},
50+
"DataArea": {
51+
"Process": {},
52+
"Equipment": [
53+
{
54+
"ID": "Acme Inc.",
55+
"Description": [
56+
"Acme Inc. Manufacturing Line 1"
57+
],
58+
"EquipmentLevel": "Enterprise"
59+
}
60+
]
61+
}
62+
}
63+
}
64+
```
65+
66+
## Updates in 2.0.1
67+
68+
- Add concrete JSON schema definitions for `WorkflowSpecificationConnectionType`, `WorkflowSpecificationNodeType`, and `ResourceNetworkConnectionType`
69+
70+
Previously, these schema definitions mistakenly referenced the `xxxTypeType` entity instead of defining their own structures. This MR introduces the correct definitions for these types and updates references accordingly.
71+
72+
## Object Schema File Table
73+
74+
Use the search functionality of your browser to find an object of interet.
75+
76+
{{< table/propertiesV201 >}}

0 commit comments

Comments
 (0)