Thursday, June 5, 2014

Working with workflow service in JavaScript (JSOM) in SharePoint 2013 / Office 365 (SharePoint Online) – Part 1 (iterate workflow deployments and subscriptions)

SharePoint 2013 provides set of JavaScript libraries that can used to manage workflows. First you need to refer sp.workflowservices.js which is available in _layouts/15/sp.workflowservices.js.
<script src="/_layouts/15/sp.workflowservices.js"></script>

Following are few examples of using the library

1. Get all Workflows deployed to current web
2. Get all workflow subscriptions attached to a list
3. Get all workflow subscriptions in current web
4. Get all workflow subscriptions for workflow definition

apart from these things you can get subscriptions by



    • enumerateSubscriptionsByEventSource
    • enumerateSubscriptionsByListAndParentContentType
    • enumerateSubscriptionsByListWithContentType

Get all Workflows deployed to current web


var context = SP.ClientContext.get_current();
var web = context.get_web();
var sMgr =new SP.WorkflowServices.WorkflowServicesManager(context, web);
var wDefs = sMgr.getWorkflowDeploymentService().enumerateDefinitions();
context.load(wDefs);

context.executeQueryAsync(
function(){
var e = wDefs.getEnumerator();
while (e.moveNext()) {
var def = e.get_current();
alert(def.get_displayName() + " id: " + def.get_id());
}
},
function(a,b){
alert(args.get_message());
}
);


Get all workflow subscriptions attached to a list 

For this you need to have List Guide related to relevant list.



var listGuid = "93A65752-DB60-496F-B9F5-CD864050DB39";     
var context = SP.ClientContext.get_current();
var web = context.get_web();
var sMgr =new SP.WorkflowServices.WorkflowServicesManager(context, web);
var sservice = sMgr.getWorkflowSubscriptionService();
var ssubs = sservice.enumerateSubscriptionsByList(listGuid);
context.load(ssubs);
context.executeQueryAsync(
   function(){
       var e = ssubs.getEnumerator();
         while(e.moveNext())
         {
           var c =  e.get_current();
           alert("Name :" + c.get_name() + " sID: " + c.get_id());
         };
 
   },
   function(){ alert("error")}
);

Get all workflow subscriptions in current web


var context = SP.ClientContext.get_current();
var web = context.get_web();
var sMgr =new SP.WorkflowServices.WorkflowServicesManager(context, web);
var sservice = sMgr.getWorkflowSubscriptionService();
var ssubs = sservice.enumerateSubscriptions();
context.load(ssubs);
context.executeQueryAsync(
function(){
var e = ssubs.getEnumerator();
while(e.moveNext())
{
var c = e.get_current();
alert("Name :" + c.get_name() + " sID: " + c.get_id());
};

},
function(){ alert("error")}
);


Get all workflow subscriptions for workflow definition


var wfdefinitionId = "c791c3cb-abcd-4022-bc06-6fcc6ca4f6bc"; 
var context = SP.ClientContext.get_current();
var web = context.get_web();
var sMgr =new SP.WorkflowServices.WorkflowServicesManager(context, web);
var sservice = sMgr.getWorkflowSubscriptionService();
var ssubs = sservice.enumerateSubscriptionsByDefinition(wfdefinitionId);
context.load(ssubs);
context.executeQueryAsync(
function(){
var e = ssubs.getEnumerator();
while(e.moveNext())
{
var c = e.get_current();
alert("Name :" + c.get_name() + " sID: " + c.get_id());
};

},
function(){ alert("error")}
);

Tuesday, June 3, 2014

How to change the SharePoint 2013 scripts to debug versions

SharePoint environment works with release mode java scripts which can not be (hardly) debug easily. if you want to load debug scripts resides on layout folder rather than release scripts you need to change the master page’s script manger tag.

Open the master page and alter the ScriptManager tag and scriptmode to debug.

image

then you can see SharePoint loads debug scripts.

image