Skip to main content

iil

iil is a simple data model defined with a JSON schema below:

{
"$id": "https://github.com/JinkiJung/iil/blob/main/iil.schema.json",
"$version": "1.0",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"description": "A work description model.",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "An unique identifier for an iil."
},
"namespace": {
"type": "string",
"description": "a namespace under which the work is categorized."
},
"version": {
"type": "string",
"description": "a version number of the work."
},
"help": {
"type": "object",
"additionalProperties": {
"type": "object"
},
"description": "metadata that can be informed to actor in order to lead them to complition of a work"
},
"about": {
"type": "object",
"additionalProperties": {
"type": "object"
},
"description": "metadata explaining the work itself"
},
"goal": {
"type": "string",
"format": "uuid",
"description": "an unique identifier of the parent work."
},
"input": {
"type": "object",
"additionalProperties": {
"type": "object"
},
"description": "an input required for the work."
},
"activateIf": {
"$ref": "#/$defs/Condition",
"description": "condition that activates this work."
},
"act": {
"$ref": "#/$defs/Action",
"description": "action that is expected to be done by actor."
},
"actor": {
"$ref": "#/$defs/Actor",
"description": "actor who is responsible for task performance."
},
"finishIf": {
"$ref": "#/$defs/Condition",
"description": "condition under which the task is completed."
},
"output": {
"type": "object",
"additionalProperties": {
"type": "object"
},
"description": "output produced by the task."
},
"variable": {
"type": "object",
"additionalProperties": {
"type": "object"
},
"description": "variables associated with the task."
},
"maintainer": {
"type": "string",
"description": "an ID of maintainer"
},
"owner": {
"type": "string",
"description": "an ID of owner"
},
"state": {
"type": "string",
"enum": [
"NOT_ACTIVATED",
"ACTIVATED",
"PENDING",
"FINISHED",
"ABORTED"
],
"description": "a state of iil"
},
"abortIf": {
"$ref": "#/$defs/Condition",
"description": "condition of abortion (mostly due to external factor)"
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "time of last update"
},
"next": {
"type": "object",
"additionalProperties": {
"type": "object"
},
"description": "next task(s) to be performed after the current task."
}
},
"$defs" : {
"Action": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"namespace": {
"type": "string"
},
"version": {
"type": "string"
},
"shortName": {
"type": "string"
},
"name": {
"type": "string"
},
"code": {
"type": "string"
}
}
},
"Actor": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"iconLink": {
"type": "string"
},
"actorList": {
"uniqueItems": true,
"type": "array",
"items": {
"$ref": "#/$defs/Actor"
}
},
"group": {
"type": "boolean"
}
}
},
"Condition": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"namespace": {
"type": "string"
},
"version": {
"type": "string"
},
"shortName": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"TIME",
"LOCATION",
"IIL_INPUT",
"IIL_VARIABLE",
"IIL_STATE",
"EVENT"
]
},
"code": {
"type": "string"
}
}
}
}
}

Up-to-date version of iil model is maintained at https://github.com/JinkiJung/iil.

Attributes

Here you can find more comprehensive explanation of each attribute associated with different context.

for work description

  • UUID goal; : Unique identifier for the goal that the task is associated with.

  • Condition activateIf; : The condition under which the task is activated.

  • Action act; : The action that the task performs.

  • Actor actor; : The actor who performs the task.

  • Condition finishIf; : The condition under which the task is completed.

  • Map<String, Object> input; : The input required for the task.

  • Map<String, Object> output; : The output produced by the task.

  • Map<String, Object> next; : The next task to be performed after the current task.

  • Map<String, Object> variable; : Variables associated with the task.

for metadata

  • UUID id; : Unique identifier for the task.

  • String namespace; : The namespace under which the task is categorized.

  • String version; : Version number of the task.

  • String maintainer; : The person or entity responsible for maintaining the task.

  • String owner; : The owner of the task.

  • IilState state; : The current state of the task.

  • LocalDateTime updatedAt; : The timestamp of when the task was last updated.

  • Map<String, Object> about; : Description of the task.

for interaction handling

  • Map<String, Object> help; : Information that is provided when user requests for help.

for exception handling

  • Condition abortIf; : The condition under which the task is aborted.