private void Step_SetupObjects() { string taskListGUID = null; string workflowLibGUID = null; ListsSvc.Lists sv = new ListsSvc.Lists(); sv.Url = string.Format("{0}/{1}", SiteLoc.Text.TrimEnd(new char[] { '/' }), "_vti_bin/Lists.asmx"); sv.UseDefaultCredentials = true; sv.Credentials = System.Net.CredentialCache.DefaultCredentials; sv.PreAuthenticate = true; XmlNode listCol = sv.GetListCollection(); foreach (XmlNode list in listCol) { // Get Task List ID if (list.Attributes["ServerTemplate"].Value == "107") taskListGUID = list.Attributes["ID"].Value; // Get No-Code Workflow Location ID else if (list.Attributes["ServerTemplate"].Value == "117") workflowLibGUID = list.Attributes["ID"].Value; } if (string.IsNullOrEmpty(taskListGUID)) sv.AddList("Tasks", "Tasks", 107); if (string.IsNullOrEmpty(workflowLibGUID)) sv.AddList("Workflows", "Workflows", 117); }
// List Web サービスから List の Guid を取得する private string GetListGUIDFromName(string siteLocation, string pListName) { ListsSvc.Lists sv = new ListsSvc.Lists(); sv.Url = string.Format("{0}/{1}", siteLocation.TrimEnd(new char[] { '/' }), "_vti_bin/Lists.asmx"); sv.UseDefaultCredentials = true; sv.Credentials = System.Net.CredentialCache.DefaultCredentials; sv.PreAuthenticate = true; XmlNode list = sv.GetListAndView(pListName, ""); return list.ChildNodes[0].Attributes["Name"].Value; }
// デフォルトのタスクリストIDなど、 // ワークフロー作成に必要なデータを収集する private void GetWorkflowMetadata(string pSiteLocation, out string pTaskListGUID, out string pWorkflowLibGUID) { pTaskListGUID = null; pWorkflowLibGUID = null; ListsSvc.Lists sv = new ListsSvc.Lists(); sv.Url = string.Format("{0}/{1}", pSiteLocation.TrimEnd(new char[] { '/' }), "_vti_bin/Lists.asmx"); sv.UseDefaultCredentials = true; sv.Credentials = System.Net.CredentialCache.DefaultCredentials; sv.PreAuthenticate = true; XmlNode listCol = sv.GetListCollection(); foreach (XmlNode list in listCol) { // Get Task List ID if(list.Attributes["ServerTemplate"].Value == "107") pTaskListGUID = list.Attributes["ID"].Value; // Get No-Code Workflow Location ID else if (list.Attributes["ServerTemplate"].Value == "117") pWorkflowLibGUID = list.Attributes["ID"].Value; } }
// フィールド名称からフィールドの内部名を取得する private string GetFieldInternalName(string pSiteLocation, string pDocListGUID, string pDisplayName) { string fieldName = null; ListsSvc.Lists sv = new ListsSvc.Lists(); sv.Url = string.Format("{0}/{1}", pSiteLocation.TrimEnd(new char[] { '/' }), "_vti_bin/Lists.asmx"); sv.UseDefaultCredentials = true; sv.Credentials = System.Net.CredentialCache.DefaultCredentials; sv.PreAuthenticate = true; XmlNode listNode = sv.GetList(pDocListGUID); XmlElement fieldsElem = listNode["Fields"]; foreach (XmlElement field in fieldsElem) { if (field.Attributes["DisplayName"].Value == pDisplayName) fieldName = field.Attributes["Name"].Value; } return fieldName; }