private string BuildSoapRequest(List list, NintexWorkflowDefinition workflowModel) { //var encodedXml = workflowModel.WorkflowXml.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\"", """).Replace("'", "'"); var encodedXml = System.Net.WebUtility.HtmlEncode(workflowModel.WorkflowXml); var listTitle = list != null ? list.Title : String.Empty; var workflowName = workflowModel.Name; var saveIfCannotPublish = Boolean.TrueString.ToLower(); var request = String.Format(SoapPublishFromNWFXmlRequstTemplate, encodedXml, listTitle, workflowName, saveIfCannotPublish); return(request); }
private void DeployNintexWorkflow(ListModelHost listModelHost, NintexWorkflowDefinition workflowDefinition) { var list = listModelHost.HostList; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = workflowDefinition, ObjectType = typeof(NintexWorkflowDefinition), ObjectDefinition = workflowDefinition, ModelHost = list }); // TODO, add NintexWorkflowService web service ref //using (var nintexService = new NintexWorkflowService.NintexWorkflowWS()) //{ // nintexService.Url = SPUrlUtility.CombineUrl(list.ParentWeb.Url, NintexUrls.WorkflowServiceUrl); // nintexService.PreAuthenticate = true; // nintexService.Credentials = System.Net.CredentialCache.DefaultCredentials; // var xmlnw = Encoding.UTF8.GetString(workflowDefinition.WorkflowXml); // var result = nintexService.PublishFromNWFXml(xmlnw, list.Title, workflowDefinition.WorkflowName, true); //} InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = workflowDefinition, ObjectType = typeof(NintexWorkflowDefinition), ObjectDefinition = workflowDefinition, ModelHost = list }); }
public static ModelNode AddNintexWorkflow(this ModelNode model, NintexWorkflowDefinition definition, Action <ModelNode> action) { return(model.AddDefinitionNode(definition, action)); }
public static ModelNode AddNintexWorkflow(this ModelNode model, NintexWorkflowDefinition definition) { return(AddNintexWorkflow(model, definition, null)); }
public override void DeployModel(object modelHost, DefinitionBase model) { NintexWorkflowDefinition WorkflowModel = (NintexWorkflowDefinition)model; InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioning, Object = null, ObjectType = typeof(Object), ObjectDefinition = WorkflowModel, ModelHost = modelHost }); // https://help.nintex.com/en-US/sdks/sdk2013/#Walkthroughs/WK_Prc_NWF2013_exportandpublishaworkflow.htm%3FTocPath%3DNintex%2520Software%2520Development%2520Kit%7CModifying%2520and%2520Extending%2520Nintex%2520Workflow%2520and%2520Forms%7C_____5 base.DeployModel(modelHost, model); var listModelHost = modelHost as ListModelHost; var baseModelHost = modelHost as CSOMModelHostBase; var web = baseModelHost.HostWeb; var list = listModelHost != null ? listModelHost.HostList : null; var clientContext = baseModelHost.HostClientContext; var formDigestValue = clientContext.GetFormDigestDirect().DigestValue; var publishUrl = UrlUtility.CombineUrl(web.Url, "/_vti_bin/NintexWorkflow/Workflow.asmx"); using (var executor = clientContext.WebRequestExecutorFactory.CreateWebRequestExecutor(clientContext, publishUrl)) { executor.RequestMethod = "POST"; executor.RequestContentType = "text/xml; charset=utf-8"; executor.RequestHeaders.Add("X-RequestDigest", formDigestValue); executor.RequestHeaders.Add("SOAPAction", "\"http://nintex.com/PublishFromNWFXml\""); executor.RequestHeaders.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate"); executor.WebRequest.AutomaticDecompression = DecompressionMethods.GZip; HttpWebRequest request = executor.WebRequest; ClientRuntimeContext.SetupRequestCredential(clientContext, request); var FireExecutingWebRequestEventInternalMethod = typeof(ClientContext).GetMethod("FireExecutingWebRequestEventInternal", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FireExecutingWebRequestEventInternalMethod.Invoke(clientContext, new object[] { new WebRequestEventArgs(executor) }); var requestStream = executor.GetRequestStream(); using (var streamWriter = new StreamWriter(requestStream, Encoding.UTF8)) { var formatedString = BuildSoapRequest(list, WorkflowModel); streamWriter.Write(formatedString); } requestStream.Close(); var result = ""; var response = request.GetResponse(); using (StreamReader sr = new StreamReader(response.GetResponseStream())) { result = sr.ReadToEnd(); result = ReadSoapResponse(result); } //executor.Execute(); //var result = ReadSoapResponse(executor); InvokeOnModelEvent(this, new ModelEventArgs { CurrentModelNode = null, Model = null, EventType = ModelEventType.OnProvisioned, Object = result, ObjectType = typeof(string), ObjectDefinition = WorkflowModel, ModelHost = modelHost }); } }