Upload
sergiy-beley
View
203
Download
0
Embed Size (px)
Citation preview
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 (наприклад оце з минулого JEEConfhttps://www.youtube.com/watch?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
• Встановити плагін DataNucleushttp://www.datanucleus.org/products/datanucleus/jdo/guides/eclipse.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.ActivityRepository#create(java.lang.String,java.lang.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 "Дата початку"
• Недолік в тому що якщо сигнатура методу міняється то слід міняти це і в файлах перекладу
Локалізуємо поля на формах для перегляду SimpleObject
• Наприклад для поля startDate додаємо в translations-uk.po такі рядки#: domainapp.dom.modules.activity.ActivityObject#startDate
#: domainapp.dom.modules.activity.ActivityRepository#create(java.lang.String,java.lang.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;
Кінець
• Питання ?
• Зауваження ?
• Пропозиції ?