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), и все, данный проект настроен для использования в качестве библиотеки.
Обратите внимание, что 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-зависимости прямо из репозиториев. Это кажется самым простым способом использовать данный проект.
Тем не менее, если вы хотите иметь больше контроля над проектом (например если вы сошли с ума хотите поменять в нем какую-то логику), вы можете собрать его самостоятельно:
- Склонируйте необходимый репозиторий (или репозитории)
- Запустите установку
mvn install
(в IntelliJ IDEA: Maven -> Имя проекта -> Lifecycle -> install) - После установки проект появится как артефакт (соответствующий указанным в pom.xml данным) в вашем локальном Maven-репозитории (.m2)
- Укажите в вашем проекте соответствующую зависимость.
Java и Kotlin
Здесь вкратце о том, почему здесь все написано на Kotlin, и что с этим делать.
Kotlin выбран для проекта без особых на то причин - когда он только начинался, мы посчитали что это будет хорошей возможностью познакомиться с новым языком. В принципе, об этом решении мы не пожалели - это оказался действительно интересный и приятный язык.
При этом, Kotlin компилируется под JVM, а значит, может быть вызван из Java-кода. Это значит, что использование данных библиотек возможно из ваших Java-проектов, если вам комфортнее использовать знакомую джаву, чем неизвестный котлин (что, в принципе, понимаемо).
При подобном использовании могут возникать некоторые заминки и различия (например в том, как называются параметры методов, и как они передаются), но существенных проблем в таком подходе нет.
Об этой вики
Эта вики создана и редактируется в отдельном репозитории Compprehensive_ITS_wiki, представляющем отдельное Obsidian-хранилище Markdown файлов.
Данные файлы экспортируются в виде html-страниц с помощью плагина Obsidian Webpage Export, и хостятся с помощью GitHub Pages.
Ранее вы могли видеть более старую версию этой вики в разделе Wiki репозитория its_DomainModel, однако я решил вынести ее как более централизованный справочник после того, как узнал о такой возможности.