SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
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;
Кінець
• Питання ?
• Зауваження ?
• Пропозиції ?

Contenu connexe

Similaire à IT Rally - ISIS

Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon Meetups
 
Руйнуємо .NET Міфи
Руйнуємо .NET МіфиРуйнуємо .NET Міфи
Руйнуємо .NET МіфиSerhiy Kalinets
 
"Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st..."Incremental rollouts and rollbacks with business metrics control at every st...
"Incremental rollouts and rollbacks with business metrics control at every st...Fwdays
 
природна і економна дорожня карта для переходу команди розробки на тест центр...
природна і економна дорожня карта для переходу команди розробки на тест центр...природна і економна дорожня карта для переходу команди розробки на тест центр...
природна і економна дорожня карта для переходу команди розробки на тест центр...Andrii Podanenko
 
Чим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас ХорунжийЧим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас ХорунжийSigma Software
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADayОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADay
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Заготівля тестових даних для автоматичних тестів» QADayGoQA
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsPavlo Iuriichuk
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoGlobalLogic Ukraine
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівStfalcon Meetups
 
Як прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівЯк прокачати трьох студентів за п’ять тижнів
Як прокачати трьох студентів за п’ять тижнівArtem Henvald
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов АндрійOleg Nazarevych
 
економічні аспекти моєї професії
економічні аспекти моєї професіїекономічні аспекти моєї професії
економічні аспекти моєї професіїWarriorUA
 
Деякі підводні камені при розробці проектів в сфері електронної комерції
Деякі підводні камені при розробці проектів в сфері електронної комерціїДеякі підводні камені при розробці проектів в сфері електронної комерції
Деякі підводні камені при розробці проектів в сфері електронної комерціїOleh Korkh
 
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»GoQA
 
Документація великих проектів
Документація великих проектівДокументація великих проектів
Документація великих проектівWeb Systems
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...Fwdays
 
Як бути QA на великому проекті
Як бути QA на великому проектіЯк бути QA на великому проекті
Як бути QA на великому проектіMykhailo Sheludiakov
 
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)Drupaltour
 

Similaire à IT Rally - ISIS (20)

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

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. Кінець • Питання ? • Зауваження ? • Пропозиції ?