It has been a while, so time to catch up, here are some of the more recent feature additions in Metl, an ETL tool from JumpMind. You asked, we listened…

Flow Variables

Why do I need this? Well, let’s say I need to get an OAuth bearer token result from one web service call and use that value in the Http Headers call of multiple other web service calls.

Now you can add a variable that is accessible by different components in a flow. Through a script you can reference the context.flowVariables object to set and/or get these variables. For example:

context.flowVariables.put(key,value)
context.flowVariables.get(key)

Error Suspense

Huh, Error what? What if you have a group of web service calls you need to send out one at a time and one of these calls fails, it will fail the entire flow. Sure, start the flow again, but then the same call is made because the prior process wasn’t successful and it fails again. But I need to get the rest of the calls sent because I don’t want this one failed record to prevent the other successful ones from completing. Here is where error suspense comes in.

The Error Suspense Step provides a way to allow a flow to continue if an error is encountered while processing a message. By default, when a Metl flow encounters an error, the entire flow will fail. With the Error Suspense Step option, you can decide if you want to skip a failure and continue processing. To accomplish this, an output step (component) must be defined on the component the failure might occur on. Every component provides this option on the properties of the component, to send the error message on and continue.

When a message fails on a component that has an Error Suspense Step defined, the failed input message is forwarded to the error step (component) with the actual error message received included in the ‘Exception’ message header parameter. It is then up to you to decide what you want to do with the failed message.

Where Used

I need to make some model changes to my entities and attributes, what other flow references this model or how about this resource, is anyone still using it?

This is Where Used gives you the ability to find all references to a flow, model or resource in other flows. When you want to know the flows that reference an object and whether you are going to impact another flow, you can run a ‘Where Used’ from the File menu on these objects. The result list shows the Project, Flow and Component the referenced object resides in. The resulting page allows you to select a row and directly open that flow for further review.

Email Reader

My source data is in spreadsheets that we receive via email not automatically saved to any file system, how can I use that as my input directly without manually downloading the attachments from the email?

The Email Reader is used to connect to an email account to read data from the message or save any attachments that may exist on the email. This reader will process through a list of email messages in a chosen mailbox and forward the message content as a TextMessage to downstream components. Values such as the sender email address, subject line, send and receive date are included with the message as header parameters (email.from; email.subject; email.sent.date; email.received.date). Some of the options available are:

  1. Read all messages or only new, un-read emails
  2. Filter the emails to be processed by either the ‘From address’ and/or if they contain a specific subject instead of processing every email in the mailbox
  3. The ability to save attachments in a defined local folder if there are any
  4. Move the read emails to another email folder after processed

These are a few of the recent changes that have been added to Metl. I hope these will provide you with more options in your integration scenarios.

Nathan Richardson

Nathan is a software developer working on Metl software. He develops and maintains components for Metl and focuses on integration projects.