What is the SharePoint Action Framework and Why do I need it ?

Posted by SAF on Geeks with Blogs See other posts from Geeks with Blogs or by SAF
Published on Thu, 11 Mar 2010 18:09:20 GMT Indexed on 2010/03/11 18:24 UTC
Read the original article Hit count: 356

Filed under:

 For those out there that are a little curious as to whether SAF is any use to your organisation, please read this FAQ.

 What is SAF ?

  • SAF is free to use.
  • SAF is the "SharePoint Action Framework", it was built by myself and Hugo (plus a few others along the way).
  • SAF is written entirely in C# code available from : http://saf.codeplex.com.  
  • SAF is a way to automate SharePoint configuration changes.
  • An Action is a command/class/task/script written in C# that performs a unit of execution against SharePoint such as "CreateWeb"  or "AddLookupColumn".
  • A SAF Macro is collection of one or more Actions.
  • SAF Macro can be run from Msbuild, a Feature, StsAdm or common plain old .Net code.
  • Parameters can be passed to a Macro at run-time from a variety of sources such as "Environment Variable", "*.config", "Msbuild Properties", Feature Properties, command line args, .net code.
  • SAF emits lots of trace statements at run-time, these can be viewed using "DebugView".
  • One Action can pass parameters to another Action.
  • Parameters can be set using Expression Syntax such as "DateTime.Now".

 You should consider SAF is you suffer from one of the following symptoms...

  • "Our developers write lots of code to deploy changes at release time - it's always rushed"
  • "I don't want my developers shelling out to Powershell or Stsadm from a Feature".
  • "We have loads of Console applications now, I have lost track of where they are, or what they do"
  • "We seem to be writing similar scripts against SharePoint in lots of ways, testing is hard".
  • "My scripts often have lots of errors - they are done at the last minute".
  • "When something goes wrong - I have no idea what went wrong or how to solve it".
  • "Our Features get stuck and bomb out half way through - there no way to roll them back".
  • "We have tons of Features now - I can't keep track".
  • "We deploy Features to run one-off tasks"
  • "We have a library of reusable scripts, but, we can only run it in one way, sometimes we want to run it from MSbuild and a Feature".
  • "I want to automate the deployment of changes to our development environment".
  • "I would like to run a housekeeping task on a scheduled basis"

 

So I like the sound of SAF - what's the problems ?

 Realistically, there are few things that need to be considered:

  • Someone on your team will need to spend a day or 2 understanding SAF and deciding exactly how you want to use it. I would suggest a Tech Lead, SysAdm or SP Architect will need to download it, try out the examples, look through the unit tests. Ask us questions. Although, SAF can be downloaded and set to go in a few minutes, you will still need to address issues such as - "Do you want to execute your Macros in MsBuild or from a Feature ?"
  • You will need to decide who is going to do your deployments - is it each developer to themself, or do you require a dedicated Build Manager ?
  • As most environments (Dev, QA, Live etc) require different settings (e.g. Urls, Database names, accounts etc), you will more than likely want to define these and set a properties file up for each environment. (These can then be injected into Saf at run-time).
  • There may be no Action to solve your particular problem. If this is the case, suggest it to us - we can try and write it, or write it yourself. It's very easy to write a new Action - we have an approach to easily unit test it, document it and author it. For example, I wrote one to deploy  a WSP in 2 hours the other day. Alternatively, Saf can also call Stsadm commands and Powershell scripts.

 

Anyway, I do hope this helps! If you still need help, or a quick start, we can also offer consultancy around SAF. If you want to know more give us a call or drop an email to [email protected]

 

© Geeks with Blogs or respective owner