Смяна на калкулатори на сайта без програмисти

сайта
Здравей Habr!

В тази статия ще опишем какво приложение намерихме на технологията Excel Services, която е част от SharePoint сървъра, за изграждане на калкулатори за банкови продукти.

През 2011 г. разработихме уебсайта на VTB24 Bank, като една от важните задачи, които трябва да реши новият уебсайт, беше да предостави удобен инструмент за създаване и поддържане на калкулатори и приложения, свързани с продуктите на банката. Например, за продукта за кредитиране AutoStandard, банката предоставя на потребителя на сайта възможност самостоятелно да изчисли размера на плащанията с помощта на калкулатор и ако всичко ги устройва, те могат да изпратят заявление.

Как обикновено протича процесът на актуализиране на калкулатора?

В повечето случаи за банковите служители е удобно да форматират и координират изчислителната логика на калкулаторите под формата на Excel файлове, така че процесът на извършване на промени в калкулатора на сайта може да изглежда така:

Ако трябва да направите някои промени или да добавите нов продукт, се стартира процес с много участници:

  • специалистите на клиента координират и описват задачата (формира се Excel файл с изчисления и някои технически спецификации);
  • възлага задача на изпълнителя;
  • изпълнителят поставя задача на екипа за разработка да въведе нова логика на изчисление;
  • командата добавя нов калкулатор или променя логиката на стария.
В зависимост от „мащаба на трагедията“ този процес може да отнеме много време. В нашия случай тази ситуация не отговаряше на клиента, тъй като информацията трябва да се появи на сайта в съответствие с определени разпоредби. Например, новите ставки вече са в сила, но калкулаторът все още изчислява според старите. По правило такива задачи от същия тип също не носят на екипа за разработка на разработчикаудоволствие, много по-добре е да създадете нова интересна услуга, отколкото да променяте цените на продуктите и логиката на плащане всеки ден.

Към какво се стремим

Идеалното решение на този проблем е да се предостави на клиента възможност самостоятелно да променя параметрите на изчислението и да създава нови продуктови калкулатори.

калкулатори

От гледна точка на техническото изпълнение може да изглежда така:

  • Всичко се изчислява от самия Excel, без прехвърляне на формули на други езици (JS, C # и др.).
  1. използвате технология или библиотеки на Excel Services за работа с Excel;
  2. всички данни от уеб формата, които потребителят въвежда, се записват в листа за въвеждане на данни;
  3. извършва се калкулация на книга;
  4. резултатите от изчислението се четат и показват в уеб формуляра.
Предимство:Клиентът вече може да промени файла и да качи нова логика на сайта чрез уеб интерфейса.

  • Ние създаваме дизайнер на уеб формуляри с картографиране към полета на Excel.
  1. ние дефинираме всички полета, които са необходими за автоматизиране на съществуващи калкулатори;
  2. въз основа на списъка с полета получаваме контроли, които могат да се използват за автоматизиране на всички калкулатори (кутия за отметка, радиогрупа, плъзгач и др.);
  3. ние формираме списък с настройки и определяме контролите на уеб формуляра, техните стойности по време на инициализация, гранични стойности за валидиране и всякакви други параметри, за които има достатъчно въображение;
  4. също в листа с настройки посочваме от кои клетки ще бъде прочетен резултатът от изчислението, който потребителят ще види на страницата.
Предимство:Клиентът вече може бързо да създаде нов стандартен продуктов калкулатор, без да включва програмист.

Ето как, например, въвеждането на данни и листът с резултатите от изчисленията закредитен калкулатор "AutoStandard" на уебсайта VTB24:

сайта

Помислете за подхода за създаване на конструктор на калкулатор.

Техническо изпълнение

Тъй като разполагахме с SharePoint 2010 като платформа за публичния сайт на VTB24, Excel Services беше избран като „двигател“ за калкулаторите.

Задачата на услугата не включва визуализация на данни, тя предоставя само програмни интерфейси за работа с Excel файл, зареден в паметта, и ви позволява да зареждате / запазвате файл, да осъществявате достъп до неговите клетки за четене и запис, да извършвате изчисления, а също така предоставя REST API и API за уеб услуга за тези функции. Можете да научите повече за всички възможности в тази статия.

Една от важните характеристики на услугата за нашата задача е, че изходният файл се зарежда за сесията на потребителя, който работи с портала, и изчисленията в книгата на един потребител не влияят на резултатите от изчисленията на друг потребител.

смяна

Също така трябваше да вземем предвид възможността за хоризонтално мащабиране до няколко сървъра, ако капацитетът на един сървър не е достатъчен за обслужване на голям брой потребители. Сред съществените недостатъци са високите базови изисквания от страна на софтуера (изисква изданието Enterprise на SharePoint сървъра), а ограниченията включват липсата на поддръжка за изпълнение на макроси.

Време е да съберете вашия пример за прост калкулатор

какво си мислим

За да се съсредоточим върху решението, а не върху тънкостите на банковите продукти, ние не взехме сложни реални формули, въз основа на които работят например калкулаторите на уебсайта VTB24. Например, избрахме доста проста формула, която ви позволява да изчислите месечното плащане: където A -месечна вноска, S — сума на кредита, p — лихвен процент на месец, n — брой месеци на погасяване на кредита.

Нека започнем с подготовката на файла

Създаваме лист, който ще приема входни данни за изчисления.

калкулатори

И така, следните полета са достъпни за въвеждане на потребителя: сума на кредита, брой месеци и избор на валута. Лихвеният процент се дава като константа. В резултат на това получаваме размера на месечното плащане по формулата, която избрахме по-горе. Сега трябва да дефинираме кои контроли ще бъдат достъпни за потребителя, за да въведе тези стойности в уеб формуляра. За интереса на примера, нека вземем различни контроли. В резултат на това допълнително получаваме следните листове:

Лист с настройки. Съдържа всичко необходимо за уеб формуляр за изчертаване и инициализиране на контроли. Например, ред номер 3 показва, че трябва да създадете падащ списък във формуляра, да го попълните със стойности от друг лист на Excel (колона RangeSet), да изберете стойността по подразбиране и да напишете резултата от промяната на това поле от потребителя в клетката, посочена в колоната PutCell. Полетът на фантазията не е ограничен от нищо и можете да излезете с всякакви метаданни, които са необходими за решаване на проблема (например някои калкулатори VTB24 използват динамично преизчисляване на минималните и максималните стойности на някои полета в зависимост от данните, въведени от потребителя, или се използват превключватели на режими - в зависимост от избраната стойност на радиогрупата, различни листове се използват за изчисления).

Лист с директории(в нашия случай това са обменни курсове).

сайта

Сега файлът съдържа цялата необходима информация и ще бъде достатъчно администраторът на портала да го качи на сървъра на SharePoint и да посочи само двепараметър: пътят до файла и името на листа с диапазон от клетки за настройки.

смяна

сайта

Нека да преминем към създаването на уеб интерфейс и код за конструктора на калкулатора.

Прочетете настройките от файла и генерирайте класове за бъдещи контроли
Създаване на контроли и логика за инициализация
Получаваме готовия формуляр на страницата

В резултат на това получаваме готов формуляр на страницата, при промяна на входните параметри на който се прави запис в посочените клетки на Excel, резултатите се преизчисляват и новите резултати се показват на страницата.

калкулатори
Забележка: за да опростим примера, не създадохме специални контроли за показване на стойности на „диапазон“ за сумата и срока на заема. В нашия случай те ще са необходими само за проверка от страна на клиента (javaScript) на въведените стойности.Разбира се, този пример трябва значително да се подобри до корпоративно решение:
  • преместете логиката в отделна уеб услуга;
  • добавяне на асинхронни ajax заявки за актуализиране на страници;
  • пишете логика в js за по-удобно поведение на визуалните елементи;
  • направете по-красив (удобен) дизайн (например, за да въведете сумата на кредита);
  • и т.н.
В този опростен пример си поставихме друга задача - да покажем самата концепция.

полезни връзки

Никита Кличников, SharePoint ADV/мениджър за развитие на уеб инженеринг Рустам Кафеев, SharePoint ADV/разработчик на уеб инженеринг