Workflow Termination

Forums General discussion Workflow Termination

This topic contains 9 replies, has 2 voices, and was last updated by  Alexander Bautz 1 month ago.

  • Author
    Posts
  • #24873

    MYH
    Participant

    Hi Alex,

    I was checking maybe if we can terminate a workflow using dffs, what do you think can we do that? i am starting a workflow when a status field is changed i have the same scenario but to terminate a workflow. if you don’t have time to check it maybe if you can share with me what’s the best way to do it and i will develop the function and add it in my custom js.

    Thank you.

    • This topic was modified 1 month, 1 week ago by  MYH.
  • #24883

    Alexander Bautz
    Keymaster

    I haven’t done this before, but a Google search led me here: https://sharepoint.stackexchange.com/questions/174755/how-to-stop-a-sharepoint-workflow-using-jsom

    You can try using this in Custom JS to terminate your WF.

    Alexander

  • #24913

    MYH
    Participant

    okay thanks Alex, i tried this solution and it’s not working 100% but after doing some research and checking your solution to start a workflow using a button i fixed the code and it’s working fine with me now, if you want i can share the code here.

    • #24928

      Alexander Bautz
      Keymaster

      Yes, please share your code – I know others are looking for a similar solution.

      Alexander

  • #24923

    MYH
    Participant

    Alex if i want to call a function from a rule and set some parameters for it i can’t do that?

    i’ve added a screenshot check it.

    Attachments:
    • #24926

      Alexander Bautz
      Keymaster

      You cannot add an argument to the function here, but you can create a function in custom js and call this function from your rule:

      function callMeFromRule(){
       yourOriginalFunction("your_argument");
      }

      Alexander

    • #24934

      MYH
      Participant

      Alex i’m facing weird behavior from calendar field, when i click on the calendar icon it jump to the top of the page any idea?

    • #24952

      Alexander Bautz
      Keymaster

      I’m not sure why this happens, but I have had the same issue in another list and made some changes to a built in function to fix it. You can try adding this to your Custom JS:

      function OnIframeLoadFinish() {
      	var a, top;
      	top = jQuery("#s4-workspace").scrollTop();
      	if (typeof this.Picker != "undefined")
      		a = this.Picker;
      	if (a !== null && typeof a.readyState !== "undefined" && a.readyState !== null && a.readyState === "complete") {
      		a.style.display = "block";
      		if (typeof document.frames != "undefined" && Boolean(document.frames)) {
      			var b = document.frames[a.id];
      			if(b !== null && typeof b.focus === "function"){
      				b.focus();
      			}
      		} else {
      			a.focus();
      		}
      	}
      	setTimeout(function () {
      		jQuery("#s4-workspace").scrollTop(top);
      	}, 0);
      }

      Alexander

  • #24930

    MYH
    Participant
    
    
    spjs.workflow = {
    	"text":{
    		"successMessage":"The workflow was terminated",
    		"errorMessage":"Something went wrong. To try again, reload the page."
    	},
    	"data":{
    		"dlg":null
    	},
    	"initListItemWF":function(subscriptionId){
    		if(typeof SP.WorkflowServices === "undefined"){
    			jQuery.getScript(_spPageContextInfo.webServerRelativeUrl+"/_layouts/15/sp.workflowservices.js",function(){
    				spjs.workflow.terminate(subscriptionId);
    			});
    		}else{
    			spjs.workflow.terminate(subscriptionId);
    		}
    	},
    	"terminate":function(subscriptionId){
    	    
    	    
    		var listId = "";
    		var itemId = GetUrlKeyValue("ID");
    		
    		console.log(subscriptionId);
    
    		//spjs.workflow.showProgress();
    		
    		
    		var ctx = SP.ClientContext.get_current();
    		var wfManager = SP.WorkflowServices.WorkflowServicesManager.newObject(ctx, ctx.get_web());
    		
    		
    		var workflowInstanceService = wfManager.getWorkflowInstanceService();
    		var wfInstances = workflowInstanceService.enumerateInstancesForListItem(listId, itemId);
    		
    		
    		ctx.load(wfInstances);
    		ctx.executeQueryAsync(
    			function(sender, args){
    				
    				var instancesEnum = wfInstances.getEnumerator();
    				while(instancesEnum.moveNext()){
    					var instance = instancesEnum.get_current();
    					console.log(instance.get_workflowSubscriptionId().toString().toUpperCase());
    					
    					if(instance.get_workflowSubscriptionId().toString() == subscriptionId){
    					    console.log("Matched");
    						workflowInstanceService.terminateWorkflow(instance);
    						ctx.executeQueryAsync(
    					function(sender, args)
    					{
    						spjs.workflow.closeDlg();
    						SP.UI.Notify.addNotification(spjs.workflow.text.successMessage,false);
    					},
    					function (sender, args)
    					{
    						spjs.workflow.closeDlg();
    						
    						console.log(spjs.workflow.text.errorMessage);
    						
    						//alert(spjs.workflow.text.errorMessage);
    					}
    					);
    				    }
    					
    				}
    			
    				console.log("terminated");
    				
    			},
    			function(sender, args)
    			{
    				spjs.workflow.closeDlg();
    				console.log(errorMessage);
    				//alert(errorMessage);
    			}
    		);
    	},
    	"closeDlg":function(){
    		if(spjs.workflow.data.dlg != null){
    			spjs.workflow.data.dlg.close();
    		}
    	},
    	"showProgress":function(){
    		if(spjs.workflow.data.dlg == null){
    			spjs.workflow.data.dlg = SP.UI.ModalDialog.showWaitScreenWithNoClose("Please wait...", "Waiting for workflow...", null, null);
    		}
    	}
    };
  • #24932

    MYH
    Participant

    .ms-notif-box{
    display: none !important;
    }`

    to hide the message “Workflow terminated”

You must be logged in to reply to this topic.