vlivashkin / crm4telecom Goto Github PK
View Code? Open in Web Editor NEWA simple consumer relationship system for small Internet service provider
Home Page: http://edu-netcracker.com:8181/
A simple consumer relationship system for small Internet service provider
Home Page: http://edu-netcracker.com:8181/
Существуют некоторые проблемы с allocate resource - провижининг падает на этом шаге.
Возможные причины:
Таска не проходит, даже если никаких ресурсов не надо выделять - так что бд не при чем.
Сейчас стейт-машина работает так: есть emum'ы OrderStatus и OrderStep. Первый говорит об общем статусе заявки (NEW, OPENED, CLOSED, CANCELLED), второй говорит о текущем шаге процесса. Первый шаг и статус выставляются руками, дальше каждый шаг имеет метод nextStep(flag) и поле doneStatus - cтатус, который выставляется при завершении данного шага. Все таски по своей сути имеют тип юзертаски - таски, которая должна прогоняться при участии пользователя. Это таски PRE_CONFIRM, SEND_TO_TECH_SUPPORT, TECHNITIAN_APPOINT, POST_CONFIRM. Юзерстори такая: девочка сидит за телефоном, ей поступила заявка подлючить чуваку интернет. Она создает новый ордер, заполняет его. Первая таска - PRE_CONFIRM - подтвердить, что чуваку это надо. Потом на выбор - либо мы отправляем ишу тех саппорту и они разрешают ему инет на своем ПО, либо отправляем ишу технишану и он приходит, после того как он справился проставляем эту таск сделанной. Последняя - POST_CONFIRM - подтвердить, что клиент доволен.
Как я вижу дизайн:
* Имеет смысл запретить редактирование ордера при всех статусах, кроме new.
Причина: при прогоне ордера добавляются/удаляются продукты, аллокейтятся ресурсы и так далее. Менять завершенный ордер бесполезно, находящийся в процессе - неправильно.
Имеет смысл переписать документацию в wiki проекта.
INTRO.
@BeforeClass - выполнется перед инициализацией класса (статики)
@before - выполняется перед созданием инстанса, т.е. перед каждым тестом (методом-тестом)
@afterclass и @after - после окончания всех тестов в классе и кадждого теста соответственно
Разбор ошибок на примере CustomerManagerTest:
a) Я не уверен, но на сколько я понимаю аннотации stateless и ejb там не нужны
b) Писать ничего в консоль не нужно. Тест либо проходит, либо падает, никто не будет читать его выхлоп вручную, на то он и автотест.
c) Возвращать null как объект для проверки в общем случае плохо. Нужно создать какой-то объект заглушку и возвращать его
d) Пустые методы не нужны
e) Naming у тестов совершенно не говорит о том, что проверяет тест + на каждый кейс - отдельный тест. Например:
public void testCreateCustomer_shouldThrowNullPonterException_whenCustomerIdIsNull()
f) Передавать явно константу (-1) не стоит - заведите для нее private static поле
g) getCustomer принимает Long. Если уж делать каст, то к Long, а не к long, чтобы не порождать лишний boxing/unboxing, а лучше пользоваться строковыми литералами: -1L - long, 0.02F - float, 0.15D - double (обратите внимание на upper case, иначе с long'ом могут проблемы - он похож на 1)
h) На exception проверять надо так: @test(expected=NullPointerException.class)
Сейчас есть две автотаски, которые надо реализовать:
$resource = {$static_ip, $phone_number}
Общий план - просто ордера для кастомера должны создаваться только на создание, отключение должно производиться из страницы кастомера, таблицы products.
Общая задача: создать проект стабы и бд для него
Создать новый проект в корне репозитория, назвать его crm4tlecom_stub
Зайти стандартными креденшелами на бд и создать там нового юзера с именем crm4telecom_stub
Создать под ним таблички:
Все это можно делать по аналогии с тем, что уже есть.
Залить кастомеров и продукты из соответствующих таблиц.
Сгнерить в netbeans сущности по этим таблицам, и они должны быть в единственном числе
Когда создается ордер, обязательными параметрами являются вот эти:
Хотя на самом деле в бд их больше:
Соответственно залить кастомера, не заполняя всех обязательных полей из бд невозможно. Нужно сделать так, чтобы в бд обязательными были только поля, которые обязательны в ui.
Также проверить, возможно ли получить такую же багу при создании ордера
Итак, проект crm4telecom_stub играет роль биллинговой системы и в данном случае является сервером soap-вебсервисов. Соответственно на данном шаге нужна реализация всех методов, которые предоставляет вебсервис. Это методы:
Уже есть: таблицы бд, сущности бд. Надо:
Общая задача: править явные неточности в названиях, готовить систему к интеграции со стабой.
Замеченные проблемы:
Надо бы переехать на новый primefaces 5.1
Причины:
Через библиотеку Primefaces реализовать веб-представление следующих страниц:
Связать веб-формы с API для БД.
Make a header for product selection menu
Надо сделать шедулер, который раз в день в определенное время снимает деньги у всех кастомеров в зависимости от купленных ими продуктов. По запросу "java scheduler" вторая ссылка (хотя первая вообще на javadoc - красота):
(да-да, именно шедулер, никаких таймеров)
Я думаю, что
В результате шедулер должен:
статусы должны быть прописаны в enum, как в основном проекте
если считаешь, что надо статусы по другому назвать - welcome
хм, надо кстати запилить в wdsl метод setStatus(customerId) на случай если ты хочешь отключить кастомера из основного проекта
Итак, мы имеем проект стабы и базу, которая хранит юзеров и их счета. Нужно реализовать возможность менять им количество денег на счету.
Как я это вижу: нам нужна страничка на jsf, которая будет содержать табличку с колонками
Что важно:
Написать DDl скрипт,создающий базу данных согласно диаграмме.
Написать скрипт создание заказчиков ( 2 экземпляра).
Подумать и реализовать JPA соотвествующй данной базе данных.
Я здесь буду писать некоторые общие замечания, а в комментариях конкретные места, которые нужно исправить.
В коде UserBean, например, где-то есть пробел между () и {, а где-то его нет. Так быть не должно (везде пробел, везде только один). В этом же классе разные отступы на разной глубине вложенности.
*Пролистайте какой-нибудь коротенький codestyle tutorial по Java, например, http://google-styleguide.googlecode.com/svn/trunk/javaguide.html (здесь вам нужно далеко не все)
Основная задача: создать wsdl-файл, который будет определять доступные методы вебсервиса
Прочитать про restful и soap вебсервисы и быть готовым рассказать в чем разница и что лучше
Разобраться, как генерить wsdlку, которой будут генериться все исходники для клиента и сервера
Продумать, какие методы необходимы для биллинга (смотри структуру стабы в другой ише), навскидку:
Продумать, какие параметры должны передаваться и как их назвать
Cгенерить ее, создать и клиента, и сервер в soapui
Закоммитить и wsdlку, и проекты soapui
открываешь страницу Add Order в reference selector должны при вводе customer появляться подсказки не только по номеру но и по имени и фамилии
Скорее всего она произошла из-за переименования таблицы или столбца
Обзор:
Нужно запилить отдельный блок на странице создания ордера, в котором будет написано, сколько по этому ордеру должен будет платить кастомер за подлючение и в месяц.
Critical:
High:
Normal:
Имеет смысл выбросить дампы базы куда-нибудь из корня репозитория, или удалить вообще. Если потребуются, из старых коммитов подтянем.
Связать методы в стабе с методами в основном проекте
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.