Download my project at here
Add new Content Type
Open visual studio
2010 | New Project | Sharepoint | 2010 | Choose Content Type then type name is ActiveWorkflowWhenAddContentType
Deploy as a farm solution
Choose content type Document Set (option) from
dropdownlist
You see the structure as follows then you can change
name of Content Type
Copy this segment code and paste to here as follows:
<Field ID="{A57B3F82-A8AE-4967-9041-F197560D8FB6}"
Type="Text"
Required="TRUE"
DisplayName="Field1"
Name="Field1"
Indexed="TRUE"
EnforceUniqueValues="TRUE" />
Add new Workflow Sequential
UI code as follows:
using
Microsoft.SharePoint.Workflow;
////////////////////////////////////////////
Copy this segment code then paste above method FeatureActivated
private string WorkflowName = "WorkflowForContentType";
private string ContentTypeName = "DocumentSetContentType";
Uncommnet method FeatureActivated
and paste this segment code to within it
public override void
FeatureActivated(SPFeatureReceiverProperties
properties)
{
using
(SPSite site = new
SPSite("http://quochung-axioo:90/"))//Change
your web app
{
using
(SPWeb web = site.OpenWeb())
{
SPContentType
theCT = web.ContentTypes[ContentTypeName];
SPWorkflowTemplate
theWF = null;
foreach
(SPWorkflowTemplate tpl in web.WorkflowTemplates)
{
if (tpl.Name == WorkflowName)
{
theWF = tpl;
}
}
SPWorkflowAssociation
wfAssociation = theCT.WorkflowAssociations.GetAssociationByName(WorkflowName,
web.Locale);
if
(wfAssociation != null)
{
theCT.WorkflowAssociations.Remove(wfAssociation);
}
theCT.UpdateWorkflowAssociationsOnChildren(true, true, true, false);
wfAssociation = wfAssociation
= SPWorkflowAssociation.CreateWebContentTypeAssociation(theWF,
WorkflowName, "Tasks", "Workflow History");
if
(theCT.WorkflowAssociations.GetAssociationByName(wfAssociation.Name,
web.Locale) == null)
{
theCT.WorkflowAssociations.Add(wfAssociation);
}
else
{
theCT.WorkflowAssociations.Update(wfAssociation);
}
theCT.UpdateWorkflowAssociationsOnChildren(true,
true, true, false);
}
}
}
///////////////////
Uncommnet method FeatureDeactivating
and paste this segment code to within it
public override void
FeatureDeactivating(SPFeatureReceiverProperties
properties)
{
using
(SPSite site = new
SPSite("http://quochung-axioo:90/"))//Change
your web app
{
using
(SPWeb web = site.OpenWeb())
{
SPContentType
theCT = web.ContentTypes[ContentTypeName];
SPWorkflowTemplate
theWF = null;
foreach
(SPWorkflowTemplate tpl in web.WorkflowTemplates)
{
if (tpl.Name == WorkflowName)
{
theWF = tpl;
}
}
SPWorkflowAssociation
wfAssociation = theCT.WorkflowAssociations.GetAssociationByName(WorkflowName,
web.Locale);
if
(wfAssociation != null)
{
theCT.WorkflowAssociations.Remove(wfAssociation);
}
theCT.UpdateWorkflowAssociationsOnChildren(true,
true, true, false);
}
}
}
////////////////////////////////////////////////////////
All Code ////////////////////////////////////////////////////////
using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Workflow;
namespace ActiveWorkflowWhenAddContentType.Features.Feature2
{
/// <summary>
/// This class handles
events raised during feature activation, deactivation, installation,
uninstallation, and upgrade.
/// </summary>
/// <remarks>
/// The GUID attached to
this class may be used during packaging and should not be modified.
/// </remarks>
[Guid("c670481c-5032-4200-9096-385bcdaba2f9")]
public class Feature2EventReceiver : SPFeatureReceiver
{
// Uncomment the method below to handle the event raised
after a feature has been activated.
private string
WorkflowName = "WorkflowForContentType";
private string
ContentTypeName = "DocumentSetContentType";
public override void FeatureActivated(SPFeatureReceiverProperties
properties)
{
using (SPSite site
= new SPSite("http://quochung-axioo:90/"))
{
using (SPWeb
web = site.OpenWeb())
{
SPContentType
theCT = web.ContentTypes[ContentTypeName];
SPWorkflowTemplate theWF = null;
foreach (SPWorkflowTemplate
tpl in web.WorkflowTemplates)
{
if (tpl.Name == WorkflowName)
{
theWF = tpl;
}
}
SPWorkflowAssociation wfAssociation =
theCT.WorkflowAssociations.GetAssociationByName(WorkflowName, web.Locale);
if (wfAssociation != null)
{
theCT.WorkflowAssociations.Remove(wfAssociation);
}
theCT.UpdateWorkflowAssociationsOnChildren(true,
true, true, false);
wfAssociation = SPWorkflowAssociation.CreateWebContentTypeAssociation(theWF,
WorkflowName, "Tasks", "Workflow History");
if
(theCT.WorkflowAssociations.GetAssociationByName(wfAssociation.Name, web.Locale)
== null)
{
theCT.WorkflowAssociations.Add(wfAssociation);
}
else
{
theCT.WorkflowAssociations.Update(wfAssociation);
}
theCT.UpdateWorkflowAssociationsOnChildren(true,
true, true, false);
}
}
}
// Uncomment the method below to handle the event raised
before a feature is deactivated.
public override void
FeatureDeactivating(SPFeatureReceiverProperties
properties)
{
using (SPSite site
= new SPSite("http://quochung-axioo:90/"))
{
using (SPWeb
web = site.OpenWeb())
{
SPContentType
theCT = web.ContentTypes[ContentTypeName];
SPWorkflowTemplate theWF = null;
foreach (SPWorkflowTemplate
tpl in web.WorkflowTemplates)
{
if (tpl.Name == WorkflowName)
{
theWF = tpl;
}
}
SPWorkflowAssociation wfAssociation =
theCT.WorkflowAssociations.GetAssociationByName(WorkflowName, web.Locale);
if (wfAssociation != null)
{
theCT.WorkflowAssociations.Remove(wfAssociation);
}
theCT.UpdateWorkflowAssociationsOnChildren(true,
true, true, false);
}
}
}
// Uncomment the method below to handle the event raised
after a feature has been installed.
//public override void
FeatureInstalled(SPFeatureReceiverProperties properties)
//{
//}
// Uncomment the method below to handle the event raised
before a feature is uninstalled.
//public override void FeatureUninstalling(SPFeatureReceiverProperties
properties)
//{
//}
// Uncomment the method below to handle the event raised
when a feature is upgrading.
//public override void
FeatureUpgrading(SPFeatureReceiverProperties properties, string
upgradeActionName, System.Collections.Generic.IDictionary<string, string>
parameters)
//{
//}
}
}
/////////////////////////////////////////////////////
End All Code ///////////////////////////////////////////////////
Go to Shared Documents | List Settings | Advanced
settings
Allow management of content types? : choose yes | OK
Automatically workflow run as follows: