O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

IT Rally - ISIS

474 visualizações

Publicada em

Development with Apache ISIS

Publicada em: Software
  • Seja o primeiro a comentar

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

×