ACT! Plugins - Act! Community

ACT! “Web” Plugins
ACC Webinar (Part 1of 2)
Brian Mowka and Jamie Aurand
December 2010
Web plugin Intro
Getting started
Common questions
Writing your first web plugin
− Plugins example
− Debugging a plugin
• Tips
• Q&A
What is an ACT! Web Plugin
• Any .NET assembly that implements ACT’s Web
plugin interface is technically an ACT! plugin
• Web Plugins add or enhance functionality in the
web edition of ACT!
− Common examples:
o Add a user control (like a button) to an ACT! web view
o Add a tab (with designated controls) to an ACT! web detail view
• Plugins can be added to ACT! without the need
for any changes to ACT! assemblies themselves
IE: you already have what you need to begin development of plugins when you
install ACT!
The only limitation of what can be done is your imagination, technical abilities, and
anything we specifically restricted for security or stability purposes.
What it takes to get started
• Visual Studio
− You can also use the express versions of VS tools (free to download)
o MS Expression Studio
− You can develop an ACT! Web plugin in any .NET language –ASP.NET,
VB.Net, C#, etc…
o But: you can’t mix .Net languages within an Assembly, so… your code wthin your
plugin must use the same language (Note: VS limitation, not .NET limitation)
o Different plugins can use different languages – One plugin can be written in VB.Net the
other in ASP .NET and work on the same ACT! system
− Build your plugin against the earliest version of ACT! you want to
o plugin references are generally forward compatible but not backward compatible
version wise
− Suggestions
Consider source control tools to help manage your plugin source code – always a good practice
ACT! v7-2010 distributes .Net framework 2.0 – if you use newer versions of Visual Studio (2008 and above) your projects
will default to compile to .Net 3.5 (or higher), these plugins will work but you need to manage distribution of required .Net
Starting ACT! 2011 (Shipped Sept. 1st 2010) .NET 3.5 is now installed as part of ACT! installation.
Common Questions
• Where do Web plugins go?
− Web: <C:\Program Files\ACT\Act for Web\APFW\Plugins>
o (Note: C:\ is simply the drive installed ON THE SERVER, could be d:\, e:\, etc )
• Can I write one plugin that works for windows AND web?
− YES – But it must be deployed in different locations (Note:
windows - ACT\Act for Windows\Plugins) *AND* the interfaces it
implements are different.
• How can I tell if a Web plugin failed too load?
− It failed if the name of the assembly is in this look here:
"C:\Program Files\Act for web\plugins\DependentDlls.xml“ (Not in the “users”
folder like windows)
− Also in the servers windows event log there should be a line that
states "Error loading file " + assemblyName + " in the Plugins
Common Questions
• If my plugin failed to load how can I correct this?
− First delete dependentdlls.xml (this will be in your ACT! “Plugins”
− Reset IIS (Warning: This will boot all users out who are logged in)
• Where do I put any dependent assemblies that my web
Plugin assembly requires to be available?
− You can put them in the web plugins folder (server machine) or the
Global Assembly Cache (VS debugging add to web install path)
• Will my web plugin work on the next version of ACT!?
− Yes, with the following exceptions.
o A method you are dependent on has been changed/moved/removed.
• We try to avoid this at all costs, but there are circumstances where we
have had to do this.
• Also, we try and give one year warning if we plan on removing methods
by marking the method [obsolete].
Common Questions
• How does ACT! know what assemblies are web
− It simply loops through all the assembly files in the web Plugins
directory and probes the assembly to see if it implements the
following interface:
o Act.Web.Framework.IWebPlugin
• When do plugins get loaded in ACT!?
− They get loaded early in startup – BEFORE – any logon has
o BUT: The “Init()” method is not called until after “OnFrameworkLogon” event
• When do they get unloaded?
− When the Act for web application pool is reset or IISReset is
Common Questions
• What browsers are web plugins compatible with?
− Firefox 3.51 and IE 7, 8 (soon 9)
• How do I get access to the UI and Framework in a Web
− “Init()” is called when the “OnFrameworkLogon” event is fired
− void Init(ACTSessionManager session);
o The session object has direct access to the Framework (UI can be done
directly with various ACTSessionManager functions.)
o Example: Adding a tab to contact detail view… (You write ServeCustomTab)
• session.LayoutTabs.AddCustomTabProvider(LayoutType.Contacts, new
Differences between windows and
web plugins
• Windows Plugins get unloaded when you logout of your
database, web is when app pool is reset
• Locations of dependentdlls files are different
• There are no “Client side” events in web
• Debugging is more difficult as you may have to debug asp
.NET/managed code OR jscript which are different options
when attaching to debugger
• Your code is running on the server, not the client, if you
need to launch something (an exe for example) you need
to have that installed on the client
• Also, if you wish to develop anything with silverlight, make
sure that the silverlight runtime is installed on client
• Let’s write a web plugin!
− Attaching debugger
− Fixing plugin
− Re-deploying plugin
• IISReset is a developers friend – use is whenever you
need to re-test to make sure web environment is clean
• Use the event log when in doubt of plugin loading
• Remember to change your debuger to jscript if debugging
jscript (Not managed)!
• Assemblies need to go in the bin folder if they contain the
code behind for an aspx file (but the dll that implements
IWebPlugin needs to go in plugins dir!)
• Is there anywhere I can get examples or more resources?
− Go to our message board at:
• Any Questions?