Oracle Apex & Camunda BPM
How to use Camunda "workflow" in Oracle Apex application?
The vast majority of business applications have some sort of "wokflow". In every business, a group of people do their job to "deliver value". But we don't do everything together and we break the task into activities because we specialize and carry out tasks according to skills - role. We do our job and pass it on to the next person - like an assembly line. These activities are performed as part of a process that works according to: template - "wokflow". It has its stages, tasks and statuses.
Oracle Apex in the latest version has a built-in workflow building tool. If the workflow is only used for the needs of the application we are building, this approach may make sense. However, if our workflow is complex, changes frequently or the process is supported by different systems, it is a much better idea to use a dedicated system - a BPM platform.
Using a platform also makes great sense to manage change. We all know how "business" changes assumptions about applications - it starts with "something small" and evolves into quite a large, complex system. So the workflow that we use, e.g. for accepting invoices from one level, expands to several levels, new business conditions and exceptions are created (e.g. the flow depends on the type of invoice, the invoice amount, the supplier/customer category).
The BPM platform will simply handle processes better and give us more opportunities. Just imagine onboarding process where several actors and applications are involved:
Required components
The system that will allow us to build a workflow for Oracle Apex application without much effort is Camunda. Camunda not only allows you to build a flow diagram in BPM notation, but is also delivers a tool for creating decision models; business conditions (DMN). Camunda has two systems - Modeler for creating diagrams and Platform for running processes. Components were written in Java as open source model under the terms of the Apache license.
When building an application that requires workflow, we separate the management of information flow from the application itself. The application "has no idea" how the business logic of information flow is organized - it passes the acceptance task to Camunda, and the BPM platform takes care of the appropriate decision. Camunda itself does not do anything in the Oracle database, it does not provide forms, it does not manage data - it only deals with providing information. It is the external system/people who take specific action based on them.
In a nutshell; the flow of information is handled by the BPM platform and the role of the application is only to read the state of the process and provide information to the process that task was copleted.
Algorytmy do wykorzystania w codziennej pracy
Uczenie maszynowe nie jest już magicznym trikiem
Sztuczna inteligencja, o której tak wiele słyszymy, w rzeczywistości wykorzystuje algorytmy. Powszechne jest określenie „uczenie maszynowe” (ML) i stwierdzenie, że komputery uczą się na podstawie otrzymanych danych. Tak naprawdę komputery niczego się nie uczą – to bezduszne maszyny, które jedynie wykonują polecenia. Komputery dostarczają nam wyników swojej pracy na dwa sposoby; podajemy komputerom przykład tego, czego mają szukać w danych ("uczenie się nadzorowane") lub mówimy im, aby uruchomiły algorytm, który ma z góry określone wyniki do dostarczenia („uczenie się bez nadzoru”).
Przeczytaj więcej o rodzajach algorytmów i ich zastosowaniu.
Zatem skończona liczba algorytmów może dać nam nieskończoną liczbę kombinacji ich zastosowania – zdumiewające, jak krótka jest lista funkcji i algorytmów, które tworzą dość złożone oprogramowanie realizujące różnorodne zadania. To jest jak język, którego używamy; liczba słów jest ograniczona, ale liczba dzieł literackich nigdy się nie skończy.
Czym są algorytmy?
Algorytm to skończona sekwencja jasno określonych działań niezbędnych do wykonania określonego rodzaju zadania. Przepis na zrobienie dania jest często przytaczany jako przykład algorytmu stosowanego w życiu codziennym.
ML wykorzystuje algorytmy pochodzące z lat 60tych, 50tych, a nawet starożytnej Grecji. Ich szerokie zastosowanie umożliwiły szybkie komputery. Prawdziwej rewolucji dokonały szybkie maszyny liczące, a nie same algorytmy.
Użycie algorytmów nie było zbyt trudne, ale jak dotąd wymagało pewnych umiejętności, takich jak umiejętność kodowania. Jednak to się zmieniło. Od jakiegoś czasu mamy dostęp do oprogramowania, w którym algorytmy mamy umieszczone pod prawym przyciskiem myszy. Co więcej, istnieje darmowe oprogramowanie takie jak Orange Data Mining – świetne środowisko, w którym możemy przetestować pewne hipotezy, poszukać informacji ukrytych w danych, uzyskać rekomendacje na podstawie których podejmiemy dalsze decyzje. Oto kilka przykładów kilku algorytmów „Machine Learning”, które możesz wykorzystać w swojej codziennej pracy.
Bibioteka Graph Data Science w bazie Neo4j - algorytmy Node Similarity & Louvain
Rekomendacje bazujące na poprzednich zakupach klientów
Algorytm podobieństwa węzłów porównuje zbiór węzłów na podstawie węzłów, z którymi są one połączone. Dwa węzły są uważane za podobne, jeśli mają wielu takich samych sąsiadów. Funkcja podobieństwa węzłów oblicza podobieństwa parami na podstawie metryki Jaccarda, znanej również jako wynik podobieństwa Jaccarda, lub współczynnika nakładania się, znanego również jako współczynnik Szymkiewicza-Simpsona.
Metoda Louvaina to algorytm służący do wykrywania społeczności w dużych sieciach. Maksymalizuje wynik modułowości dla każdej społeczności, gdzie modułowość określa ilościowo jakość przypisania węzłów do społeczności. Oznacza to ocenę, o ile gęściej połączone są węzły w obrębie społeczności, w porównaniu z tym, jak połączone byłyby w losowej sieci.
Algorytm Louvaina jest algorytmem hierarchicznego grupowania, który rekurencyjnie łączy społeczności w jeden węzeł i wykonuje grupowanie modułowości na skondensowanych grafach. Algorytm Louvaina jest niedeterministyczny i dlatego niektóre węzły czasami są grupowane w społeczności, a czasami nie. To oznacza że rezultaty mogą być różne w różnych uruchomieniach programu.
Algorytm został opracowany na beligijskim Universytecie Louvain niedaleko Brukseli.
Uruchomienie biblioteki GDS
Bibliotekę dla Neo4j Server można pobrać ze strony https://neo4j.com/deployment-center/#gds-tab
Po rozpakowaniu pliku *.zip kopiujemy JAR do katalogu 'plugins' i modyfikujemy plik konfiguracyjny Neo4j ($NEO4J_HOME/conf/neo4j.conf) wstawiając w nim linie:
dbms.security.procedures.unrestricted=gds.*
Następnie pozwalamy na wykonywanie procedur z użyciem tej biblioteki wstawiająć kolejną linie w tym samym pliku konfiguracyjnym:
dbms.security.procedures.allowlist=gds.*
Po wgraniu pliku uruchom serwer ponownie by załadowac bliblioteką.
Sprawdzanie wersji oraz listy dostępnych algorytmów
Jeśli chcesz sprawdzić wersję biblioteki GDS uruchom polecenie:
RETURN gds.version();
Listę dostępnych procedur i algorytmów sprawdzisz uruchamiając polecenie:
CALL gds.list();
Budowa procesu rekomendacji produktów
Naszym celem jest zbudowanie procesu/silnika rekomendacji produktów bazującego na poprzednich zakupach klientów. Docelowo chcemy wykryć klastry klientów [przeczytaj niżej czym różni się klastrowanie od segmentacji] których wspólną cechą są podobne zakupy; zakupili pewną ilość takich samych produktów (choć także kupili i inne artykuły). Mając klastry klientów, możemy sporządzić listę najczęściej artykułów przez tych klientów. A skoro wiemy co inni podobni klienci kupują i czego nie kupił nasz klient, możemy mu taki produkt/produkty zaproponować.
Krokiem pośrednim będzie znalezienie podobieństw między klientami; określenie który klient jest podobny do którego pod kątem dokonanych zakupów. Sama informacja o podobieństwie może być także użyta w procesie rekomendacji; wiemy co kupili podobni klienci ale także możemy poznać które produkty są w ich zakupach wykazują takie podobieństwo. Klient który kupił produkt X może być także zainteresowany produktem Y ponieważ były one kupowane często wspólnie. Co więcej, znając zakupiony artykuł, możemy dowiedzieć się co jeszcze najczęściej kupowane jest przy zakupie tego właśnie produktu.
Przeczytaj też artykuł "Jak zbudować wydajny system rekomendacji produktów" na naszym blogu w którym objaśniamy jak z pomocą Neo4j stworzymć system rekomendacji produktów bazujący na zakupach osób które dokonały podobnych wyborów jak klient któremu będziemy rekomendować produkty (collaborative filtering). System z dużą skutecznością podpowie produkty, którymi naprawdę może być zainteresowany nasz klient.
Algorithms to be used in daily work
Machine Learning are not a magical tricks anymore
The Artificial Intelligence we hear so much about is actually the use of algorithms. The phrase "Machine Learning" (ML) and the statement that computers learn from the data they receive are common. In fact, computers do not learn anything - they are soulless machines that only execute commands. Computers provide us with the results of their work in two ways; we tell the computers an example of what to look for in the data (supervised learning) or we tell them to run an algorithm that has predefined results to deliver ("unsupervised learning").
Read more about types of algorithms and their appliance.
Thus, a finite number of algorithms can give us an infinite number of combinations of their use – it is amazing how short is the list of functions and algorithms that create quite complex software that performs various tasks. It's like the language we use; the number of words is limited, but the number of literary works will never reach the end.
What are algorithms?
Algorithm a finite sequence of clearly defined actions necessary to perform a certain type of task. A recipe is often cited as an example of an algorithm used in everyday life.
ML uses algorithms that come from the 60s, 50s and even ancient Greece. Their wide use was made possible by fast computers. It is fast computing machines that have made a real revolution, not the algorithms themselves.
The use of algorithms was not overly difficult, but so far it required some skills, like coding ability. However, that has changed. Since some time we have access to software where we have algorithms on the right button of a mouse. What's more, there is free software like Orange Data Mining - a great environment in which we can test certain hypotheses, look for hidden information in data, get recommendations on the basis of which we will make further decisions. Here are several examples of several "Machine Learning" algorithms that you can use in your daily work.
Linear regression
Linear regression and especially the model that was built on that algorithm - Auto Regressive Integrated Moving Average (ARIMA). This is a statistical analysis model that uses time series data to either better understand the data set or to predict future trends.
What it can be used for:
- Stock price prediction
- Supply chain forecasts
- Procurement and production planning