Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

IT Rally - ISIS

475 views

Published on

Development with Apache ISIS

Published in: Software
  • Be the first to comment

IT Rally - ISIS

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

×