Thursday, March 17, 2016

MuleSoft Application Development: Introduction To DevKit Connector

Introduction

The main purpose of this article is demonstrate the procedures to develop a custom Anypoint platform connector. It is a practical example for advance MuleSoft developers, given that he/she understand the Java annotations, Maven project, and have the essential skills for Mule application development.

    As an MuleSoft integration architect or developer, you will have many situations where you found the existing connectors are broken. This may be the connector has not been updated for the new version of database, such as Cassandra, MongoDB, etc. In this case, you need to fix the problem in order to perform your development tasks. In other cases, there may not be any existing connectors available for your development. Thus, we need to develop our own connectors. Fortunately, MuleSoft's AnyPoint Platform makes this kind of task simple by providing a DevKit.

   This post is an introduction to the Anypoint DevKit Connector development, i. e. HelloWorldConnector. For details, you may refer to the MuleSoft document

Install DevKit

Here is the reference for setting up development environment for MuleSoft DevKit: https://docs.mulesoft.com/anypoint-connector-devkit/v/3.7/setting-up-your-dev-environment If you have installed the MuleSoft DevKit correctly, you can check by New --> Other --> expand Mule. You should see the following:
This means you are ready to develop MuleSoft DevKit Connectors.

Custom Connector Development

Create Project

New --> Other --> Anypoint Connector Project:
Choose JDK Based (default) --> Next
Check Generate Tests. For now, let's not keep things simple without checking the data sense. Click Finish. Now, AnyPoint Studio creates the basic project for us as the following:
Actually, this project contains all the basics about connector. I will explain the details later. For now, let us put the connector into action.

Run The Functional Test

Open the RunctionalTestSuite, and run the Junit test: You will see the following error:
ERROR 2016-03-17 11:25:31,397 [main] org.mule.tools.devkit.ctf.configuration.ConfigurationManager: No M2HOME was set and M2Home autodetection did not detect your M2 home. You can either set the M2HOME/M2_HOME environment variable or specify the System property with -Dm2home=yourM2Home (VM Arguments, System Properties or Maven Properties).

We can fix this by setup the test configuration:
By adding the M2_HOME variable and point to our Maven Installation Hoome, the test can start. But it will fail the testing. We need to fix the test methods in GreetTestCase.java. By adding the changeing lines 29 and 30 with the following:

	
	@Test
	public void verify() {
		java.lang.String expected = "Hello Gary Liu. How are you?";
		java.lang.String friend = "Gary Liu";
		assertEquals(getConnector().greet(friend), expected);
	}

}

Now are ready to package the connector.

Packaging

cd ${WORK_SPACE}
cd simple-jdk-hello-world-connector/
mvn clean package


Gary2013@Guojiangs-MBP:~/tcc-dev/poc/simple-jdk-hello-world-connector$ ls -lart target
total 1400
drwxr-xr-x  18 Gary2013  staff   612B Mar 17 11:43 ../
drwxr-xr-x   3 Gary2013  staff   102B Mar 17 11:43 connector-model/
drwxr-xr-x   4 Gary2013  staff   136B Mar 17 11:43 test-classes/
-rw-r--r--   1 Gary2013  staff    32K Mar 17 11:43 simple-jdk-hello-world-connector-1.0.0-SNAPSHOT-sources.jar
drwxr-xr-x   3 Gary2013  staff   102B Mar 17 11:43 maven-status/
drwxr-xr-x   3 Gary2013  staff   102B Mar 17 11:43 maven-archiver/
drwxr-xr-x   3 Gary2013  staff   102B Mar 17 11:43 generated-test-sources/
drwxr-xr-x   4 Gary2013  staff   136B Mar 17 11:43 generated-sources/
drwxr-xr-x  10 Gary2013  staff   340B Mar 17 11:43 classes/
-rw-r--r--   1 Gary2013  staff   140K Mar 17 11:43 simple-jdk-hello-world-connector-1.0.0-SNAPSHOT.zip
-rw-r--r--   1 Gary2013  staff   172K Mar 17 11:43 simple-jdk-hello-world-connector-1.0.0-SNAPSHOT.jar
-rw-r--r--   1 Gary2013  staff    38K Mar 17 11:43 original-simple-jdk-hello-world-connector-1.0.0-SNAPSHOT.jar
drwxr-xr-x   6 Gary2013  staff   204B Mar 17 11:43 update-site/
-rw-r--r--   1 Gary2013  staff   313K Mar 17 11:43 UpdateSite.zip
drwxr-xr-x  15 Gary2013  staff   510B Mar 17 11:43 ./

You can see we create 2 zip files. We are going to install the file UpdateSite.zip into our Anypoint Studio.

Install Custom DevKit Connector

Help --> Install New Software --> Add




After few clicks, Anypoint Studio will install the newly created HelloWorld Connector. We will nedd to restart the studio.  

Now, we are ready to test our newly created Hello World connector.

Testing DevKit Connector

Now, let's create new Mule project name: use-hello-world and create a simple flow as the following:


Now if you look the Mule paletter you should see a new connector "SimpleJDKHelloWorld" as shown in the following figure: 


Awesome!

Now, let's do some testing. Drag and drop the SimpleJDKHelloWorld Connect to the flow of "use-simple-jdk-hello-world_Flow":

Now you can configure the connector as HTTP connector as shown below:


You can complete the rest configuration by the following:


Your final flow may looks like the following:


Now, you can perform same testing as the following:



That is all! It is fairly straight forward, at least from the starting point of view. Of course, this is just starting point of the journey. The development of enterprise grade connector takes huge effort, in particular, if you add data sense, connection management, security, etc.

Key Learning Points

In this demo, we have learned the procedures of:

  1. creating DevKit Connector project from scratch
  2. functional testing of the connector
  3. install the customer connector
There are few other technical aspects we have not touched yet. These are DevKit Connector related annotations such as
  • @Connector
  • @Processor
  • @Config
  • @Configuration
  • @Configurable

References


  1. General: https://docs.mulesoft.com/anypoint-connector-devkit/v/3.7/
  2. Setup Development Environment : https://docs.mulesoft.com/anypoint-connector-devkit/v/3.7/setting-up-your-dev-environment
  3. Tutorial: https://mulesoft.github.io/mule-cookbook-tutorial/

12 comments:

  1. As a website design company .Web India Market offer a full-circle approach in responsive website designing and web development services. Our website designing services covers Strategic Planning, Business Intelligence, Creative Application Development, Digital Marketing, SEO services and e-commerce solutions.

    ReplyDelete
  2. nice blog..thanks for sharing such a wonderful information..keep update with your blogs.
    Mulesoft online training

    ReplyDelete
  3. Interesting blog. It would be great if you can provide more details about it. Thanks you
    top web design companies | affordable seo services

    ReplyDelete
  4. Thanks for sharing such great information about application development.
    App Development Companies in India

    ReplyDelete
  5. the blog is about MuleSoft Application Development: Introduction To DevKit Connector it is useful for students and Mulesoft Developers for more updates on Mulesoft follow the link

    mulesoft Online course Hyderabad

    For more info on other technologies go with below links

    Python Online Training

    tableau online training hyderabad

    ServiceNow Online Training

    ReplyDelete


  6. the blog is good and Interactive it is MuleSoft Application Development: Introduction To DevKit Connector is useful for students and Mulesoft Developers for more updates on Mulesoft follow the link

    mulesoft Online course

    For more info on other technologies go with below links

    Python Online Training

    tableau online training hyderabad

    ServiceNow Online Training

    ReplyDelete
  7. Nice post. I was checking constantly this blog and I am impressed! Extremely helpful information specially the last part I care for such info a lot. I was seeking this particular information for a very long time. Thank you and good luck. Web Design Malaysia

    ReplyDelete
  8. You have a good point here!I totally agree with what you have said!!Thanks for sharing your views...hope more people will read this article!!!advertising costs

    ReplyDelete
  9. This information is really awesome thanks for sharing most valuable information.
    Best Mulesoft Online Training
    Best Mulesoft Training

    ReplyDelete

Anypoint Studio Error: The project is missing Munit lIbrary to run tests

Anypoint Studio 7.9 has a bug. Even if we following the article: https://help.mulesoft.com/s/article/The-project-is-missing-MUnit-libraries-...