SlideShare a Scribd company logo
Apache ISIS
Сергій Белей
Про себе
• Живу 31 рік
• Програмую 15 років
• Програмую за гроші 6-8 років (точно не памятаю)
• Програмую за гроші повний робочий день на java 4 роки
• Цікавився військовою технікою та походами в гори
• Одружений, маю трьох дітей та собаку
Що ви почуєте на цій доповіді
В 4ох епізодах ви взнаєте про:
• Що таке DDD і навіщо воно
• Як я вибрав Spring Roo (на що запізно звернув увагу)
• Основний недолік ISIS
• Процес розробки з ISIS (створення проекту і налаштування
середовища)
• Як додати кнопку і до чого було DDD на початку
• Те чого дуже мало на інших ресурсах по ISIS
Що таке DDD і навіщо воно
Епізод 1
Звичайна програмка виглядає отак
Деколи це все ділять на шари (layers)
Де треба зробити зміни при додаванні
поля в бізнес об’єкт
А для бізнесу потрібно тільки це
І ще бажано не забувати про
• уніфікований UX
Spring Roo і всі всі всі
Епізод 2
Погуглимо яка є інформація
З перших п’яти посилань
• Є офіційний сайт
• Є приклади
• Можна знайти прикольне кенгурятко
• І статтю на вікіпедії
Процес розробки виглядає так:
В консолі 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
Результат
• Ми зробили багато роботи і отримали багато коду
• для одного бізнес об’єкта !!!!
Чому відмовився
• Щоб внести зміни треба вивчити нову мову (команди консолі roo)
• Або робити зміни в багатьох файлах при додаванні одного поля
• Локалізація українською (бо програмка писалась для українця)
• Робота з датами (можливо проблема вирішується, але в мене не було
досить часу на це)
Закон технології Лермана. Будь-яку технічну проблему можна
вирішити, маючи достатньо часу і грошей.
Наслідок Лермана. Вам завжди буде не вистачати або часу, або
грошей.
ISIS
Епізод 3
Погуглимо яка є інформація
З перших п’яти посилань
• Стаття в вікіпеді
• Країна де є бородаті мужики з автоматами
• Фото бородатих мужиків з автоматами
• Офіційний сайт фреймворка
• Ще одна країна де живуть бородаті
мужики з автоматами
Просто додай apache
Насправді інформації більш ніж
досить:
• Офіційний сайт з купою
прикладів і відео фрагментів
• Проекти на GitHub
• Відео на Youtube (наприклад
оце з минулого JEEConf
https://www.youtube.com/watc
h?v=BNGUqZ6YE-M )
Створення проекту
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
І ви отримаєте проект з двома класами
• Один відповідає бізнес об’єкту
• А другий містить опис операцій з цими об’єктами
Настройка 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
Процес розробки коротко
• До бізнес обєкта (i.e. SimpleObject) ви додаєте приватні поля,
генеруєте сетери і гетери
• Анотуєте гетери щоб задати назву поля на UI, правила валідації,
місце поля в таблиці і на формі редагування
Ви отримаєте
• Веб аплікацію
• Рест сервіс
• Онлайн демо можна подивитись
тут http://mmyco.co.uk:8180/isis-
onlinedemo/
Веб аплікація (що і де)
• Для визначення операцій з певним типом бізнес об’єктів
використовується репозитарій (для SimpleObject це SimpleObjects
і я б радив переіменівати його в SimpleRepository щоб не
плутатись)
Веб аплікація (що і де)
• Ось операція з одним параметром name
Веб аплікація (що і де)
• Ось операція з багатьма
параметрами
По розробці фіч це все
• По розробці фіч є багато інформації
• Можна використовувати як покроковий посібник відео про яке я
писав раніше https://www.youtube.com/watch?v=BNGUqZ6YE-M
Говори українською
Епізод 4 - останній
Дозволяємо локалізацію
• Копіюємо translations.po в translations-uk.po
• Розкоментовуємо рядочок в в isis.properties
Локалізуємо поля на формах в
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 "Дата початку"
• Недолік в тому що якщо сигнатура
методу міняється то слід міняти
це і в файлах перекладу
Локалізуємо поля на формах для
перегляду 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 "Дата початку"
Вирішуємо проблеми з датами
• Мені треба щоб день місяць і рік вводився через DatePicker тільки
цифрами і в певному форматі
• І щоб дата зберігалась без часу (лише дата) заміняємо DateTime
на org.joda.time.LocalDate;
Кінець
• Питання ?
• Зауваження ?
• Пропозиції ?

More Related Content

PPTX
Claudia Kincaid's Tips for Running Away
PPT
Strumenti di Comunicazione Integrata per PMI e Startup Social Engagement List...
PPTX
Youtube clip Assignment066733_Varaphon Kanphon
PPTX
Claudia kincaid's
PPTX
Claudia kincaid's
PPTX
Hist 140
PPTX
Hist 140 theme 3 part 2
PDF
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
Claudia Kincaid's Tips for Running Away
Strumenti di Comunicazione Integrata per PMI e Startup Social Engagement List...
Youtube clip Assignment066733_Varaphon Kanphon
Claudia kincaid's
Claudia kincaid's
Hist 140
Hist 140 theme 3 part 2
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...

Similar to IT Rally - ISIS (20)

PPTX
Stfalcon QA Meetup 31.01.2020
PPTX
Руйнуємо .NET Міфи
PDF
"Incremental rollouts and rollbacks with business metrics control at every st...
PPTX
природна і економна дорожня карта для переходу команди розробки на тест центр...
PPTX
Чим простіше - тим краще, Стас Хорунжий
PDF
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
PDF
Павло Юрійчук — Перехід на Angular.js. Howto
PDF
Global logic tech talk switching to Angular.js
PDF
Як прокачати трьох студентів за п’ять тижнів
PDF
Як прокачати трьох студентів за п’ять тижнів
PDF
Корнілов Андрій
PPTX
економічні аспекти моєї професії
PDF
Деякі підводні камені при розробці проектів в сфері електронної комерції
PPTX
" GraphQL_ The Good parts", Sergii Lischuk.pptx
PPTX
ОЛЕГ ЗАРЕВИЧ «Взаємодії між DevOps і QA»
PPTX
Yuliia Pieskova: Робота зі стейкхолдерами за допомогою AI (UA)
PPTX
#0 Вступна лекція
PPTX
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
PDF
Документація великих проектів
PDF
"Elements of functional programming in C# based on Language-Ext library as an...
Stfalcon QA Meetup 31.01.2020
Руйнуємо .NET Міфи
"Incremental rollouts and rollbacks with business metrics control at every st...
природна і економна дорожня карта для переходу команди розробки на тест центр...
Чим простіше - тим краще, Стас Хорунжий
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
Павло Юрійчук — Перехід на Angular.js. Howto
Global logic tech talk switching to Angular.js
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнів
Корнілов Андрій
економічні аспекти моєї професії
Деякі підводні камені при розробці проектів в сфері електронної комерції
" GraphQL_ The Good parts", Sergii Lischuk.pptx
ОЛЕГ ЗАРЕВИЧ «Взаємодії між DevOps і QA»
Yuliia Pieskova: Робота зі стейкхолдерами за допомогою AI (UA)
#0 Вступна лекція
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
Документація великих проектів
"Elements of functional programming in C# based on Language-Ext library as an...
Ad

IT Rally - ISIS

  • 2. Про себе • Живу 31 рік • Програмую 15 років • Програмую за гроші 6-8 років (точно не памятаю) • Програмую за гроші повний робочий день на java 4 роки • Цікавився військовою технікою та походами в гори • Одружений, маю трьох дітей та собаку
  • 3. Що ви почуєте на цій доповіді В 4ох епізодах ви взнаєте про: • Що таке DDD і навіщо воно • Як я вибрав Spring Roo (на що запізно звернув увагу) • Основний недолік ISIS • Процес розробки з ISIS (створення проекту і налаштування середовища) • Як додати кнопку і до чого було DDD на початку • Те чого дуже мало на інших ресурсах по ISIS
  • 4. Що таке DDD і навіщо воно Епізод 1
  • 6. Деколи це все ділять на шари (layers)
  • 7. Де треба зробити зміни при додаванні поля в бізнес об’єкт
  • 8. А для бізнесу потрібно тільки це
  • 9. І ще бажано не забувати про • уніфікований UX
  • 10. Spring Roo і всі всі всі Епізод 2
  • 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 щоб не плутатись)
  • 24. Веб аплікація (що і де) • Ось операція з одним параметром name
  • 25. Веб аплікація (що і де) • Ось операція з багатьма параметрами
  • 26. По розробці фіч це все • По розробці фіч є багато інформації • Можна використовувати як покроковий посібник відео про яке я писав раніше https://www.youtube.com/watch?v=BNGUqZ6YE-M
  • 28. Дозволяємо локалізацію • Копіюємо translations.po в translations-uk.po • Розкоментовуємо рядочок в в isis.properties
  • 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;
  • 32. Кінець • Питання ? • Зауваження ? • Пропозиції ?