Investbook поддерживает конечный список поддерживаемых брокеров из "коробки", который может быть расширен за счет расширений. Расширения могут распространяться вами бесплатно или на платной основе под своим брендом. Разработка расширений должна вестись в вашем собственном репозитории с использованием лицензии совместимой с GNU Affero GPLv3.
Создайте новый, например maven, проект и добавьте зависимости
<packaging>jar</packaging>
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.spacious-team</groupId>
<artifactId>broker-report-parser-api</artifactId>
<version>RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.spacious-team</groupId>
<artifactId>table-wrapper-excel-impl</artifactId>
<!-- ... или table-wrapper-xml-impl, если брокер предоставляет отчеты в xml файле -->
<version>RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>RELEASE</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
</dependencies>
Зависимости добавляются со scope provided, т.к. необходимы только для компиляции. В runtime указанные зависимости предоставит приложение Investbook.
Далее напишите классы согласно документации
Broker Report Parser API.
По окончании разработки укажите на фабриках, реализующих интерфейсы BrokerReportFactory
и ReportTablesFactory
аннотации @Component
, чтобы приложение Investbook могло создать объекты фабрик через механизм IoC:
@org.springframework.stereotype.Component
public class MyBrokerReportFactory implements BrokerReportFactory {
// ...
}
@org.springframework.stereotype.Component
public class MyReportTablesFactory implements ReportTablesFactory {
// ...
}
Расширение для брокера готово. Соберите jar-архив
mvn clean install
Выгрузите исходный код Investbook из репозитория и в pom.xml в секции "dependencies" подключите ваше расширение
<dependencies>
...
<dependency>
<groupId>your-group-id</groupId>
<artifactId>your-artifact</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
Запустите Investbook и загрузите отчеты нового брокера.
Вы можете передать jar-архив с вашим расширением другим пользователям приложения Investbook платно или бесплатно. Проинструктируйте пользователей поместить jar файл расширения в директорию
<директория-установки>/app/extensions/
(если приложение установлено через msi инсталлятор) или<директория-установки>/extensions/
(если приложение установлено из zip архива)
и перезапустить приложение. После этого пользователи увидят наименование вашего брокера, возвращаемое
ReportFactory.getBrokerName()
, в списке поддерживаемых брокеров.