I’ve been playing around with custom actions for SharePoint Designer for some time (see here for some detailed stuff, if that interests you).
In my current project, we need to do some fairly heavy lifting and we want to use declarative SPD workflow to manage the associated business process.
Long story short, this is entirely possible. I extended my Codeplex project to invoke a "helper service" and now we can invoke a web service directly from an SPD workflow.
Here’s the signature:
public string Dispatcher( Guid WebID, // Passed by the runtime environment Guid SiteID, // Passed by the runtime environment string ListID, // Passed by the RTE (don't know why this is a string, not a GUID) int ListItemID, // Passed by the RTE. string XmlMessage) // Passed by the user as declared in SPD.
This leverages the fact that we can get at important workflow information, like the site, list ID, etc. This is well documented in several places for those of you interested in creating your own custom actions. The idea is to extract the XML string as provided by the user to dispatch an appropriate procedure. Fun stuff!
Sadly, this is obviously a one-way ticket down to "Loosey Goosey" anti-pattern land, but it’s better than hitting a brick wall 🙂
Is it an anti-pattern if you do it even though you know it’s an anti-pattern?
I hope to wrap this inside Codeplex in the near future. If you’re interested in me doing so, give me poke (email or leave a comment) and I’ll be that more enthusiastic about doing it 🙂