Hey FME’ers,

JunctionsSoEasyI know there was a lot of anticipation over FME2016.1 and now that it’s available I hope you were able to download it and try it out.

Perhaps two of the most important additions to the authoring interface were junctions and hidden connections (aka tunnels).

We’ve talked a lot about these during the world tour and in social media – and designed them to be so easy that even our youngest FME user could use them – but I’m going to cover them once more.

That’s because not only might these functions be hard to find, there are some specific use cases that you might not have considered. Also, there’s a little explanation required because “hidden connections” and “tunnels” are not exactly the same thing…

EvangelistBanner7

Junctions

OK. Junctions are simple. A junction is just a mini-transformer that does nothing except bring together a group of unorganized connections.

Say, for example, I have this workspace (click to enlarge):

JunctionsOldWorkspace

Notice the ugly overlapping connections into the AffineWarper:Observed port. I could move the AffineWarper transformer further down the canvas, but then the connections into the Control port would be equally messy. But I can easily clear this up with a Junction:

JunctionsUpdatedWorkspace

Like I said, it’s a way to pull together unorganized connections. “But how do I add this miracle junction,” you ask. Well, that’s simple too. Because a Junction is just a transformer – albeit one with a very small representation – you can add it with Quick Add or the Transformer Gallery just as you would with any other transformer.

JunctionsQuickAdd

Additionally, you can right-click an existing connection and there is an option to Insert Junction:

JunctionsInsertJunction

…plus there’s a handy shortcut key (Ctrl+Shift+J). So now there’s no excuse for overlapping connections. And as we’ll see, even if overlapping connections were unavoidable, with hidden connections you’ll be “in the clear”!

EvangelistBanner7

Hidden Connections

We’ve all had one of these workspaces; the one where there is one (or more) long connection cutting through the core of the canvas. Often it’s where a section of workspace early in the translation provides the input for multiple other sections, like this example:

JunctionsOverlappingConnections2

With that structure it’s impossible to reorganize the transformers in such as way as to avoid overlaps completely. In 2016.1 – while I can’t avoid overlaps – I can tidy the workspace by hiding them:

JunctionsHiddenConnections2

Much better. All I needed to do was right-click the connection(s) and choose the option to “Hide”. That makes the connections invisible. “But” you ask (and don’t you have a lot of questions today?!) “how do I know there’s a connection there and how do I get it back?”

Well, you know there’s a connection, because each end is now represented by a small icon:

JunctionsHiddenConnections2b

And clicking on the transformer (or feature type) itself reveals the hidden connections that are there:

JunctionsHiddenConnections2c

You can make connections fully visible again by right-clicking the transformer (or feature type) and choosing an option to Show Connections.

So now you can use junctions to fix overlapping connections and hide those that just can’t be avoided. But we also need to cover “tunnels” which are a mix of these two features.

EvangelistBanner7

Tunnels

If there is a problem with hiding connections, it’s probably that they are not always easy to see, even with the little icon. You also can’t manipulate or edit them without making them visible first. So what we did was combine hidden connections with junctions to come up with a tool called tunnels.

As you can see, not only do connections have an option to hide them, they also have an option to create a tunnel:

JunctionsTunnelOption

What is a tunnel? Well, this (click to enlarge):

JunctionsTunnel

Yes! A tunnel is a combination of Junction/Hidden-Connection/Junction!

Notice that I have a hidden connection, but there is a junction (with annotation) at each end. Now I can move the junctions to manipulate the hidden connection and both the junction and annotation are a much better visual clue as to what is happening.

So you can choose to either just hide connections or hide them as tunnels with extra junctiony goodness! But there are specific cases when you might want to use each.

EvangelistBanner7

Specific Use Cases

Firstly let’s look at a straightforward use case: pointing all errors in a workspace to a single output. Take a look at this workspace:

JunctionsBigWorkspaceForInvisibleConnections

Let’s say there are various locations in there in which errors might arise. If I want to direct those errors to a single Logger transformer, say in the bottom right of the workspace, then I’ll have connections all over the screen. But instead I can just hide all those connections and put the Logger wherever I like:

JunctionsSingleLoggerHiddenInput

In that example it didn’t matter much whether I used tunnels or plain hidden connections. But in another scenario it is more important: when there are multiple connections emerging from a port. See this example:

JunctionsMultiPortHiddenConnection

There I have a hidden connection, but it’s really unclear what that connection is. The situation becomes much more clear when I use a tunnel instead:

JunctionsMultiPortTunnel

So – in my opinion – you should treat hidden connections and tunnels as different methods, and think about which is better for your scenario.

EvangelistBanner7

Wrap-Up

So that was junctions and tunnels. Incidentally, we did consider calling these “wormholes” at one point (or “Einstein-Rosen bridges” as one user suggested) but we figured not every FME user is a general relativity fanboy (or fangirl).

Anyway, if you’ve read this far, thank you, and also thank you for reading my articles. This is my 150th post to this blog and I hope that each of them have been helpful to someone, somewhere. I’m taking the time to celebrate by listening to some music – in particular this awesome song that folk of my age might remember, and which was the first thing to come to mind when I heard we were adding junctions to FME!

Regards

NewBlogSignature

About FME Best Practice FME Evangelist

Mark Ireland

Mark, aka iMark, is the FME Evangelist (est. 2004) and has a passion for FME Training. He likes being able to help people understand and use technology in new and interesting ways. One of his other passions is football (aka. Soccer). He likes both technology and soccer so much that he wrote an article about the two together! Who would’ve thought? (Answer: iMark)

Related Posts