Workflows in APEX mit Camunda - doag.org · Workflows in APEX mitCamunda 2 Über uns § Maximilian...
Transcript of Workflows in APEX mit Camunda - doag.org · Workflows in APEX mitCamunda 2 Über uns § Maximilian...
WorkflowsinAPEXmit Camunda 2
Überuns
§ MaximilianStahl,BeraterAPEX§ Geboren1995§ WohnhaftbeiRatingen§ BeiderMTAG
§ SvenBöttcher,SeniorConsultant§ Geboren1981§ BeiAppsAssociatesseitApril2012
&
WorkflowsinAPEXmit Camunda
MTAGimÜberblick
Technologie-orientiertBranchen-unabhängig
HauptsitzRatingen 240Beschäftigte
Gründungsjahr1994
NiederlassungFrankfurtamMain
Ausbildungs-betrieb
InhabergeführteAktiengesellschaft
ZertifizierterPartnervon
Oracle,MicrosoftundSAP
WorkflowsinAPEXmit Camunda
§ WorkflowsinAPEX§ WorkflowOptionenfürdieeigeneAPEXApp§ Spotlight:APEX&CamundaCommunityEdition
§ Wieesfunktioniert§ LiveDemo§ WorkflowModellierungmitbpmn.io
§ WorkflowsmitActiviti§ Fazit
Agenda
WorkflowsinAPEXmit Camunda
§ EsgibtkeineintegrierteWorkflowOptionbiseinschließlichAPEX5.1.
§ ErsterGedanke:Hardcodierung vonWorkflowsinPL/SQL(nichtempfohlen…)
§ 1.Möglichkeit:WorkflowDefinitionenindenTabellen§ PL/Flow§ FlowControl
§ 2.Möglichkeit:Camunda integrieren
5
WorkflowOptionenfürdieeigeneAPEXApp
WorkflowsinAPEXmit Camunda
§ PL/Flow vonYeb Havinga(http://plflow.sourceforge.net)+ Einfachzuinstallieren,100%PL/SQLinkl.PL/SQLAPI+ OpenSource- KeinegrafischeOberflächeumdenWorkflowzupflegen- NichtStandardisiert(keinBPMNSupport)- LetztesUpdate2004
§ FlowControlvonJürgenSieben(https://github.com/j-sieben/FCT)+ Einfachzuinstallieren,100%PL/SQLinkl.PL/SQLAPI+ OpenSource+ Jan2016veröffentlicht,InstandhaltungdurchJürgenSieben- KeinegrafischeOberflächeumdenWorkflowzupflegen- NichtStandardisiert(keinBPMNSupport)
6
1.Möglichkeit:WorkflowDefinitionenindenTabellen
WorkflowsinAPEXmit Camunda
FürfortgeschritteneAnforderungen§ BPMN2.0Support
§ GrafischeOberfläche(LaufzeitsowieModellierung)zurDokumentationdesProzesses,einschließlichManualTasks
§ ToolszurProzessÜberwachung
§ Support-Optionverfügbar
7
2.Möglichkeit:WorkflowDefinitioneninBPMN(WYSIWYG)
WorkflowsinAPEXmit Camunda
§ Camunda alsrun-timeEngine (camunda.org)§ GabelungausActiviti§ RegelmäßigeUpdates§ GroßesEntwicklungsteam§ OpenSource§ UnterstütztverschiedenStandards,wieBPMN2.0,CMMN1.1andDMN1.1§ VerfügbarinzweiEditionen:kostenloseCommunityEdition&EnterpriseEdition
9
2.Möglichkeit:CamundaCommunityEdition
Quelle:camunda.com(25.07.16)
WorkflowsinAPEXmit Camunda
§ MöglichkeitzurProzessüberwachungvianützlicher(Java)Apps
10
2.Möglichkeit:CamundaCommunityEdition
WorkflowsinAPEXmit Camunda 12
APEXundCamunda:Sofunktioniert es
Optional:CamundaApps(bsp. Cockpit)
ORDS
REST-API
APEXWork-space Schema
APEXMetadataRepository
CamundaMetadataRepository
OracleDatenbankBrowser
AuslesendesProzessStatus
InitiiertProzess
ApacheTomcat
WorkflowsinAPEXmit Camunda
§ RESTWebServiceAufruf
§ GanzeLogikbleibtinAPEX:Camunda erfährtwaseswannmachensoll
13
APEXundCamunda:InstanziierungeinesProzesses
my_process
WorkflowsinAPEXmit Camunda
1.AuslesenderBPMNDefinition(XMLfile)ausdermetadatarepositoryselect gby.bytes_from act_ge_bytearray gby
, act_re_procdef rpfwhere gby.deployment_id_ = rpf.deployment_id_and rpf.key_ = 'my_process'
order by rpf.version_ descfetch first 1 rows only
2.bpmn-viewer.jsumdenProzesszurendern(alsSVG)
14
APEXundCamunda:ProzessStatusanzeigen
WorkflowsinAPEXmit Camunda
3.EigenerJavaScriptCodeumdenaktuellenStatushervorzuheben://Highlight current statusfunction markUp(temp){
var parent = document.getElementById(temp);parent.childNodes[0].childNodes[0].setAttribute("style", "stroke: #056693; stroke-
width: 4; fill: #b5e6fd");}
var dlCheck = $('#P2_DL').val();if (dlCheck != ''){var element = $('#P2_ST').val()markUp(element,);
};
15
APEXundCamunda:ProzessStatusanzeigen
WorkflowsinAPEXmit Camunda
§ APEXuser wirdanCamunda weitergereichtfürdieHistorie:select hi.proc_def_key_ as Process_Definition, hi.proc_inst_id_ as Process_Key, hi.assignee_ as Approved_By, hi.act_name_ as Task, hi.start_time_ as Start_Time, hi.end_time_ as End_Time, apx.candidate as Candidatefrom act_hi_actinst hi, act_ru_variable ru, act_apx_cam_variable apxwhere hi.proc_inst_id_ = ru.proc_inst_id_and apx.id = ru.text_and hi.act_type_ = 'userTask'and ru.name_ = 'id'order by hi.start_time_ desc;
16
APEXundCamunda:Historie
WorkflowsinAPEXmit Camunda
§ https://bpmn.io§ OpenSourceToolzurModellierungderWorkflows§ KannlokalverwendetwerdenoderaucheinTeilderAppsein§ ProzesswirdinBMPN2.0(XML)gespeichert
17
Prozessmitbpmn.iomodellieren
WorkflowsinAPEXmit Camunda
§ EsgibtkeinWorkflowfeatureinAPEX5.xundauchkeineImplementierungspläneinnaherZukunft
§ FlowControl wenn§ KeinAPEXundCamunda:ProzessStatusanzeigen§ KeineGrafischeModellierungnötigist
§ AnsonstenCamunda CommunityEdition§ IntegrationmitAPEXmöglich,keineKosten§ UnterstütztalleStandards,MigrationenzuundvonCamunda möglich§ MöglichkeitderGrafischenProzessModellierung
20
Fazit
MaximilianStahllinkedin.com/in/[email protected]+49(0)210230961-0
ROADSHOW„VONFORMSNACHAPEX“
24.01.2017Hamburg25.01.2017Düsseldorf26.01.2017Frankfurt27.01.2017München
©Copyright2016.AppsAssociates 23
Analytics
AppsAssociates
ExalyticsCertifiedDeliveryPartner OracleSpecialized/Validated
BusinessApplications
CustomDev&Integration
Infrastructure&CloudServices
©Copyright2016.AppsAssociates 24
Activitià ähnlichwieCamunda
• BPMPlattform• OpenSource(ApacheLizenz)• Activiti Komponenten(Quelle:Activiti.org)
©Copyright2016.AppsAssociates 25
Deployment ineinerOracleDatenbank
• Deployment ineinerOracleDatenbank
©Copyright2016.AppsAssociates 30
APEX/Activiti Integration
/{apex_page:#number#,set_page_item(#page_item1#:#value1#|...),get_info(#info#)}/
AnzuzeigendeAPEXSeite,wenndieAktivitätausgeführtwird APEXPage-Items,dieaufder
anzuzeigendenSeiteaufdenWertderangegebenenActivitiVariablegesetztwerdensollen Activiti Variable,dieden
InformationstextfürÜbersichtsseitenenthält
©Copyright2016.AppsAssociates 31
APEX/Activiti Integration
1. StarteActiviti ProzessundverknüpfeActiviti ProzessmitrelevantenEntitätenüberActiviti (Prozess)Variablen• ImBeispiel:ticket_id
©Copyright2016.AppsAssociates 32
APEX/Activiti Integration
2.SetzeweitereInformationenüberActiviti (Prozess)Variablen• ImBeispiel:ticket_info
3.WeiseBenutzerTaskzu4.BeendeeinenTaskundsetzedabeidieentsprechendenVariablen
• ImBeispiel:s_solved :=true
ZuladendesTicketwirdüberset_page_item(P401_TICKET_ID:ticket_id)gesteuert
©Copyright2016.AppsAssociates 33
APEX/Activiti Integration
5.FragealleoffenenoderdemBenutzerzugewiesenenTasksab
Wirdüberget_info(ticket_info)gesteuert
Wirdüberapex_page:#number#gesteuert