2. Про себе
• Живу 31 рік
• Програмую 15 років
• Програмую за гроші 6-8 років (точно не памятаю)
• Програмую за гроші повний робочий день на java 4 роки
• Цікавився військовою технікою та походами в гори
• Одружений, маю трьох дітей та собаку
3. Що ви почуєте на цій доповіді
В 4ох епізодах ви взнаєте про:
• Що таке DDD і навіщо воно
• Як я вибрав Spring Roo (на що запізно звернув увагу)
• Основний недолік ISIS
• Процес розробки з ISIS (створення проекту і налаштування
середовища)
• Як додати кнопку і до чого було DDD на початку
• Те чого дуже мало на інших ресурсах по ISIS
11. Погуглимо яка є інформація
З перших п’яти посилань
• Є офіційний сайт
• Є приклади
• Можна знайти прикольне кенгурятко
• І статтю на вікіпедії
12. Процес розробки виглядає так:
В консолі roo вводимо команди і все генерується
• project --topLevelPackage org.crc83.activity
• jpa setup --provider HIBERNATE --database POSTGRES
• entity jpa --class ~.domain.Activity --testAutomatically
• field string --fieldName workPermit --notNull
• field string --fieldName convName --notNull
• field date --type java.util.Date --fieldName startDate --notNull
• field date --type java.util.Date --fieldName endDate --notNull
• field number --type int --fieldName operatorId --notNull
• field string --fieldName phoneNumber --notNull
• field string --fieldName customerFullName --notNull
• field string --fieldName sellerFullName --notNull
• hint web mvc
• web mvc setup
• web mvc all --package ~.web
13. Результат
• Ми зробили багато роботи і отримали багато коду
• для одного бізнес об’єкта !!!!
14. Чому відмовився
• Щоб внести зміни треба вивчити нову мову (команди консолі roo)
• Або робити зміни в багатьох файлах при додаванні одного поля
• Локалізація українською (бо програмка писалась для українця)
• Робота з датами (можливо проблема вирішується, але в мене не було
досить часу на це)
Закон технології Лермана. Будь-яку технічну проблему можна
вирішити, маючи достатньо часу і грошей.
Наслідок Лермана. Вам завжди буде не вистачати або часу, або
грошей.
16. Погуглимо яка є інформація
З перших п’яти посилань
• Стаття в вікіпеді
• Країна де є бородаті мужики з автоматами
• Фото бородатих мужиків з автоматами
• Офіційний сайт фреймворка
• Ще одна країна де живуть бородаті
мужики з автоматами
17. Просто додай apache
Насправді інформації більш ніж
досить:
• Офіційний сайт з купою
прикладів і відео фрагментів
• Проекти на GitHub
• Відео на Youtube (наприклад
оце з минулого JEEConf
https://www.youtube.com/watc
h?v=BNGUqZ6YE-M )
18. Створення проекту
mvn archetype:generate
-D archetypeGroupId=org.apache.isis.archetype
-D archetypeArtifactId=simpleapp-archetype
-D archetypeVersion=1.8.0
-D groupId=com.mycompany
-D artifactId=myapp
-D version=1.0-SNAPSHOT
-B
19. І ви отримаєте проект з двома класами
• Один відповідає бізнес об’єкту
• А другий містить опис операцій з цими об’єктами
20. Настройка Eclipse
• Встановити плагін DataNucleus
http://www.datanucleus.org/products/datanucleus/jdo/guides/eclips
e.html
• Додати шаблони (editor templates)
http://isis.apache.org/intro/resources/editor-templates.html
• Для того щоб легше було редагувати локалізацію:
http://marketplace.eclipse.org/content/gted-gettext-editor
21. Процес розробки коротко
• До бізнес обєкта (i.e. SimpleObject) ви додаєте приватні поля,
генеруєте сетери і гетери
• Анотуєте гетери щоб задати назву поля на UI, правила валідації,
місце поля в таблиці і на формі редагування
22. Ви отримаєте
• Веб аплікацію
• Рест сервіс
• Онлайн демо можна подивитись
тут http://mmyco.co.uk:8180/isis-
onlinedemo/
23. Веб аплікація (що і де)
• Для визначення операцій з певним типом бізнес об’єктів
використовується репозитарій (для SimpleObject це SimpleObjects
і я б радив переіменівати його в SimpleRepository щоб не
плутатись)
26. По розробці фіч це все
• По розробці фіч є багато інформації
• Можна використовувати як покроковий посібник відео про яке я
писав раніше https://www.youtube.com/watch?v=BNGUqZ6YE-M
29. Локалізуємо поля на формах в
SimpleRepository
• Наприклад для поля startDate
додаємо в translations-uk.po такі
рядки
#:
domainapp.dom.modules.activity.ActivityR
epository#create(java.lang.String,java.l
ang.String,java.lang.String,java.util.Da
te,java.util.Date,int,java.lang.String,j
ava.lang.String,java.lang.String,int,jav
a.lang.String,int,java.lang.String,int)
msgid "startDate"
msgstr "Дата початку"
• Недолік в тому що якщо сигнатура
методу міняється то слід міняти
це і в файлах перекладу
30. Локалізуємо поля на формах для
перегляду SimpleObject
• Наприклад для поля startDate додаємо в translations-uk.po такі рядки
#: domainapp.dom.modules.activity.ActivityObject#startDate
#:
domainapp.dom.modules.activity.ActivityRepository#create(java.lang.String,java.lan
g.String,java.lang.String,java.util.Date,java.util.Date,int,java.lang.String,java.
lang.String,java.lang.String,int,java.lang.String,int,java.lang.String,int)
msgid "startDate"
msgstr "Дата початку"
31. Вирішуємо проблеми з датами
• Мені треба щоб день місяць і рік вводився через DatePicker тільки
цифрами і в певному форматі
• І щоб дата зберігалась без часу (лише дата) заміняємо DateTime
на org.joda.time.LocalDate;