index

Данная вики описывает функционал и код проекта под общим названием Compprehensive ITS, созданных для организации автоматизированного обучения с помощью моделей мышления учащихся.

Проекты Compprehensive ITS включают в себя несколько компонентов:

  • its_DomainModel - создание, валидация и преобразование моделей данных (модели данных о конкретных задачах, а также модели деревьев решений, решающих эти задачи).
  • its_Reasoner - вычисления (reasoning) на основе деревьев решений.
  • its_QuestionGen - создание наводящих вопросов на основе деревьев решений, текстовое взаимодействие с пользователем.

Данные компоненты задуманы для использования в качестве библиотек в других проектах, написанных на Java или Kotlin (подробнее про языки ниже), т.е. сами не несут исполняемого кода как такового.
Подробнее о функционале, предоставляемым данными библиотеками, читайте в остальных частях вики (содержание можно видеть слева).

Ниже - о том, как начать использовать данный проект.

Установка зависимостей

Как автор данных проектов, я рекомендую использовать Maven + JitPack для подключения проектов its_* как зависимостей в ваших собственных проектах.
Для этого необходимо:
1. В pom.xml своего проекта указать репозиторий JitPack:

<repositories>
	<repository>
		<id>jitpack.io</id>
		<url>https://jitpack.io</url>
	</repository>
</repositories>

2. Также в pom.xml указать необходимые компоненты как зависимости:

<dependency>
	<groupId>com.github.Max-Person</groupId>
	<artifactId>its_DomainModel</artifactId>
	<version>...</version>
</dependency>
<dependency>
	<groupId>com.github.Max-Person</groupId>
	<artifactId>its_Reasoner</artifactId>
	<version>...</version>
</dependency>
<dependency>
	<groupId>com.github.Max-Person</groupId>
	<artifactId>its_QuestionGen</artifactId>
	<version>...</version>
</dependency>
  • В качестве версии JitPack может принимать название ветки, тег (release tag), или хэш коммита. Для данных проектов я рекомендую указывать либо master-SNAPSHOT для получения самых последних изменений с master-ветки, либо хэш конкретного коммита (например самого нового), чтобы ваш проект не сломался с обновлением библиотек.
  • В зависимости от ваших нужд, вам могут понадобиться не все из этих зависимостей.
    (например, its_QuestionGen может быть не нужен, если вы не взаимодействуете с системой задавания наводящих вопросов)
  • its_Reasoner зависит от its_DomainModel, а its_QuestionGen зависит от них обоих. В связи с этим, вы можете указать только "наиболее дочернюю" зависимость, чтобы подтянуть и родительские тоже.
    (например, указать только its_Reasoner, чтобы подтянуть its_DomainModel)
    • Однако если вы укажете все необходимые зависимости, это поможет вам более точно контролировать их версии..

3. В IntelliJ IDEA надо обновить зависимости Maven (Maven -> Reload All Maven Projects), и все, данный проект настроен для использования в качестве библиотеки.

Note

Обратите внимание, что JitPack собирает нужные артефакты только по запросу - т.е. когда вы подтягиваете зависимость. Это значит, что первое подобное подтягивание скорее всего займет несколько минут - JitPack-у нужно будет время на билд.
После завершения такого долгого билда, в IDEA может отобразиться надпись "Couldn't aqcuire locks", как будто произошла ошибка - в этом случае просто обновитесь еще раз, это будет быстро.

4. Вместе с артефактами данной библиотеки всегда доступен ее исходный код, а в нем и документация (kotlindoc/javadoc). Проект на 90% задокументирован, поэтому смотрите на документацию к используемым вами методам!
Для того, чтобы исходный код и документация тоже подтянулись, нужно в IntelliJ IDEA сделать Maven -> Download Sources and/or Documentation -> Download Sources and Documentation

Альтернативные варианты установки

JitPack позволяет использовать GitHub-репозитории в качестве Maven-артефактов, а т.е. позволяет подтягивать Maven-зависимости прямо из репозиториев. Это кажется самым простым способом использовать данный проект.

Тем не менее, если вы хотите иметь больше контроля над проектом (например если вы сошли с ума хотите поменять в нем какую-то логику), вы можете собрать его самостоятельно:

  1. Склонируйте необходимый репозиторий (или репозитории)
  2. Запустите установку mvn install
    (в IntelliJ IDEA: Maven -> Имя проекта -> Lifecycle -> install)
  3. После установки проект появится как артефакт (соответствующий указанным в pom.xml данным) в вашем локальном Maven-репозитории (.m2)
  4. Укажите в вашем проекте соответствующую зависимость.

Java и Kotlin

Здесь вкратце о том, почему здесь все написано на Kotlin, и что с этим делать.

Kotlin выбран для проекта без особых на то причин - когда он только начинался, мы посчитали что это будет хорошей возможностью познакомиться с новым языком. В принципе, об этом решении мы не пожалели - это оказался действительно интересный и приятный язык.

При этом, Kotlin компилируется под JVM, а значит, может быть вызван из Java-кода. Это значит, что использование данных библиотек возможно из ваших Java-проектов, если вам комфортнее использовать знакомую джаву, чем неизвестный котлин (что, в принципе, понимаемо).
При подобном использовании могут возникать некоторые заминки и различия (например в том, как называются параметры методов, и как они передаются), но существенных проблем в таком подходе нет.

Об этой вики

Эта вики создана и редактируется в отдельном репозитории Compprehensive_ITS_wiki, представляющем отдельное Obsidian-хранилище Markdown файлов.
Данные файлы экспортируются в виде html-страниц с помощью плагина Obsidian Webpage Export, и хостятся с помощью GitHub Pages.

Ранее вы могли видеть более старую версию этой вики в разделе Wiki репозитория its_DomainModel, однако я решил вынести ее как более централизованный справочник после того, как узнал о такой возможности.