A neat write up of my notes on the train back home. There was an obvious limitation of the number of presentations I could attend.
Below you’ll find no opinions, just notes:
Hilary Farrell: Oracle APEX 24.1 New Features - Part 1
Hilary discussed the upcoming features in Oracle APEX 24.1. The team is working hard to ensure smoother APEX releases to the cloud in the future. Users are advised to upgrade on the latest patch release. GenAI support is being introduced to transform the development experience with code, text, and summary information management. Natural language processing will be used to create apps, with assistant debugging, help text, and PL/SQL code and SQL generation. Users will be able to ask questions about the generated SQL.
Component groups will allow grouping of shared components for simultaneous refreshment. Release notes should be consulted for information on converting region attribute names to unlimited static ID ones.
For more information on creating APEX apps with AI, visit: https://www.oracle.com/artificial-intelligence/create-apex-apps-with-ai/
Anthony: Oracle APEX 24.1 New Features - Part 2
Anthony continued the discussion on APEX 24.1 features, mentioning new workflow termination capabilities.
Moritz Klein: Starting with AI & APEX on OCI
Moritz presented on getting started with AI and APEX on Oracle Cloud Infrastructure (OCI).
Skashak Chavan: Oracle Technology Keynote: Enabling Generative AI with AI Vector Search
Skashak Chavan's keynote focused on enabling Generative AI with AI Vector Search. The process involves creating vectors, using pre-created embeddings, and utilizing an embedding service via URL.
Steps include creating DBMS vector credentials, using a URL based embedding service, and downloading the ONNX model. Vector embedding is then stored using a vector() column type. The presenter explained the use of to_vector and from_vector functions, as well as creating a vector index that works by layers (3 to 0, high-level to low-level layering).
To use this technology, one should order by vector_distance and fetch the first 10 rows. Statistics gathering is necessary. The presenter mentioned that version 23.6 is coming out in January, available on Cloud Exadata. However, the on-premise release date was uncertain
Boyd Timmerman: Building an AI-powered service desk using RAG and APEX
Boyd presented on building an AI-powered service desk using Retrieval-Augmented Generation (RAG) and APEX. The process involves users uploading documents, which are then vectorized. User questions are also vectorized and compared for similarity. RAG fills in Large Language Model (LLM) gaps without retraining the model.
Key components include APEX, OCI, 23ai, ONNX model, and GenAI. The setup requires object storage on OCI, an API key, a bucket, and a pre-authenticated request. The presenter explained the steps to create OCI credentials in PL/SQL, create a bucket, add files, and set up pre-authenticated requests.
An APEX application can be used to upload files to the bucket using PL/SQL make_rest_request with a pre-authenticated URL. After upload, documents are vectorized by adding a vector() column to the vector_store table. An ONNX model converts files to vectors, with different models having different dimensions.
The vector data type can be set for the number of dimensions. DBMS vector is used to load the ONNX model and vectorize the file from temp_files using the DBMS vector chain package. Vector distance is used for results.
Jon Dixon: Building Cost-Effective and Robust Integrations with Oracle REST Data Services (ORDS), APEX, and the Oracle Database
Jon presented on the RAD stack (ORDS, APEX, DB) and compared it to iPaaS. RAD is suitable for point-to-point integrations, REST/SOAP, business logic in the database, and PL/SQL integrations. Examples of REST sync with Oracle ERP and Harvest time keeping were provided.
Jon explained webhooks and callbacks for REST, giving examples of OCI object store files calling callbacks to ping ORDS. An example of using APEX workflow to manage journals at specified points to Fusion was also provided.
APEX includes a web service log table and web service activity log. Custom tables can be created for logging fine details. OCI API Gateway can be used to customize, log, and throttle API calls. Complementary services such as API Gateway, object storage, queuing service, and live share were mentioned.
For large data volumes, consider using zips, CSV vs. JSON, and DBMS_CLOUD.COPY_DATA. A demo of an Interactive Report based on a REST source with caching was presented.
Roel Hartman: APEX CI/CD from the trenches
Roel Hartman discussed CI/CD for APEX, explaining the challenges of managing hot fixes and defects while developing new features for a client's drug trial system. He provided an overview of Liquibase and how changes can be applied to different versions.
Roel explained the process of exporting the app, using Git to show only changed components, and selecting changes by discarding other developers' changes and committing your own. A Git hook was mentioned for auto-formatting on commit, reapplying to the database, and checking back into Git.
The CI/CD process involves pushing source code to GitLab, triggering a runner, and installing to the target environment. A demonstration of Liquibase deploying was given, along with an introduction to the SQLcl project involving an end-to-end demo.
Rishin Mitra: The "JSON Relational-Duality" Theory
Rishin presented on JSON Relational-Duality views, which select JSON from a relational table. These views are read-only by default but can be updated. The presenter explained various features such as using SELECT SERIALIZE PRETTY to see columns including ETAG and ASOF, and SYS_ROW_ETAG to return ETAG.
For hierarchical views, SELECT INDENTED can be used with NO CHECK to exclude from ETAG and NO UPDATE.
UNNEST can be used to auto-flatten the document, repeating parents with the detail. Generated fields can be created as part of the JSON duality view definition.
Rishin discussed updating with full JSON or using JSON_TRANSFORM for specific columns, as well as optimistic locking achieved by ETAGs. Flexible fields can be declared as JSON objects on the database and defined as FLEX COLUMN.
DBA, USER, and ALL views exist for JSON duality views. DBMS_JSON.DESCRIBE can be used for JSON duality views
Magaly Iraheta: From Concept to Reality: Building Dynamic UIs with APEX Template Components
Magaly provided an overview of theme template components, including avatars and content rows with buttons and actions.
Magaly explained single, multiple, and region selections, as well as slots and multiple selection options.
A detailed overview of parameters and parameter settings was given. Page items can be provided for IDs when rows are selected or for selecting all rows.
Magaly demonstrated a stylish online store in APEX which the majority was built using Template Components.
Karen Cannell: The Magic of AI in APEX: How Hard Can It Be?
Karen discussed the implementation of AI in APEX, noting that the difficulty depends on various factors.
Karen explained that models and apps change on OCI GenAI. APEX Digital Assistant was introduced as a helper for GenAI, with the ability to provide a system prompt and helper questions.
For small datasets, system prompts and context can be selected from the database. SELECT AI (23ai and Autonomous required) was presented as a solution to augment data with LLM. The presenter explained the setup steps, including creating a profile for objects like views and tables, and using CLOUD_AI.GENERATE with a profile name and the NARRATE action.
Karen Cannell: A Picture is Worth 1000 Words: Master Handling Images in APEX
In her second presentation, Karen focused on image handling in APEX. New image upload features were discussed, including upload styles like drop zone icon and inline. Cropping tools, zoom functionality, and selfie and mobile camera support were mentioned.
Karen explained various image handling techniques, such as resizing to force fixed aspect ratios and downloading via process, APEX_HTTP.DOWNLOAD, or dynamic action. The importance of item order in SQL source for download was emphasized.
Options for storing images were discussed, including database BLOB, object storage, and static files. The presenter also mentioned the possibility of creating smaller versions of resized images in different columns.
Alex Nuijten: APEX and Spatial: Finding the most delicious Apple Pie
Alex Nuijten presented on APEX and Spatial functionality. Three formats were discussed: long/lat, SDO_GEOMETRY, and GeoJSON.
Alex explained how to convert between these formats using SDO_UTIL.TO_GEOJSON and APEX_SPATIAL.POINT.
The presentation included a demonstration using the TripAdvisor API to fetch latitude and longitude of restaurants. The use of SDO_WITHIN_DISTANCE and APEX_SPATIAL.POINT to find locations within a certain distance and display them on a map was explained.
SDO_GEOMETERY.SDO_DISTANCE was mentioned for calculating the distance between two points. The presenter recommended looking into Oracle Spatial Studio and using GeoJSON.io for working with GeoJSON.
Jon Barwell: Extending (not customizing) your ERP(s) with APEX
Jon Barwell discussed the pros and cons of customizing versus extending ERPs, with a strong preference for extending. VBCS and APEX were mentioned, but limitations in terms of storage for VBCS solutions were noted. The presenter cautioned about VBCS transaction costs, whereas APEX has no hidden costs.
A demo was given on creating a workspace utility using REST-enabled SQL service and then using a wizard to select from that REST-enabled source. The presenter explained that forms will update back over the REST remote SQL service.
A limitation of not being able to join remote tables with local tables was mentioned, with workarounds such as using APEX_EXEC or (preferably) AutoREST. Tips were provided for creating a REST repository in a master app and then copying and subscribing to them.
For authentication, the presenter recommended looking into building low-code applications with APEX
Some styling tips for Redwood Theme were provided:
Set Pillar to: header and navigation
Set Layout to: heading
Set Body header to: dark
ENJOY
What’s the picture? Train approaching Platform 1, Leeds Train Station. Visit Yorkshire.