W 2008 roku, w firmie w której pracowałem, zrodził się pomysł na utworzenie aplikacji, która ułatwi  pracownikom codzienną pracę. W związku z tym powstał prosty crm pozwalający zalogować się pracownikowi i skorzystać z linków do innych aplikacji, kalendarzy firmowych, czy też dodawać swoje linki z których korzysta w codziennej pracy. Taka aplikacja była wystarczająca przy maksymalnie 20 pracownikach. Przy dynamicznym rozwoju firmy, potrzeba rosła. Główną potrzebą było zwiększenie przepływu informacji związanych z działaniem firmy na rynku. O tym co dzieję się w firmie, czy też zwyczajnie - komu urodziło się dziecko. Dlatego postanowiliśmy wprowadzić coś co spełni powyższe oczekiwania lub przynajmniej pozwoli je przybliżyć.

Najbliższej naszej potrzebie jawił się blog firmowy. Wybraliśmy do tego „Wordpress”. Dostępność wielu pluginów, oraz prostota implementacji własnej skórki przeważyły nad ówczesnym wyborem. Należało zabronić dostępu osobom postronnym. Najprościej było wymusić logowanie się do bloga, by móc zobaczyć treści. Tutaj gotowy plugin „Resticted Site Access” załatwił całą sprawę. Pozostał jednak problem logowania sie pracowników. Założeniem było używanie jednakowego hasła i loginu zarówno do komputera jak i do bloga. Napisałem specjalny plugin który działał w ten sposób:

  • Uwierzytelnij użytkownika w domenie windows
    • Jeśli się udało: sprawdź czy istnieje taki użytkownik na blogu
      • Jeśli tak: zaloguj
      • Jeśli nie: dodaj i zaloguj
    • Jeśli się nie udało: Uwierzytelnij użytkownika na blogu

Takie podejście zawiązane było z faktem umożliwienia dostępu wybranym osobom trzecim, bez konieczności wiązania ich z całą infrastrukturą. Kolejną sprawą było rozszerzenie podstawowych informacji o użytkowniku. Skorzystaliśmy z gotowego rozwiązania  „Cimy User Extra Fields”. Podstawowym działaniem dodatkowych pól miała być możliwość wyszukiwania pracowników po nich. Niestety systemowa wyszukiwarka użytkowników jest dość biedna i nie spełniała naszych potrzeb w ogóle. Dlatego stworzyłem własne rozwiązanie. Założyłem, że najlepszy efekt działania wyszukiwarki uzyskam, korzystając z jakiegoś pełnotekstowego silnika indeksującego. Do tego celu wybrałem „Xapian-a”, w tym przypadku wybór był związany z chęcią poznania możliwości tego silnika. Xapian spełnił swoje zadanie z bardzo dobrym wynikiem. Aż prosi się by użyć go do indeksowania również treści, zwłaszcza gdy rodzi się potrzeba wyszukania artykułów w powiązaniu z autorami.

Ponieważ blog jest to narzędziem dla pracowników, dokonałem integracji z „Rejestrem Czasu Pracy”. O tym systemie piszę w innym rozdziale, więc tutaj tylko nadmienię, iż jego zadaniem jest umożliwienie pracownikowi kontrolowanie swojego czasu pracy.

W firmie istniała biblioteka, w której można było wypożyczać interesujące pozycje. Aby pozbyć się papierkowej roboty i przyspieszyć cały proces, powstała wtyczka umożliwiająca wyszukanie pozycji, zamówienia, wystawienia oceny i recenzji. Dodatkowo stworzony został widget prezentujący najbardziej poczytne pozycje.

Posiadaliśmy również „System Kontroli Budżetów” więc stworzyliśmy mechanizm umożliwiający automatyczne zalogowanie się do niego za pomocą jednego kliknięcia.

Oczywiście, nie można zapominać o przeniesieniu części funkcjonalności z poprzedniego systemu, czyli zarządzaniu własnymi linkami, oraz dostępem do kalendarzy firmowych.

Ponieważ społeczność wciąż się rozwija, rozwijają się również jej potrzeby. Statyczny artykuł był już nie wystarczający. Komunikator miał ograniczenie ilości jednoczesnych odbiorców. No bo jak powiadomić jednocześnie 150 osób, że przyjechał obiad? Jak to jak? Za pomocą Share Tool, który napisaliśmy. Wraz ze społecznościami, rozwijają się również technologie. Napisałem plugin, który, w oparciu o websocket i Node.js, pozwalał na wysyłanie krótkich wiadomości. Wiadomości te były natychmiast wyświetlane w widgecie u wszystkich pracowników zalogowanych do bloga. 

powrót
TransInside
TransInside

Blogowy system do wewnętrznej komunikacji.