FME Server 2017: Fantastic Projects and Where to Find Them
If we’ve been a bit light on blog posts recently you’ll understand that we’re busy on a lot of other projects right now. The FME World Tour (FMEWT) is still ongoing and the FME Worldwide User Conference (FMEUC) – now less than a month away – has hundreds of parts to coordinate! We’re all very excited because it’s going to be a fantastic event, and if you can possibly attend I think you should spare no efforts to. It will be worth your time and money.
Additionally, I’m just finishing off the FME Server Authoring training course. The final chapter of that course concerns a new piece of functionality called Projects and – since it’s new for 2017 – I thought I’d both learn about it myself and write this post at the same time.
So, if you use FME Server at all, read on for information about this great new capability.
Projects: What is a Project?
What is a Project you ask? Well, let me give you an example.
We set up an FME Cloud instance for use by presenters in the FME World Tour. You’ll have seen it used in several of the presentations that we gave. One of the things I’ve been using that instance for is developing an online version of my Best Practice analysis tool. I plan to demo that tool in a workshop at the FMEUC, if that interests you.
Anyway, the FMEWT is winding down now, and we’ll presumably shut down that FME Cloud instance fairly soon. So, how can I export all my files before that happens? If I were still using FME 2016 then I would have a couple of methods:
- Copy the workspace and transformer files, move them to a new instance, and recreate all the notification components that I already have.
- Run the backup tool to backup the entire FME Server, and re-import that on a new FME Cloud instance:
Option one is a pain because I have to recreate all my notification components, which took a long time to set up and get working. Option two is no less painful. It’s quicker, for sure, but by backing up the entire Server I am going to get everyone’s work on my new instance, whether I want it or not.
So I’m going for option three:
3. Use the incredibly useful and new for FME 2017 Projects tool!
Let me show you how…
Projects: Creating a Project
This will probably be a short post, because this isn’t exactly rocket science! It’s very intuitive and user friendly.
Firstly I pick Projects from the FME Server menu, then enter the details of the new project:
Now the fun part. I go through all of the different components and aspects of FME Server and decide which I want to include in the Project. As you can see there are quite a number of different things I can include:
One of the main parts of this project is a notification system, so first of all I chose Subscriptions and picked which of those to include:
After a while I have all the components I need, including Topics, Subscriptions, Publications, Repositories, Custom Transformers, and Resource Folders:
The two “gotchas” I found were:
- I’m not sure where the Custom Transformers part is looking for transformers. I’d added mine to Resources\Engine\Transformers, but the Projects tool didn’t pick up on them. This is already filed with the developers as PR#73884, but the simple workaround is to add them to a Project as a Resources folder (as in the above screenshot).
- Sometimes FME creates Subscriptions you aren’t always aware of. For example, when you publish a workspace and register it to trigger a topic on completion, FME also automatically creates a Subscription. You need to watch out for those and be sure to add them to your Project; the setup would fail on a different system without those notifications.
Once a Project is created, I can now export it to create a backup of that setup.
Projects: Import, Export, and Sharing
Of course, although the project belongs to me, I might want to allow others to use it. To do so I use new functionality in FME2017 – Sharing. Here’s a list of projects on the FMEWT server:
Check out the new Share with Others button. This allows me to pick a user (or role) that I wish to share the Project with. Sharing is new functionality that allows me to set permissions on my items, without needing access to the full Security setup. It doesn’t just apply to Projects; you can also share a repository that you own. You can allow others to run workspaces in your repository, to download the workspaces, or even to provide full access to edit and over-write the workspaces.
Anyway, back to Projects. If I want to transfer the project to another FME Server (or even just create a backup of it) I use the Export capability, like so:
Having exported the project (it gets saved as a .fsproject file, named with a datetime stamp) I now have the option to upload it to another FME Server for use elsewhere.
Any “gotchas” here? The only thing I found was that the original setup ran on a Linux server, and the one I imported to was Windows. Because what is allowed as a filename on Linux is not the same as on Windows, I lost some files on the import. So, if you think you might transfer a Project from one platform to another, make sure resource filenames are compatible with both platforms.
Besides that, there wasn’t any problem at all. I was worried I might have work to do because of hard-coded values, etc. But I was pleasantly surprised that my SMTP email Publications didn’t need updating with a new server name. So my Project was all set up and raring to go after being imported.
So, there are several obvious uses I can see:
- Package up a set of objects for sharing with another user: where you want to give them access to a project but not the entire FME Server
- Create a project-based backup of server components: because backups are good!
- Assist in moving a project from one FME Server to another: to move specific components, not the entire server
That last point is interesting. I think many users are starting to go with a Development, Testing, Acceptance, and Production (DTAP) structure for implementing FME; i.e. they develop each stage of an FME project on a separate environment. The FME Server Projects functionality is a great tool for moving projects between these different environments.
It also – I think – means I can supply the .fsproject file to anyone interested in installing my Best Practice tool on their own FME Server. All they would have to do is run the import tool and they are up and running. I won’t do that now, but look out for that after the FMEUC.
So that’s about it for Projects. Look out for it in the 2017 FME Server Authoring course (just finishing it up now) and maybe even the 2017 FME Server Admin course (making its debut at the training day of the upcoming FME Worldwide User Conference)