This document provides an overview and summary of the MuleSoft Anypoint Platform and JDBC integration. It discusses the three main platforms within Anypoint - for SOA, SaaS, and APIs. It then focuses on the details of the JDBC transport and connector in Mule, including how to configure inbound and outbound endpoints, data sources, queries, transactions, and interacting with results. Key features of JDBC in both the CE and EE versions are also compared. Finally, it provides examples of using MEL (Mule Expression Language) to work with JDBC payloads like arrays, lists, and maps.
Database Programming: The Design of JDBC, The Structured Query Language, Basic JDBC Programming Concepts,
Result Sets, Metadata, Row Sets, Transactions
Introduction to JDBC and database access in web applicationsFulvio Corno
Introduction to the JDBC standard and best practices for database access from Web Applications.
Materiale realizzato per il corso di Sistemi Informativi Aziendali del Politecnico di Torino - http://bit.ly/sistinfo
Instructions for Submissions thorugh G- Classroom.pptxJheel Barad
This presentation provides a briefing on how to upload submissions and documents in Google Classroom. It was prepared as part of an orientation for new Sainik School in-service teacher trainees. As a training officer, my goal is to ensure that you are comfortable and proficient with this essential tool for managing assignments and fostering student engagement.
Unit 8 - Information and Communication Technology (Paper I).pdfThiyagu K
This slides describes the basic concepts of ICT, basics of Email, Emerging Technology and Digital Initiatives in Education. This presentations aligns with the UGC Paper I syllabus.
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
Read| The latest issue of The Challenger is here! We are thrilled to announce that our school paper has qualified for the NATIONAL SCHOOLS PRESS CONFERENCE (NSPC) 2024. Thank you for your unwavering support and trust. Dive into the stories that made us stand out!
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Acetabularia Information For Class 9 .docxvaibhavrinwa19
Acetabularia acetabulum is a single-celled green alga that in its vegetative state is morphologically differentiated into a basal rhizoid and an axially elongated stalk, which bears whorls of branching hairs. The single diploid nucleus resides in the rhizoid.
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
Macroeconomics- Movie Location
This will be used as part of your Personal Professional Portfolio once graded.
Objective:
Prepare a presentation or a paper using research, basic comparative analysis, data organization and application of economic information. You will make an informed assessment of an economic climate outside of the United States to accomplish an entertainment industry objective.
2. • Rapidly connect any application, anywhere
• Anypoint Platform helps companies prepare for the future with a next-
generation SOA platform that connects on-premises systems and the
cloud.
• Mule ESB, CloudHub, Mule Studio, Mule Enterprise Management,
Anypoint Connectors
Anypoint
Platform for
SOA
• Connect SaaS with any application, anywhere
• Anypoint Platform helps companies connect SaaS applications to each
other and the enterprise, in the cloud and on-premises.
• CloudHub, Mule ESB, Mule Studio, CloudHub Insight, Anypoint
Connectors
Anypoint
Platform for
SaaS
• All you need to connect any app, any device and any API
• With the Anypoint Platform for APIs, you can build new APIs, design
new interfaces for existing APIs and more efficiently manage all your
APIs using a single platform.
• API Portal, API Manager, Mule Studio, Mule ESB, CloudHub
Anypoint
Platform for
API
1
MuleSoft Anypoint Platforms
3. Chapters
Schedule
Filter Types
JDBC - Introduction
JDBC Endpoint: Inbound vs Outbound
JDBC Connector Attributes
Data sources Shortcuts
Results Data Structure
JDBC - CE vs EE
JDBC Transactions
MEL - JDBC
4. JDBC - Introduction
The Java Database Connectivity (JDBC) transport connects to any relational
database that supports JDBC.
A JDBC inbound endpoint maps to an SQL SELECT statement while a JDBC
outbound endpoint maps to an SQL SELECT, UPDATE, INSERT or DELETE
statement.
Similar to the File transport, consumption of records needs to be simulated.
Schema definition
CE Version:
<xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/jdbc
http://www.mulesoft.org/schema/mule/jdbc/current/mule-jdbc.xsd">
EE Version:
<xmlns:jdbc="http://www.mulesoft.org/schema/mule/jdbc"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/jdbc
http://www.mulesoft.org/schema/mule/jdbc/current/mule-jdbc.xsd">
5. JDBC Endpoint: Inbound vs Outbound
A SELECT on a JDBC inbound endpoint is polling. This means that Mule will
attempt to read records every so often from a given database table. In
addition, Mule will only retrieve un-read records. In other words, a JDBC
inbound endpoint will consume records.
Inbound Endpoints can only be configured for SELECT queries
A SELECT on a JDBC outbound endpoint is triggered by a Mule event. For
example, this Mule event could have been created as a result of an HTTP
request.
A JDBC outbound endpoint does not care if a record has been read or not. It
will retrieve all records matching the SELECT’s WHERE clause.
Outbound Endpoints can be configured for any allowed (as set by database)
query.
6. JDBC Connector Attributes
JDBC transport requires configuration of the JDBC connector. In the connector,
we must point the dataSource-ref attribute to a Spring bean and the Spring
bean would configure a class which implements the javax.sql.DataSource
interface. Configuring a DataSource usually involves setting the URL, JDBC
driver, username and password bean properties.
JDBC connector we can also add the queries that are to be executed by the
JDBC inbound and outbound endpoints.
Each query is represented as a child element in the JDBC connector element.
Moreover, each query needs a key (which is a descriptive name for the query)
as well as the actual SQL query itself.
There are three types of queries available:
Read queries are SELECT SQL statements bound to an inbound or an
outbound endpoint.
Write queries are INSERT or UPDATE SQL statements bound to an outbound
endpoint.
7. JDBC Connector Attributes (Contd)
Acknowledgement queries are executed immediately after a read query. This
type of query is identified with the same name as the read query together
with an '.ack' suffix. An acknowledgement query is normally used to mark
the previously selected rows as having been processed or consumed. This
type of query is usually an UPDATE statement.
Other properties that are set on the connector but are optional are:
pollingFrequency: The frequency to poll the database for new records, in
milliseconds.
queryRunner-ref: The name of the class to execute queries. The default class
is org.apache.commons.dbutils.QueryRunner.
resultSetHandler-ref: The name of the class used to pass query results back.
The default class is org.apache.commons.dbutils.handlers.MapListHandler
converts the result set to an object.
Eg:
<jdbc:connector dataSource-ref="ordersDB" name="salesDB“ pollingFrequency="1000">
8. JDBC Connector Attributes (Contd)
<jdbc:query key="getTest“ value="SELECT ID, TYPE, DATA, ACK, RESULT FROM TEST WHERE
TYPE =#[map-payload:type] AND ACK IS NULL"/>
<jdbc:query key="getTest.ack“ value="UPDATE TEST SET ACK = #[map-payload:NOW] WHERE
ID = #[map-payload:id] AND TYPE =#[map-payload:type] AND DATA = #[map-payload:data]"/>
<jdbc:query key="writeTest“ value="INSERT INTO TEST (ID, TYPE, DATA, ACK, RESULT) VALUES
(NULL, #[map-payload:type], #[map-payload:payload], NULL, NULL)"/>
</jdbc:connector>
<flow name="...">
<jdbc:inbound-endpoint queryKey="getTest"/>
...
<jdbc:outbound-endpoint queryKey="writeTest"/>
</flow>
<spring:bean class="org.springframework.jdbc.datasource. DriverManagerDataSource" id="ordersDB">
<spring:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<spring:property name="url" value="jdbc:mysql://localhost:3306/orderdb"/>
<spring:property name="username" value="myName"/>
<spring:property name="password" value="myPwd"/>
</spring:bean>
9. Datasources Shortcuts
Mule 3.2 and later versions provide shortcuts for configuring a number of data
sources including Derby, MySQL, Oracle and PostgreSQL:
Eg:
MySql:
<jdbc:mysql-data-source database="mule" name="dataSource" password="secret" user="mysql"/>
Derby:
<jdbc:derby-data-source create="true" database="mule" name="dataSource"/>
Oracle:
<jdbc:oracle-data-source instance="mule" name="dataSource" password="secret" user="oracle"/>
10. Results Data Structure
Query(SELECT statement) result, is an array of Maps
Each Map represents a record in the database and each entry in the Map
represents a column in the record.
Using a Groovy expression is one way of retrieving the required data from the
result set.
11. JDBC - CE vs EE
The EE version of the JDBC transport offers a number of extra features over and above
the features provided by the CE version. List of JDBC features offered by both versions:
Select queries with acknowledgement
Basic Insert/Update/Delete: Single row Insert/Update/Delete
Basic Stored Procedure Support: Supports only in parameters
Unnamed Queries: Queries can be invoked programmatically
Flexible Data Source Config: Can configure data sources through JNDI, XAPool or
Spring.
Transactions
Outbound Select Query: Retrieve records using the select statement configured on
outbound endpoints.
The EE JDBC transport also offers:
Large Dataset Retrieval: Allows the consumption of records in smaller batches thus
allows the retrieval of large datasets.
12. JDBC - CE vs EE (Contd)
Batch Insert/Update/Delete: Batch inserts/update/delete improve the
performance of the JDBC transport considerably when large datasets need
to be inserted/updated.
Advanced Transformers: These transformers include XML and CSV
transformers.
Advanced Stored Procedures: Allows both in and out parameters.
13. JDBC Transactions
Similar to JMS, the JDBC transport has support for single resource JDBC transactions. This is
configured using the jdbc:transaction element as seen in the following example.
Eg:
<jdbc:connector dataSource-ref="jdbcDataSource" name="jdbcConnector">
<jdbc:query key="JobSearch“ value="SELECT Id,Task FROM Jobs WHERE Started IS NULL"/>
<jdbc:query key="JobSearch.ack“ value="UPDATE Jobs SET Started=#[function:now] WHERE Id = #[map-
payload:Id]"/>
<jdbc:query key="InsertNewTask“ value="INSERT INTO Tasks (JobId,Task) VALUES (#[map-payload:Id],#[map-
payload:Task])"/>
</jdbc:connector>
<flow name="JdbcSimpleTransaction">
<jdbc:inbound-endpoint queryKey="JobSearch">
<jdbc:transaction action="ALWAYS_BEGIN"/>
</jdbc:inbound-endpoint>
<component class="com.mulesoft.MyCustomComponent"/>
<jdbc:outbound-endpoint queryKey="InsertNewTask">
<jdbc:transaction action="ALWAYS_JOIN"/>
</jdbc:outbound-endpoint>
</flow>
14. MEL - JDBC
Arrays and Lists
Literal forms for Lists ({item1, item2, . . }) and Arrays ([item1, item2, . . ]). Using the
literal form the payload can be set by:
Eg: Message.payload = ({‘foo’, ‘bar’, ‘dog’})
This will set the payload to a list of 3 elements. In the MEL, as in many other
languages, indexes start at 0. Eg: Message.payload[2] results in ‘dog’
Arrays and Lists in Java must specify the type of their contents, but in MEL they are
untyped.
The MEL supplies the correct type when we use them – either by determining it at
compile time or coercing the array to the correct type at run time.
Eg: Valid MEL: Message.payload = ({‘foo’, 1234, 1234.56})
Mule Maps
The MEL has built-in support for maps.
Maps are used to store "associative arrays" or "dictionaries".
Eg: Message.payload = [ "Brett":100,"Pete":"Did not finish", "Andrew":86.879]
15. MEL – JDBC (Contd)
MEL provides a very clean way to access the values in a map.
Use square brackets to address the key:
Eg: Message.payload ["Pete"] => Output: 'Did not finish'
The MEL supplies the correct type when we use them – either by determining it at
compile time or coercing the array to the correct type at run time. If there is no value,
the operation returns a Null.
Arrays of Maps
The very common Mule Payload is an array of maps
Eg: {['destination':'SFO', 'price':500]}. Price of SFO can be found by
Message.payload[0]['price']
The following example shows how to check the size of an array in a WHEN statement,
evaluates to true if the array is not empty:
Eg: <when expression="message.payload.size() > 0"> This can be used to avoid
NullPayloads when potentially asking for something that the database didn't return any
values for.