Преглед пројекта
Развио сам VSTO додатак за Microsoft Outlook који надгледа један изабрани налог и сваку пристиглу поруку аутоматски претвара у јединствен PDF документ, заједно са свим прилозима, а затим га шаље у пословни систем клијента. Корисник не ради ништа: пошта стиже као и до тада, а архивирање се дешава у позадини, у програму који запослени ионако држе отворен цео дан.
Програмерски изазов
Најтежи део није било прављење PDF-а него поуздано хватање поруке. Outlook догађај за нову пошту уме да јави више порука одједном, да се јави пре него што је порука до краја преузета са сервера и да се, у несрећним случајевима, јави двапут за исту поруку. Уз то, рад са Outlook објектима мора да остане на главној нити, док прављење PDF-а и слање трају предуго да би се ту обављали — иначе би се програм заледио кориснику док куца одговор.
Други изазов били су прилози. PDF датотеке које стижу мејлом често су оштећене или настале у алатима који не поштују стандард, па их библиотека за спајање одбија. Решење је морало да их прихвати, а не да стане на првом неисправном документу.
Како је решење организовано
- Надзор једног налога – додатак прати тачно онај поштански сандучић који је изабран у подешавањима, а поруке из осталих налога у истом Outlook профилу не дира.
- Јединствен кључ поруке – препознавање се ослања на стандардни идентификатор поруке прочитан директно из MAPI својстава. Када идентификатор још није стигао, додатак сачека и покуша поново, а у крајњем случају израчуна отисак из пошиљаоца, наслова и времена пријема. Тиме се иста порука никада не обради двапут.
- Подела посла по нитима – читање поруке и прилога остаје на главној нити, где Outlook то захтева, а прављење PDF-а и слање иду асинхроно. Број истовремених послова је ограничен, па додатак не оптерећује рачунар ни када одједном стигне више порука.
- Један документ уместо гомиле датотека – тело поруке се претвара у HTML са заглављем (пошиљалац, примаоци, време, наслов), уграђеним сликама из саме поруке и приказаним прилозима, па се све заједно штампа у PDF. Приложени PDF документи се спајају у исти документ, а формати који се не могу приказати наводе се поименично, да се зна да су постојали.
- Поправка неисправних PDF прилога – пре спајања се сваки приложени PDF пропушта кроз алат за поправку, у два покушаја са различитим подешавањима. Ако ни то не успе, користи се оригинал, а посао се не прекида.
- Прекидач у траци Outlook-а – сопствена картица са пољем за укључивање и дугметом за подешавања. Гашење прекидача зауставља и послове који су већ у току, преко токена за отказивање.
- Подешавања са објашњењима – свако подешавање има свој опис у засебној датотеци, па дијалог сам исписује шта које поље значи, без посебног упутства.
Поузданост и гранични случајеви
Пажња је отишла на ситнице које се виде тек у свакодневном раду: уредно ослобађање COM објеката да Outlook не остане да виси у меморији, временско ограничење за спољне алате, брисање привремених датотека после сваког посла, и запис у дневник за сваку фазу — од преузимања поруке до потврде да је документ примљен. Када слање не успе, грешка се забележи и види се која порука није прошла, уместо да нестане у тишини.
Надоградња верзије задржава раније унесена подешавања, тако да корисник после ажурирања не подешава ништа изнова.
Коришћене технологије
Ц#, .NET Framework 4.8, VSTO додатак за Outlook, Outlook Интероп и MAPI својства, прилагођена трака (Ribbon XML), асинхроно програмирање са ограничењем паралелних послова и токенима за отказивање, генерисање PDF-а из HTML-а, спајање и поправка PDF докумената, HTTP/JSON комуникација са позадинским системом.
Резултат
Клијент је добио архивирање које се не ослања на дисциплину запослених. Порука и њени прилози заврше као један документ у пословном систему, у тренутку када стигну, без преузимања, штампања у PDF и ручног прилагања. Додатак ради тихо, може да се искључи једним кликом и не мења начин на који људи користе Outlook.
Повратне информације клијента
★★★★★5/5“Сарадња са Дејаном била је одлична. Професионалан је, поуздан и врло стручан, и доследно испоручује квалитетан рад на време. Јасно комуницира, брзо реагује на примедбе и показује да добро разуме захтеве пројекта. Радо бих наставио да радим са њим и топло га препоручујем другим клијентима.”
За сличан додатак у Excel-у, Word-у или Outlook-у погледајте услугу израде програма по мери.
Оставите одговор