I've ran into this scenario a lot it seems. I'm not sure if it's an issue with SharePoint Designer, or SharePoint itself, but the following seems to occur often:
I create a Workflow in SharePoint Designer, and when I save it, it's good to go, and works as expected. However, when opening it later for edits in SPD, I can make changes to the workflow, very large ones, and save it, and on the SharePoint site, it shows as a new version of this workflow, but never reflects the new changes I made to it.
For instance, I created a simple one to test, simply an email gets sent to me when a new item is created in a list. Works fine. However, when I add an item lookup in the body of the email, save the workflow again, and create a new item in my list, I still get a blank email, not the new item lookup in the body of the email as expected.
Is there some kind of timer with SharePoint updating workflows? Am I missing something here?
SOLUTION:
For SharePoint Designer, the solution is similar to Dave's solution.
It seems SharePoint Designer saves local copies of DLLs from your servers, and although everything seems OK, this prevents it from updating the workflow (this is when custom activities are involved, which the question didn't mention).
To solve this issue for MOSS 2007:
Go to the folder and delete the files and folders C:\Users\LOginUse\AppData\Roaming\Microsoft\Web Server Extensions\Cache C:\Users\LOginUse\AppData\Local\Microsoft\WebsiteCache
|
Thursday, July 4, 2013
SharePoint Designer workflows never reflects the new changes
Labels:
Issue List,
Sharepoint 2007,
Sharepoint 2010,
Sharepoint 2013
Wednesday, July 3, 2013
STSADM Commands for Sharepoint 2010
1.After activating or Deactivating or Deleting Infopath forms in the Central Admin then execute the below commands for immediate execution jobs
stsadm -o execadmsvcjobs
.....
stsadm -o execadmsvcjobs
.....
Thursday, June 27, 2013
Friday, May 17, 2013
Load Sharepoint List Items in the drop down list (Web part page) via SP Object Model
Load Sharepoint List Items in the drop down list (Web part page) via SP Object Model
private void populateAvailiability()
{
try
{
ddlAvailability.Items.Clear();
string
listName = "HR_Comp_Availability";
SPSite
site = SPContext.Current.Site;
SPWeb
web = SPContext.Current.Web;
Guid
webGuid = web.ID;
Guid
siteGuid = site.ID;
//new
code for spsite
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite currentSite = new SPSite(siteGuid))
{
currentSite.AllowUnsafeUpdates = true;
currentSite.CatchAccessDeniedException = false;
using (SPWeb itemWeb = currentSite.OpenWeb(webGuid))
{
SPList list =
itemWeb.Lists[listName];
SPView view = list.DefaultView;
SPQuery query = new SPQuery();
query.ViewFields = "";
//query.Query =
" ";
SPListItemCollection items = list.GetItems(query);
DataTable Availability2 = items.GetDataTable();
if (Availability2.Rows.Count
> 0)
{
ddlAvailability.DataValueField = "Title";
ddlAvailability.DataTextField = "Title";
ddlAvailability.DataSource = Availability2;
ddlAvailability.DataBind();
//ddlAvailability.Items.Insert(0, new ListItem("select",
"0"));
}
else
{
ddlAvailability.Items.Clear();
}
}
}
});
}
catch (Exception ex)
{
this.lblError.Text += ex.Message + " -- " + ex.StackTrace;
}
}
Check User available in that Sharepoint Group or Not using SP Object Model
If the User available in that SP Group or Not via SP Object Model
private void GetSecurityGroup()
{
// Write your code here.
string SecurityGroupflag = "";
using (SPSite siteCollection = SPContext.Current.Site)
//using (SPSite siteCollection = new SPSite(properties.WebUrl))
{
using (SPWeb site = siteCollection.OpenWeb())
{
string groupName = "GWPSecurity";
//Get the current logged in user
SPUser currentUser = site.CurrentUser;
//Get all the user groups in the site/web
SPGroupCollection userGroups = currentUser.Groups;
//Loops through the groups and check if the user is part of given group or not.
foreach (SPGroup group in userGroups)
{
//Checking the group
if (group.Name.Contains(groupName))
{
SecurityGroupflag = "true";
break;
}
else
{
SecurityGroupflag = "false";
}
}
}
}
XPathNavigator datasource;
datasource = this.MainDataSource.CreateNavigator();
datasource.SelectSingleNode("/my:myFields/my:GWP_Security_Check_Group", NamespaceManager).SetValue(SecurityGroupflag);
}
Get Sharepoint Group User's Name and User Email id via SP Object Model
Get SP Group User's Name and User Email id via SP Object Model:
private void GetSecurity()
{
string GetSecurity = string.Empty;
string GetSecurityEmail = string.Empty;
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
SPGroup gp = web.Groups["GWPSecurity"];
if (gp != null)
{
foreach (SPUser usr in gp.Users)
{
//if (usr.Name != "System Account")
//{
if (GetSecurity == "")
GetSecurity += usr.Name;
//else
// GetSecurity += ", " + usr.Name;
if (GetSecurityEmail == "")
GetSecurityEmail += usr.Email;
else
GetSecurityEmail += ";" + usr.Email;
//}
}
}
}
}
XPathNavigator datasource;
datasource = this.MainDataSource.CreateNavigator();
datasource.SelectSingleNode("/my:myFields/my:NewSecurityName", NamespaceManager).SetValue(GetSecurity);
datasource.SelectSingleNode("/my:myFields/my:SecurityofficerEmail", NamespaceManager).SetValue(GetSecurityEmail);
}
Get Active Driectory Information using ASP.Net Code
You can get the below details from AD:
Get the AD First Name
Get the AD Last Name
Get the AD Email
Get the AD Designation
Get the AD Department
Use in the following Namespace :
using System.DirectoryServices;
protected string GetADUserInfo(string AccountName)
{
//try
//{
// pass the account name as "jtan" remove the Domain name and "\\".
//production
string ldapQueryFormat = @"LDAP://DC=APACS,DC=STARS";
//VPC
//string ldapQueryFormat = @"LDAP://DC=APACS,DC=local";
string queryFilterFormat = @"(&(samAccountName=" + AccountName + ")
(objectCategory=person)(objectClass=user))";
string email = "";
//production
using (DirectoryEntry root = new DirectoryEntry(ldapQueryFormat, "APAC\
\Adminshrp", "Newuser1"))
//VPC
//using (DirectoryEntry root = new DirectoryEntry(ldapQueryFormat, "APAC\
\Administrator", "p@ssw0rd"))
{
using (DirectorySearcher searcher = new DirectorySearcher(root))
{
searcher.Filter = queryFilterFormat;
SearchResult result = searcher.FindOne();
DirectoryEntry dr = result.GetDirectoryEntry();
if (dr.Properties.Count > 0)
{
email = dr.Properties["mail"][0].ToString();
}
}
}
return email;
//}
//catch (Exception ex)
//{
// lblError.Text = ex.Message + "--" + ex.StackTrace;
//}
}
Subscribe to:
Posts (Atom)