SlideShare a Scribd company logo
1
2
Testing APEX Apps at a Glance
Kai Donato
KSCOPE 23, Aurora
3
Ihr Partner für den digitalen Wandel.
Individuelle IT-Lösungen aus einer Hand.
Facts and Numbers.
Founded 1994
Headquarters: Ratingen
Branches:
Frankfurt a.M., Köln,
München, Hamburg
> 360 Employees
ca. 48 Mio. €
Revenue in 2022
Training company
> 125 Customers
across industries
Vendor neutral
certified partner
of leading technology
comanies
4
About me
• Employee at MT GmbH in Ratingen since January
2014
• Department Manager APEX & JavaScript @ MT GmbH
• Project Leader and Developer (JavaScript & APEX)
• DOAG-Initiator – JavaScript
• Systems Integrations Specialist
UNIX-Server and Networkadministration
• Host on Devs on Tape Podcast
Kai Donato
@_KaiDonato
5
• 1
• 2
1. About Me
Why perform (automated) UI tests?
2.
What's out there?
3.
Testing APEX Applications
4.
Reporting
5.
Flakiness in automated UI testing
6.
Agenda
Why automated UI-Testing?
7
Why perform (automated) UI tests?
Required Information is provided
All Workflows work correctly
Save time
Error-Message validation
Ensure User Authorization works correctly
What‘s out there?
9
What's out there?
?
(…)
Testing APEX-Applications
11
Testing APEX Apps - Requirements
Offer extensive reporting options
Session management
Handle Flakiness
Handle different page contexts
Make interactions with page elements easy
12
Testing APEX Applications
Locating Page Elements – How can we find this button?
<button id="submit_bttn" data-test-id="submit" class="t-Button--hot">Submit</button>
Element Type Element Id Id only for testing CSS class Element text
(what the user sees)
Using…
• CSS selector syntax
• #submit_bttn
• button[data-test-
id=submit]
• .t-Button--hot
• Xpath selector syntax
• //button[@id=‘submit_bttn’]
• //button[@data-test-id=‘submit’]
• //button[@class=‘t-Button--hot’]
• //button[text()=‘Submit’]
13
Testing APEX Applications
<button id="submit_bttn" data-test-id="submit" class="t-Button--hot">Submit</button>
Element Type Element Id Id only for testing CSS class Element text
(what the user sees)
Locating Page Elements – Cypress
cy.get('#submit_bttn'); // CSS selector support
cy.xpath("//button[text()='Submit']"); // XPath selector support (*)
cy.get('.t-Button--hot').contains('Submit'); // Use CSS selectors, still query by text
14
Testing APEX Applications
<button id="submit_bttn" data-test-id="submit" class="t-Button--hot">Submit</button>
Element Type Element Id Id only for testing CSS class Element text
(what the user sees)
Locating Page Elements – Playwright
await page.locator("#submit_bttn"); // CSS selector support
await page.locator("//button//span[text()='Submit']"); // Xpath selector support
await page.locator('button:has-text("Submit")'); // CSS selector + query by text
await page.locator('text="Submit"'); // Get element only by text
15
Testing APEX Applications
Page Contexts
16
Testing APEX Applications
Page Contexts
17
Testing APEX Applications
Dealing with Iframes - Playwright
const iframe = await page.frameLocator('iframe');
await iframe.locator('#P7_CUST_FIRST_NAME').type('Max');
await iframe.locator('#P7_CUST_LAST_NAME').type('Mustermann');
await iframe.locator('#P7_CUST_STATE').selectOption({ label: 'Hawaii' });
await iframe.locator('#P7_CUST_POSTAL_CODE').type('44789');
await iframe.locator('#P7_CREDIT_LIMIT').type('5000');
await iframe.locator('text=Add Customer').click();
18
Testing APEX Applications
Dealing with Iframes - Cypress
cy.getIframe().find('#P7_CUST_FIRST_NAME').type('Max');
cy.getIframe().find('#P7_CUST_LAST_NAME').type('Mustermann');
cy.getIframe().find('#P7_CUST_STATE').select('Hawaii');
cy.getIframe().find('#P7_CUST_POSTAL_CODE').type('44789');
cy.getIframe().find('#P7_CREDIT_LIMIT').type('5000');
cy.getIframe().xpath("//button/span[text()='Add Customer']").click();
Cypress.Commands.add('getIframe', () => {
return cy
.get('div[role=dialog] iframe', {log: false})
.its('0.contentDocument.body', {log:false}).should('not.be.empty’)
.then(cy.wrap, {log: false});
});
19
Testing APEX Applications
Session Management - Navigating within the current session
Standard URLs
Friendly URLs
https://hostname:port/ords/f?p=<app_id>:<page_number>:<session_id>
https://hostname:port/ords/path_prefix/r/app_alias/page_alias?session=13766599855150
20
Testing APEX Applications
Navigating within the current session - Cypress
describe('sample test', () => {
beforeEach(() => {
cy.visit('https://apex.generationcode.de/ords/f?p=100:LOGIN_DESKTOP’);
cy.get('#P101_USERNAME').type('user');
cy.get('#P101_PASSWORD').type('*********', {log: false});
cy.get('#P101_LOGIN').click();
cy.url().should('contain', 'f?p=100:1:').then($url => {
window.app_url = $url
});
})
it('go to customers page', () => {
cy.visit(app_url.replace(':1:', ':2:'));
})
})
Approach from Hayden Hudson, see: https://www.youtube.com/watch?v=QFzN_0soxiQ&t=4641s
21
Testing APEX Applications
Navigating within the current session - Playwright
test.describe('demo', () => {
test.beforeEach(async ({ page}) => {
await page.goto('https://apex.generationcode.de/ords/f?p=100:');
await page.locator('#P101_USERNAME').type('user');
await page.locator('#P101_PASSWORD').type('*********');
await page.locator('text=Sign In').click();
await expect(page).toHaveURL(/(?<=.)(f?p=100:1:)(?=.)/gm);
});
test('go to page 2', async ({ page }) => {
await page.goto(page.url().replace(':1:', ':2:'))
});
});
Reporting
23
Reporting and Dashboards
Cypress
24
Reporting and Dashboards
Playwright
Flakiness
26
Flakiness
Flakiness = The test outcome can switch between pass and fail throughout multiple runs
without any changes to the test code.
Time
27
Thoughts on Flakiness
Flakiness can never be reduced to zero
Flaky tests can be useful (initially)
28
Solutions to Flakiness - Playwright
Auto-waiting and actionability checks
Before an element is being interacted with, Playwright makes sure that it
is ready for the interaction.
await page.locator("//button//span[text()='Sign In']").click();
• Retries until element is found or timeout is reached
• Performs actionabilty checks before “click”-action is executed
29
Solutions to Flakiness - Playwright
Actionability checks
• Element is attached to the DOM/ a Shadow Root
• Element is visible
• Element is stable
#sign_in_bttn {
visibility: hidden;
display: none;
}
30
Solutions to Flakiness - Playwright
Actionability checks
• Element is enabled and editable
<button type="button" class="a-Button" disabled data-action="reset-report">Reset</button>
• Element receives events
Overlay
31
Our approach to automated testing
32
LCT
LCT in a nutshell
Node.js Server
APEX
Database
33
LCT
Interacting with page elements
 Simply select the element you want to interact
with
 No need to worry about selectors
 Select Interactive Grid columns as well
 For custom page elements, manually entering
Xpath or CSS selector is also supported
34
LCT
Working with iframes
35
LCT
Reporting (Preview)
 Screenshots on step
failure
 Get extensive
information on what
went wrong
 See execution times of
each step
36
LCT
Test APEX Standard Components easily and quickly
await page.locator('#P630_POPUP_LOV_DEFAULT_MULTI_COL_lov_btn').click();
await page.locator('.a-PopupLOV-searchBar input').type('Display1’);
await page.locator('#PopupLov_630_P630_POPUP_LOV_DEFAULT_MULTI_COL_dlg button').click();
await page.locator('//span[@class="popup-lov-highlight"][text()="Display1"]', ).click();
37
Get in touch!
@lct-
apex
@LowCodeTesting
lct.software
38
Flows for APEX
BPMN 2.0 Workflows for APEX • Open Source
• Community Driven
• Support available
39
Subscribe to get notified!
You heard
it here first!
#kscope23
40
Questions?
Kai Donato
Department Manager APEX & JavaScript
Telefon: +49 2102 30 961-0
Mobil: +49 173 8937790
Mail: kai.donato@mt-itsolutions.com
MT GmbH
Balcke-Dürr-Allee 9
40882 Ratingen
www.mt-itsolutions.com
41

More Related Content

Similar to Testing APEX apps At A Glance (20)

PDF
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
Ondřej Machulda
 
PDF
Unit-testing and E2E testing in JS
Michael Haberman
 
PDF
Никита Галкин "Testing in Frontend World"
Fwdays
 
PDF
Unit Testing in Flutter - From Workflow Essentials to Complex Scenarios
RubenGray1
 
PPTX
Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...
Learnosity
 
PDF
Suncoast Credit Union and Armwood High School - UiPath automation developer s...
DianaGray10
 
PDF
How to Use Playwright Locators_ A Detailed Guide.pdf
kalichargn70th171
 
PPTX
An Introduction to Web Components
Red Pill Now
 
PDF
Top100summit 谷歌-scott-improve your automated web application testing
drewz lin
 
DOC
Qtp interview questions3
Ramu Palanki
 
DOC
Qtp interview questions3
Ramu Palanki
 
PPTX
Angular2 + rxjs
Christoffer Noring
 
PPT
Hp Quick Test Professional
sunny.deb
 
PPT
Qtp 9.2 examples
medsherb
 
PPTX
yrs of IT experience in enterprise programming
narasimhulum1623
 
PPT
Qtp Training
mehramit
 
PPTX
B2. activity and intent
PERKYTORIALS
 
PPTX
Agile methodologies based on BDD and CI by Nikolai Shevchenko
Moldova ICT Summit
 
DOC
Interview questions in qtp
Ramu Palanki
 
PPT
Less03 2 e_testermodule_2
Suresh Mishra
 
Workshop: Functional testing made easy with PHPUnit & Selenium (phpCE Poland,...
Ondřej Machulda
 
Unit-testing and E2E testing in JS
Michael Haberman
 
Никита Галкин "Testing in Frontend World"
Fwdays
 
Unit Testing in Flutter - From Workflow Essentials to Complex Scenarios
RubenGray1
 
Educate 2017: Customizing Assessments: Why extending the APIs is easier than ...
Learnosity
 
Suncoast Credit Union and Armwood High School - UiPath automation developer s...
DianaGray10
 
How to Use Playwright Locators_ A Detailed Guide.pdf
kalichargn70th171
 
An Introduction to Web Components
Red Pill Now
 
Top100summit 谷歌-scott-improve your automated web application testing
drewz lin
 
Qtp interview questions3
Ramu Palanki
 
Qtp interview questions3
Ramu Palanki
 
Angular2 + rxjs
Christoffer Noring
 
Hp Quick Test Professional
sunny.deb
 
Qtp 9.2 examples
medsherb
 
yrs of IT experience in enterprise programming
narasimhulum1623
 
Qtp Training
mehramit
 
B2. activity and intent
PERKYTORIALS
 
Agile methodologies based on BDD and CI by Nikolai Shevchenko
Moldova ICT Summit
 
Interview questions in qtp
Ramu Palanki
 
Less03 2 e_testermodule_2
Suresh Mishra
 

More from Kai Donato (13)

PPTX
APEX Offline – The missing Link
Kai Donato
 
PPTX
>> How toTech-Forward >>
Kai Donato
 
PPTX
ICIS User Group - Oberflächentests mittels LCT deklarativ angehen
Kai Donato
 
PDF
Click, Click, Test - Automated Tests for APEX Applications
Kai Donato
 
PDF
Full Stack Development mit JavaScript
Kai Donato
 
PDF
APEX and additional Templating Engines
Kai Donato
 
PPTX
JavaScript-Erweiterungen für UI und UX
Kai Donato
 
PPTX
WebSocket my APEX!
Kai Donato
 
PPTX
Professional JavaScript Error-Logging
Kai Donato
 
PPTX
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Kai Donato
 
PPTX
Managing Node.js Instances with Oracle APEX
Kai Donato
 
PPTX
Echtzeitvisualisierung von Twitter und Co.
Kai Donato
 
PPTX
Avoid Network-Issues and Polling
Kai Donato
 
APEX Offline – The missing Link
Kai Donato
 
>> How toTech-Forward >>
Kai Donato
 
ICIS User Group - Oberflächentests mittels LCT deklarativ angehen
Kai Donato
 
Click, Click, Test - Automated Tests for APEX Applications
Kai Donato
 
Full Stack Development mit JavaScript
Kai Donato
 
APEX and additional Templating Engines
Kai Donato
 
JavaScript-Erweiterungen für UI und UX
Kai Donato
 
WebSocket my APEX!
Kai Donato
 
Professional JavaScript Error-Logging
Kai Donato
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Kai Donato
 
Managing Node.js Instances with Oracle APEX
Kai Donato
 
Echtzeitvisualisierung von Twitter und Co.
Kai Donato
 
Avoid Network-Issues and Polling
Kai Donato
 
Ad

Recently uploaded (20)

PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PDF
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
PPTX
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
PDF
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
PDF
Salesforce Experience Cloud Consultant.pdf
VALiNTRY360
 
PPTX
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PPTX
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PDF
ERP Consulting Services and Solutions by Contetra Pvt Ltd
jayjani123
 
PDF
Dipole Tech Innovations – Global IT Solutions for Business Growth
dipoletechi3
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PPTX
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
PPTX
Function & Procedure: Function Vs Procedure in PL/SQL
Shani Tiwari
 
PDF
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
How to Hire AI Developers_ Step-by-Step Guide in 2025.pdf
DianApps Technologies
 
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
Salesforce Experience Cloud Consultant.pdf
VALiNTRY360
 
Home Care Tools: Benefits, features and more
Third Rock Techkno
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
MiniTool Partition Wizard Free Crack + Full Free Download 2025
bashirkhan333g
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
ERP Consulting Services and Solutions by Contetra Pvt Ltd
jayjani123
 
Dipole Tech Innovations – Global IT Solutions for Business Growth
dipoletechi3
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
Foundations of Marketo Engage - Powering Campaigns with Marketo Personalization
bbedford2
 
Function & Procedure: Function Vs Procedure in PL/SQL
Shani Tiwari
 
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
Ad

Testing APEX apps At A Glance

  • 1. 1
  • 2. 2 Testing APEX Apps at a Glance Kai Donato KSCOPE 23, Aurora
  • 3. 3 Ihr Partner für den digitalen Wandel. Individuelle IT-Lösungen aus einer Hand. Facts and Numbers. Founded 1994 Headquarters: Ratingen Branches: Frankfurt a.M., Köln, München, Hamburg > 360 Employees ca. 48 Mio. € Revenue in 2022 Training company > 125 Customers across industries Vendor neutral certified partner of leading technology comanies
  • 4. 4 About me • Employee at MT GmbH in Ratingen since January 2014 • Department Manager APEX & JavaScript @ MT GmbH • Project Leader and Developer (JavaScript & APEX) • DOAG-Initiator – JavaScript • Systems Integrations Specialist UNIX-Server and Networkadministration • Host on Devs on Tape Podcast Kai Donato @_KaiDonato
  • 5. 5 • 1 • 2 1. About Me Why perform (automated) UI tests? 2. What's out there? 3. Testing APEX Applications 4. Reporting 5. Flakiness in automated UI testing 6. Agenda
  • 7. 7 Why perform (automated) UI tests? Required Information is provided All Workflows work correctly Save time Error-Message validation Ensure User Authorization works correctly
  • 11. 11 Testing APEX Apps - Requirements Offer extensive reporting options Session management Handle Flakiness Handle different page contexts Make interactions with page elements easy
  • 12. 12 Testing APEX Applications Locating Page Elements – How can we find this button? <button id="submit_bttn" data-test-id="submit" class="t-Button--hot">Submit</button> Element Type Element Id Id only for testing CSS class Element text (what the user sees) Using… • CSS selector syntax • #submit_bttn • button[data-test- id=submit] • .t-Button--hot • Xpath selector syntax • //button[@id=‘submit_bttn’] • //button[@data-test-id=‘submit’] • //button[@class=‘t-Button--hot’] • //button[text()=‘Submit’]
  • 13. 13 Testing APEX Applications <button id="submit_bttn" data-test-id="submit" class="t-Button--hot">Submit</button> Element Type Element Id Id only for testing CSS class Element text (what the user sees) Locating Page Elements – Cypress cy.get('#submit_bttn'); // CSS selector support cy.xpath("//button[text()='Submit']"); // XPath selector support (*) cy.get('.t-Button--hot').contains('Submit'); // Use CSS selectors, still query by text
  • 14. 14 Testing APEX Applications <button id="submit_bttn" data-test-id="submit" class="t-Button--hot">Submit</button> Element Type Element Id Id only for testing CSS class Element text (what the user sees) Locating Page Elements – Playwright await page.locator("#submit_bttn"); // CSS selector support await page.locator("//button//span[text()='Submit']"); // Xpath selector support await page.locator('button:has-text("Submit")'); // CSS selector + query by text await page.locator('text="Submit"'); // Get element only by text
  • 17. 17 Testing APEX Applications Dealing with Iframes - Playwright const iframe = await page.frameLocator('iframe'); await iframe.locator('#P7_CUST_FIRST_NAME').type('Max'); await iframe.locator('#P7_CUST_LAST_NAME').type('Mustermann'); await iframe.locator('#P7_CUST_STATE').selectOption({ label: 'Hawaii' }); await iframe.locator('#P7_CUST_POSTAL_CODE').type('44789'); await iframe.locator('#P7_CREDIT_LIMIT').type('5000'); await iframe.locator('text=Add Customer').click();
  • 18. 18 Testing APEX Applications Dealing with Iframes - Cypress cy.getIframe().find('#P7_CUST_FIRST_NAME').type('Max'); cy.getIframe().find('#P7_CUST_LAST_NAME').type('Mustermann'); cy.getIframe().find('#P7_CUST_STATE').select('Hawaii'); cy.getIframe().find('#P7_CUST_POSTAL_CODE').type('44789'); cy.getIframe().find('#P7_CREDIT_LIMIT').type('5000'); cy.getIframe().xpath("//button/span[text()='Add Customer']").click(); Cypress.Commands.add('getIframe', () => { return cy .get('div[role=dialog] iframe', {log: false}) .its('0.contentDocument.body', {log:false}).should('not.be.empty’) .then(cy.wrap, {log: false}); });
  • 19. 19 Testing APEX Applications Session Management - Navigating within the current session Standard URLs Friendly URLs https://hostname:port/ords/f?p=<app_id>:<page_number>:<session_id> https://hostname:port/ords/path_prefix/r/app_alias/page_alias?session=13766599855150
  • 20. 20 Testing APEX Applications Navigating within the current session - Cypress describe('sample test', () => { beforeEach(() => { cy.visit('https://apex.generationcode.de/ords/f?p=100:LOGIN_DESKTOP’); cy.get('#P101_USERNAME').type('user'); cy.get('#P101_PASSWORD').type('*********', {log: false}); cy.get('#P101_LOGIN').click(); cy.url().should('contain', 'f?p=100:1:').then($url => { window.app_url = $url }); }) it('go to customers page', () => { cy.visit(app_url.replace(':1:', ':2:')); }) }) Approach from Hayden Hudson, see: https://www.youtube.com/watch?v=QFzN_0soxiQ&t=4641s
  • 21. 21 Testing APEX Applications Navigating within the current session - Playwright test.describe('demo', () => { test.beforeEach(async ({ page}) => { await page.goto('https://apex.generationcode.de/ords/f?p=100:'); await page.locator('#P101_USERNAME').type('user'); await page.locator('#P101_PASSWORD').type('*********'); await page.locator('text=Sign In').click(); await expect(page).toHaveURL(/(?<=.)(f?p=100:1:)(?=.)/gm); }); test('go to page 2', async ({ page }) => { await page.goto(page.url().replace(':1:', ':2:')) }); });
  • 26. 26 Flakiness Flakiness = The test outcome can switch between pass and fail throughout multiple runs without any changes to the test code. Time
  • 27. 27 Thoughts on Flakiness Flakiness can never be reduced to zero Flaky tests can be useful (initially)
  • 28. 28 Solutions to Flakiness - Playwright Auto-waiting and actionability checks Before an element is being interacted with, Playwright makes sure that it is ready for the interaction. await page.locator("//button//span[text()='Sign In']").click(); • Retries until element is found or timeout is reached • Performs actionabilty checks before “click”-action is executed
  • 29. 29 Solutions to Flakiness - Playwright Actionability checks • Element is attached to the DOM/ a Shadow Root • Element is visible • Element is stable #sign_in_bttn { visibility: hidden; display: none; }
  • 30. 30 Solutions to Flakiness - Playwright Actionability checks • Element is enabled and editable <button type="button" class="a-Button" disabled data-action="reset-report">Reset</button> • Element receives events Overlay
  • 31. 31 Our approach to automated testing
  • 32. 32 LCT LCT in a nutshell Node.js Server APEX Database
  • 33. 33 LCT Interacting with page elements  Simply select the element you want to interact with  No need to worry about selectors  Select Interactive Grid columns as well  For custom page elements, manually entering Xpath or CSS selector is also supported
  • 35. 35 LCT Reporting (Preview)  Screenshots on step failure  Get extensive information on what went wrong  See execution times of each step
  • 36. 36 LCT Test APEX Standard Components easily and quickly await page.locator('#P630_POPUP_LOV_DEFAULT_MULTI_COL_lov_btn').click(); await page.locator('.a-PopupLOV-searchBar input').type('Display1’); await page.locator('#PopupLov_630_P630_POPUP_LOV_DEFAULT_MULTI_COL_dlg button').click(); await page.locator('//span[@class="popup-lov-highlight"][text()="Display1"]', ).click();
  • 38. 38 Flows for APEX BPMN 2.0 Workflows for APEX • Open Source • Community Driven • Support available
  • 39. 39 Subscribe to get notified! You heard it here first! #kscope23
  • 40. 40 Questions? Kai Donato Department Manager APEX & JavaScript Telefon: +49 2102 30 961-0 Mobil: +49 173 8937790 Mail: [email protected] MT GmbH Balcke-Dürr-Allee 9 40882 Ratingen www.mt-itsolutions.com
  • 41. 41

Editor's Notes

  • #7: https://www.stern.de/wirtschaft/job/tokio--café-hilft-gaesten-gegen-das-aufschieben-von-arbeit-31807362.html
  • #9: https://www.stern.de/wirtschaft/job/tokio--café-hilft-gaesten-gegen-das-aufschieben-von-arbeit-31807362.html