Hi all, in this post I wanted to introduce you to how we are thinking about integration patterns at MuleSoft. Patterns are the most logical sequences of steps to solving a generic problem. Like a hiking trail, patterns are discovered and established based on use. Patterns always come in degrees of perfection with much room to optimize or adopt based on the needs to solve business needs. An integration application is comprised of a pattern and business use case. You can think of the business use case as an instantiation of the pattern, a use for the generic process of data movement and handling. In thinking about creating templates, we had to first establish the base patterns, or best practices, to make templates atomic, reusable, extensible, and easily understandable.
When thinking about the format of a simple point to point, atomic, integration, one can use the following structure in communicating a Mule application:
Companies are looking to connect to their customers while leveraging customer data across the business to make more informed decisions. As organizations drive digital transformation initiatives to cater to today’s online consumer, there is a massive need for businesses to connect to their customer’s in an holistic way.
Most companies turn to CRM solutions to get a better view of their customers, but it’s not as simple as selecting a single CRM system. It takes defining an architecture that is able to span multiple systems, collecting the most important data from each system and presenting it appropriately in the CRM system. Many companies not only have multiple systems with customer data, but in many cases have multiple CRM systems, either by choice, by legacy or by acquisition. In companies with multiple CRM systems, or multiple instances of the same system, allowing customer information to flow from one instance to another is a major challenge.
Today, it is completely common to even have multiple Salesforce instances for a variety of reasons, which is why MuleSoft has created a set of Anypoint Templates to solve common Salesforce org to org integration challenges. Anypoint Templates from MuleSoft address Salesforce integration challenges, while leveraging a proven, optimized framework. They simplify your integration needs and help you connect applications more quickly by configuring or extending integration flows, or starter applications, we have created. All of these can also be expanded to support common integrations between Salesforce and other CRM systems with Anypoint Studio.
Below we illustrate some of the most common reasons to have multiple Salesforce instances, and how our Salesforce to Salesforce templates can help:
In this post, I wanted to give an analogy around how to think about API’s, connectors, and integration applications. This is something that can be confusing when you first start working with or building integrations since the definitions of applications and connectors are relative terms which means that they differ in the application space vs the integration space. Let’s say that you want to connect your laptop to your TV so that you can watch some YouTube videos. What would this look like using the terminology used in the integration space?
SaaS applications like Salesforce have proven to be highly disruptive for many .NET architectures. In this multi-part blog series, we’ll demonstrate step-by-step how .NET-centric organizations can use existing assets (e.g. legacy .NET applications, SAP) to maximize the value of their Salesforce investment without disrupting underlying code.
In Part 1 of this blog post series we will explore a scenario that has an Auto Insurance company building quotes that allow customers to evaluate their premiums. As part of this process there are some complicated quote calculations that must take place. These calculations take into consideration a customer’s age, driving record, level of education and location. These calculations are proprietary to the organization, provide a competitive advantage and have broad impacts if mistakes are made while building the calculations in the Quote system.
A good part of the Mule community has learnt to use Mule with the first edition of Mule in Action. With the advent of Mule 3, there has been huge demand for a book covering the latest improvements, best practices and lessons learned in the trenches.
In 3.5 we introduced the concept of domains in the Mule container. You can now set up a domain and associate your Mule applications with a domain. Within a domain project you can define a set of resources (and the libraries required by those resources) to share between the applications that belong to the domain.
Within the mule-domain-config.xml you can define a JMS broker connector that can be reused by all the Mule applications that belong to that domain.
This way, you can share a jms caching connection factory and reuse jms client resources with the consequent optimization of resource consumption.
Here’s our weekly roundup of the top 5 integration and API articles of the week. Take a look, let us know if we missed any, and share your thoughts in the comments. Don’t forget to follow @MuleSoft to stay up-to-date on integration & APIs!
If you’re interested in Integration and APIs, don’t miss CONNECT 2014 – the event behind the integration revolution!
Connecting Mule application to Zuul server requires two additional jars in the application class path. One of them is jasypt library which can be downloaded here. The second one is zuul-spring-client. You can download the source and build the jar using Maven.
To configure Zuul client, first add zuul namespace to the mule tag. You will also need spring and context namespaces.
Next, configure zuul spring bean and spring context referencing this bean:
It is always recommended to use Spring properties with Mule, to externalize any configuration parameters (URLs, ports, user names, passwords, etc.). For example, the Acme APIfrom my previous post connects to an external database. So instead of hard-coding connectivity options inside my application code, I would create a properties file, e.g. [[code]]czoxNTpcImFjbWUucHJvcGVydGllc1wiO3tbJiomXX0=[[/code]], as follows:
Obviously, as a developer, I would use a test instance of Acme database to test my application. I’d commit the code to the version control system, including the properties file. Then my application would begin its journey from the automated build system to the Dev environment, to QA, Pre-Prod, and finally Prod – and fail to deploy on production because it wouldn’t be able to connect to the test database! Or even worse, it would connect to the test database and use it and no one would notice the problem until customers placed $0 order for an Acme widget which would normally cost $1000, all because the test database didn’t contain actual prices!