====== Bazy danych ======
WebFirmatic i pozostałe aplikacji używają bazy danych MySQL. 
===== Konfiguracja =====
Baza MySQL musi nasłuchiwać na portach TCP/IP oraz mieć poprawne ustawienia kodowania
<code properties>
#skip-networking # włączona sieć

# unicode
default-character-set=utf8
collation-server=utf8_unicode_ci
character-set-server=utf8
</code>
===== Inicjalizacja =====
Po instalacji MySQL-a należy utworzyć potrzebne bazy. Dodać użytkowników oraz uprawnienia.
<code sql>
create database webfirmatic;
create database workflow;
create database clientportal;
create database firmaticservice;
create database webfirmatic3;

create user 'webfirmatic'@'localhost' IDENTIFIED By 'TYxgaeX4';
create user 'webfirmatic'@'%' IDENTIFIED By 'TYxgaeX4';

GRANT ALL PRIVILEGES ON webfirmatic.* TO 'webfirmatic'@'localhost' IDENTIFIED BY 'TYxgaeX4';
GRANT ALL PRIVILEGES ON webfirmatic.* TO 'webfirmatic'@'%' IDENTIFIED BY 'TYxgaeX4';

GRANT ALL PRIVILEGES ON workflow.* TO 'webfirmatic'@'localhost' IDENTIFIED BY 'TYxgaeX4';
GRANT ALL PRIVILEGES ON workflow.* TO 'webfirmatic'@'%' IDENTIFIED BY 'TYxgaeX4';

GRANT ALL PRIVILEGES ON clientportal.* TO 'webfirmatic'@'localhost' IDENTIFIED BY 'TYxgaeX4';
GRANT ALL PRIVILEGES ON clientportal.* TO 'webfirmatic'@'%' IDENTIFIED BY 'TYxgaeX4';

GRANT ALL PRIVILEGES ON firmaticservice.* TO 'webfirmatic'@'localhost' IDENTIFIED BY 'TYxgaeX4';
GRANT ALL PRIVILEGES ON firmaticservice.* TO 'webfirmatic'@'%' IDENTIFIED BY 'TYxgaeX4';

GRANT ALL PRIVILEGES ON webfirmatic3.* TO 'webfirmatic'@'localhost' IDENTIFIED BY 'TYxgaeX4';
GRANT ALL PRIVILEGES ON webfirmatic3.* TO 'webfirmatic'@'%' IDENTIFIED BY 'TYxgaeX4';
</code>

====== WebFirmatic ======
Przygotowujemy dwie paczki: WebFirmatic.war i WebFirmatic-debug.war. 

===== WebFirmatic.war =====
  * Otwieramy plik war za pomocą edytora mc.
  * Edytujemy WEB-INF/classes/spring/applicationContext.xml
  * Wpisujemy odpowiednią nazwę pliku konfiguracji, dla tego środowiska
<code xml>
<!-- Configuration filename - to EDIT -->
  <!--  -->
  <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="ignoreUnresolvablePlaceholders" value="true" />
    <property name="ignoreResourceNotFound" value="true"></property>
    <property name="locations">
        <list>
            <value>classpath:spring/env.test_zks.properties</value>
            <value>classpath:version.properties</value>
        </list>
    </property>
  </bean>
  <!--  -->
</code>

===== WebFirmatic-debug.war =====
  * Dodatkowo w pliku konfiguracyjnym zmieniamy wartość debugMode na true
<code properties>
web.debugMode=true
</code>

===== Lista plików konfiguracyjnych dla środowisk =====
  - env.conf1.properties - konfiguracja stosowana u większości nowych klientów, np. Elko, SSG, Solver
  - env.demo16.properties - baza demo na 1.6
  - env.dev.properties - konfiguracja dla środowiska programistycznego łącząca się z testowym zks
  - env.dev_demo16.properties - konfiguracja dla środowiska programistycznego łącząca się z demo
  - env.dev_elko.properties - konfiguracja dla środowiska programistycznego łącząca się z elko
  - env.dev_ovh.properties - konfiguracja dla środowiska programistycznego łącząca się z ovh
  - env.redis.properties - konfiguracja dla Redis
  - env.test.properties - konfiguracja dla testów junit
  - env.test_zks.properties - konfiguracja dla testowego zksu
  - env.venco.properties - konfiguracja dla Venco
  - env.vitkus2_remote.properties - konfiguracja dla vituksa łącząca się poprzez stronę firmatic.pl
  - env.zks.properties - konfiguracja dla ZKS
  - env.zks_preprod.properties - konfiguracja dla ZKS preprod

===== Układaczka =====
Do katalogu:
<code>
/var/lib/tomcat/ca/WebFirmatic
</code>
należy wgrać pliki układaczki.

Katalog ten może być inny w zależności od konfiguracji środowiska w aplikacji WebFirmatic:
<code properties>
web.controlArrangementPath=/var/lib/tomcat/ca/WebFirmatic/
</code>

===== Wydruki =====
Do poprawnego działania wydruków generowanych w WebFirmaticu potrzebne są:
  * Katalog /var/lib/tomcat/print i /var/lib/tomcat/print/templates
  * Przykład zawartości katalogu:
<code>
-rw-r--r-- 1 tomcat tomcat 17936 Oct  5 10:37 brw3_24absence.xsl
-rw-r--r-- 1 tomcat tomcat 51268 Apr 30 15:59 brw3_24salaries.xll
-rw-r--r-- 1 tomcat tomcat 53442 Oct  9 10:50 brw3_24salaries.xsl
-rw-r--r-- 1 tomcat tomcat 30587 Oct  5 10:46 brw3_24salaries2.xsl
-rw-r--r-- 1 tomcat tomcat 28397 Oct  5 10:47 brw3_24salaries3.xsl
-rw-r--r-- 1 tomcat tomcat 52799 Oct 14 10:51 brw3_24salaries4.xsl
-rw-r--r-- 1 tomcat tomcat 31905 Oct  5 10:53 brw3_24salaries5.xsl
-rw-r--r-- 1 tomcat tomcat 32772 Oct  5 10:55 brw3_24salaries6.xsl
-rw-r--r-- 1 tomcat tomcat 47245 Oct  5 10:44 brw3_24salaries_0001.xsl
-rw-r--r-- 1 tomcat tomcat 11492 May  5 10:23 dokument1.xsl
-rw-rw-r-- 1 tomcat tomcat  5629 Oct 28 09:22 fop.log
-rw-r--r-- 1 tomcat tomcat 21193 Apr 30 12:53 form3_27absence.xsl
-rw-r--r-- 1 tomcat tomcat 22057 Jul 21 15:47 form3_27ordersbz.xsl
-rw-r--r-- 1 tomcat tomcat 29833 Aug  7 13:03 form3_27ucp.xsl
-rw-r--r-- 1 tomcat tomcat  3392 Dec 17  2014 header.exl
-rw-r--r-- 1 tomcat tomcat    93 Dec 17  2014 header.pdf
-rw-r--r-- 1 tomcat tomcat 12145 Dec 18  2014 newbrw0000.xsl
drwxrwxr-x 2 tomcat tomcat  4096 Sep 18 19:53 templates
</code>
  * Katalog i pliki muszą być zgodne z konfiguracją w aplikacji WebFirmatic
<code properties>
local.xlsTransformerPath=/u/bin/xmltoxls.sh
local.pdfTransformerPath=/u/bin/fop/fop
local.pdfTransformerConfigPath=/u/bin/fop/userconfig
local.xslForPdfTransformerBrw3DefaultPath=/var/lib/tomcat/print/brw3_0000.xsl
local.xslForPdfTransformerBrw3TemplatePath=/var/lib/tomcat/print/brw3_%s.xsl
local.xslForPdfTransformerFormsDefaultPath=/var/lib/tomcat/print/form3_0000.xsl
local.xslForPdfTransformerFormsTemplatePath=/var/lib/tomcat/print/form3_%s.xsl
local.pdfHeaderBrw3Path=/var/lib/tomcat/print/header.pdf
local.xlsHeaderPath=/var/lib/tomcat/print/header.exl
local.xlsTemplatesPath=/var/lib/tomcat/print/templates/
local.pdfTransformerRunPath=/var/lib/tomcat/print/
local.localCmdUser=firmatic
local.encoding=ISO-8859-2
</code>
  * Ważne jest zainstalowanie fop-a w podanej w konfiguracji ścieżce
  * Bardzo ważne jest ustalenie uprawnień dla tomcat-a do wskazanych w konfiguracji zasobów

===== Skróty =====
Do działania skrótów potrzebne są katalogi:
<code>
/var/lib/tomcat/help
/var/lib/tomcat/help/shortcut
</code>
  * W pierwszym znajduje się plik links.txt zawierający dodatkowe linki w programie
  * W drugim musi znajdować się przynajmniej plik default.xml z domyślnymi skrótami

====== Workflow ======
===== Uruchomienie bazy Progress z silnikiem SQL =====
Baza program musi działać na porcie zgodnie z ustawieniami w pliku konfiguracyjnym środowiska, w **env.conf1.properties**, będzie to:
<code properties>
firmatic.db.driver=com.ddtek.jdbc.openedge.OpenEdgeDriver
firmatic.db.url=jdbc:datadirect:openedge://127.0.0.1:2506;DatabaseName=firmatic;
firmatic.db.username=sysprogress
firmatic.db.password=sysprogress
</code>
Tak więc musi ona działać na porcie 2506 oraz posiadać użytkownika sysprogress z takim samym hasłem (Michał posiada skrypt do tworzenia takiego użytkownika).
===== WebFirmaticBPMN =====
Plik war aplikacji WebFirmaticBPMN, podobnie jak WebFirmatic, musimy edytować, tak aby ustalić odpowiednią konfigurację.
W pliku war szukamy pliku **WEB-INF/classes/db.properties**.
Przykładowa konfiguracja:
<code properties>
db=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/workflow?autoReconnect=true
jdbc.username=webfirmatic
jdbc.password=TYxgaeX4
</code>
W większości przypadku do edycji będzie jedynie linijka z adresem i nazwą bazy. Musi się ona zgadzać, z konfiguracją w pliku konfiguracyjnym środowiska w WebFirmaticu:
<code properties>
# workflow database
# -----------------------------------------------------------------------------------------
workflow.jdbc.driver=com.mysql.jdbc.Driver
workflow.jdbc.url=jdbc:mysql://127.0.0.1:3306/workflow?autoReconnect=true
workflow.jdbc.username=webfirmatic
workflow.jdbc.password=TYxgaeX4
</code>
===== Wgranie procesów =====
Procesy wgrywa się poprzez aplikację WebFirmaticBPMN
  * Logujemy się do WebFirmaticBPMN (admin/admin, lub kermit/kermit).
  * Przechodzimy do Manage
{{bpmn_1.png}}
  * Przechodzimy do Deployments
{{bpmn_2.png}}
  * Wybieramy upload new i wskazujemy ścieżkę do pliku
{{bpmn_3.png}}
====== Android ======
Aplikacja jest w pliku androidwebapi.war. Plik konfiguracyjny **WEB-INF/classes/spring/business-config.xml** zawiera informację o środowisku:
<code xml>
<context:property-placeholder location="classpath:spring/env.dev.properties" system-properties-mode="OVERRIDE"/>
</code>
Istotnym elementem do edycji w środowisku jest adres URL aplikacji firmaticservice:
<code properties>
firmaticwebapi.sessionWsWsdlUrl=http://127.0.0.1:8080/firmaticservice/services/SyncSessionWSImplPort?wsdl
</code>
Podobnie jak w innych aplikacjach, możemy wybrać konkretny plik środowiska, lub stworzyć nowy.
====== Firmatic Service ======
Firmatic Service jest aplikacją która spełnia następujące funkcje:
  - Pośredniczy w komunikacji przez socket (zarówno dla WebFirmatic jak i Android)
  - Pośredniczy w komunikacji przez mbpro
  - Odczytuje maile ze skrzynki i zakłada sprawy (tracker)
  - Wysyła maile (sendmail)
Plik WEB-INF/classes/spring/business-config.xml zawiera informacje o środowisku.
Należy ustawić w nim odpowiednią ścieżkę do pliku konfiguracyjnego środowiska, np. env.conf1.properties.

===== Konfiguracja =====
Moduły tracker i sendmail można skonfigurować przez interfejs www: http://xxx:8080/firmaticservice/.

Po zmianach w ustawieniach skrzynki odbiorczo/nadawczej należy zrestartować firmaticservice.

====== Kiosk ======
__Inne nazwy: Terminal technologiczny (nazwa w źródłach: webfirmatic3)__
Aplikacja jest w pliku kiosk.war. Plik konfiguracyjny **WEB-INF/classes/spring/business-config.xml** zawiera informację o środowisku:
<code xml>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations">
<list>
<value>classpath:spring/env.dev.properties</value>
</list>
</property>
</bean>
</code>
Istotnym elementem do edycji w środowisku jest adres URL aplikacji firmaticservice:
<code properties>
asyncfirmaticwebapi.sessionWsWsdlUrl=http://127.0.0.1:8080/firmaticservice/services/AsyncSessionWSImplPort?wsdl
</code>
Podobnie jak w innych aplikacjach, możemy wybrać konkretny plik środowiska, lub stworzyć nowy.
====== Skrypty ======
Oprócz podstawowych aplikacji wgrywanych do Tomcat-a, są jeszcze dodatkowe w formie skryptów. Należy je wgrać do katalogów na serwerze. Jeżeli dana aplikacja jest wywoływana bezpośrednio, np. z WebFirmatica, to należy się upewnić, czy w konfiguracji WebFirmatica zgadzają się poprawne ścieżki.
===== XmlToXlsx =====
Aplikacja konwertuje pliki **xml**, na **xls** lub **xlsx** (xlsx jak zastosowano szablon) oraz **cvs** na **pdf**.
  * Katalog: /u/bin/xmltoxls
<code>
-rw-r--r-- 1 firmatic progress      281 Oct 26  2012 INSTALL.txt
-rw-rw-rw- 1 firmatic progress      102 Aug 27  2013 Test.java
-rw-r--r-- 1 firmatic progress      398 Oct 26  2012 USAGE.txt
-rwxrwxr-x 1 firmatic progress      124 Sep 10 10:07 csv2pdf.sh
-rw-r--r-- 1 firmatic progress 17741880 Sep 10 13:45 xmltoxls.jar
-rwxrwxrwx 1 firmatic progress      124 Sep  9 13:15 xmltoxls.sh
</code>
===== Sendmail =====
Aplikacja dodaje maile do bazy, które są później wysyłane przez Firmatic Service.
  * Katalog: /u/bin/sendmail
<code>
-rwxrwxrwx 1 vantage users 4073 Apr 17  2015 sendmail.py
-rw-r--r-- 1 vantage users   89 Apr 17  2015 sendmail_config.ini
-rw-r--r-- 1 vantage users   96 Oct 15 15:06 sendmail_config_venco.ini
</code>
Do poprawnego działania należy doinstalować dodatkowe pakiety:
python-MySQLdb python-suds python-lxml .

===== Client Portal =====
Aplikacja dodaje informacje o zmianach w tabelach Firmaticowych do bazy danych portalu klienta. 
  * Katalog: /u/bin/clientportal
<code>
-rwxr-xrwx 1 firmatic progress  144 Feb 10  2015 add_update.sh
-rw-r--rw- 1 firmatic progress   84 Feb 10  2015 client_portal_config.ini
-rwxr-xrwx 1 firmatic progress 2742 Feb 10  2015 main.py
</code>
===== Aplikacja synchronizująca dla Ebexo =====
Aplikacja pozwalająca na synchronizację zamówień, ze sklepem Ebexo.
  * Katalog: /u/bin/ebexo
<code>
-rwxr-xr-x 1 firmatic progress  118 Dec  3  2014 ebexo.sh
drwxr-xr-x 5 firmatic progress 4096 Dec  3  2014 input
drwxr-xr-x 2 firmatic progress 4096 Dec  3  2014 logic
-rwxr-xr-x 1 firmatic progress 4875 Dec  3  2014 main.py
-rw-r--r-- 1 firmatic progress  759 Dec  3  2014 myutils.py
-rw-r--r-- 1 firmatic progress 1107 Dec  3  2014 myutils.pyc
-rwxr-xr-x 1 firmatic progress  109 Dec  3  2014 nowe_zam.sh
drwxr-xr-x 2 firmatic progress 4096 Dec  3  2014 output
drwxr-xr-x 2 firmatic progress 4096 Dec  3  2014 process
-rwxr-xr-x 1 firmatic progress  109 Dec  3  2014 stany.sh
-rwxr-xr-x 1 firmatic progress  117 Dec  3  2014 towary.sh
</code>



