Documentation

Workflow

Methods to handle workflows

Method Description
bizproc.workflow.instance.list Returns list of launched workflows. Alias of bizproc.workflow.instances.
bizproc.workflow.instances Returns list of launched workflows.
bizproc.workflow.terminate Stops an active workflow.
bizproc.workflow.start Launches a workflow.
bizproc.workflow.template.list Returns list of templates for workflows, installed on the site.

Example

Example of REST-application to handle Workflow launch/stop:

     1 <?php
     2 header('Content-Type: text/html; charset=UTF-8');
     3 ?>
     4 <!DOCTYPE html>
     5 <html lang="en">
     6 <head>
     7 	<meta charset="UTF-8">
     8 	<title></title>
     9 	<style type="text/css">
    10 		.wf-list {
    11 			list-style-type: none;
    12 		}
    13 		.wf-list li {
    14 			margin: 25px 0;
    15 		}
    16 		.wf-title {
    17 			font-size: 16px;
    18 			font-weight: bold;
    19 			color: grey;
    20 		}
    21 		.wf-complete {
    22 			padding: 5px;
    23 			border: 1px dotted;
    24 		}
    25 		.wf-complete .wf-title
    26 		{
    27 			color: green;
    28 			margin-bottom: 10px;
    29 			display: block;
    30 		}
    31 		.wf-complete textarea
    32 		{
    33 			margin-bottom: 10px;
    34 			display: block;
    35 		}
    36 		#user-name
    37 		{
    38 			font-weight: bold;
    39 			color: green;
    40 		}
    41 	</style>
    42 </head>
    43 <body style="display: none">
    44 <script src="//api.bitrix24.com/api/v1/"></script>
    45 <h1>Hello, <span id="user-name"></span></h1>
    46 <h2>This is example of Bizproc workflows API usage</h2>
    47 
    48 <button onclick="selectCRMEntity();">Select LEAD
    49 <span id="selected-entity" data-entity-id=""></span>
    50 <br>Select template:
    51 <select id="tpl-id"><option value="">-- choose --</option></select>
    52 <button onclick="startWf(document.getElementById('selected-entity').getAttribute('data-entity-id'), document.getElementById('tpl-id').value, getList);">Start BP</button>
    53 <hr>
    54 <button onclick="getList();">Get workflow instances list</button>
    55 <ul id="inst-list" class="inst-list"></ul>
    56 
    57 <script type="text/javascript">
    58 	var currentUser = null;
    59 	BX24.init(function()
    60 	{
    61 		BX24.callMethod('user.current', {}, function(res){
    62 			currentUser = res.data();
    63 			document.body.style.display = '';
    64 			document.getElementById('user-name').textContent = currentUser['NAME'] + ' ' + currentUser['LAST_NAME']
    65 		});
    66 
    67 		getTemplates();
    68 	});
    69 
    70 	function getList()
    71 	{
    72 		var listNode = document.getElementById('inst-list');
    73 
    74 		listNode.innerHTML = '';
    75 
    76 		BX24.callMethod(
    77 			'bizproc.workflow.instance.list',
    78 			{
    79 				select: [
    80 					'ID',
    81 					'STARTED',
    82 					'STARTED_BY',
    83 					'TEMPLATE_ID',
    84 					'DOCUMENT_ID'
    85 				],
    86 				order: {MODIFIED: 'DESC'},
    87 				filter: {MODULE_ID: 'crm', ENTITY: 'CCrmDocumentLead'}
    88 			},
    89 			function(result)
    90 			{
    91 				if(result.error())
    92 					alert("Error: " + result.error());
    93 				else
    94 				{
    95 					var wfs = result.data();
    96 
    97 					wfs.forEach(function(wf)
    98 					{
    99 						renderWfi(wf, listNode);
   100 					});
   101 				}
   102 			}
   103 		);
   104 	}
   105 
   106 	function getTemplates()
   107 	{
   108 		var selectNode = document.getElementById('tpl-id');
   109 
   110 		BX24.callMethod(
   111 			'bizproc.workflow.template.list',
   112 			{
   113 				select: [
   114 					'ID',
   115 					// 'MODULE_ID',
   116 					// 'ENTITY',
   117 					// 'DOCUMENT_TYPE',
   118 					// 'AUTO_EXECUTE',
   119 					'NAME',
   120 					// 'TEMPLATE',
   121 					// 'PARAMETERS',
   122 					// 'VARIABLES',
   123 					// 'CONSTANTS',
   124 					'MODIFIED',
   125 					'IS_MODIFIED',
   126 					'USER_ID',
   127 					'SYSTEM_CODE'
   128 				],
   129 				filter: {MODULE_ID: 'crm', ENTITY: 'CCrmDocumentLead'}
   130 			},
   131 			function(result)
   132 			{
   133 				if(result.error())
   134 					alert("Error: " + result.error());
   135 				else
   136 				{
   137 					var templates = result.data();
   138 
   139 					console.log(templates);
   140 
   141 					templates.forEach(function(tpl)
   142 					{
   143 						var option = document.createElement('OPTION');
   144 						option.setAttribute('value', tpl['ID']);
   145 						option.textContent = tpl['NAME'];
   146 
   147 						selectNode.appendChild(option);
   148 
   149 					});
   150 				}
   151 			}
   152 		);
   153 	}
   154 
   155 	function renderWfi(wf, parentNode)
   156 	{
   157 		var li = document.createElement('LI');
   158 		var span = document.createElement('SPAN');
   159 		span.textContent = wf['ID'];
   160 		span.classList.add('wf-title');
   161 
   162 		li.appendChild(span);
   163 
   164 		li.classList.add('wf-complete');
   165 
   166 		var wfContainer = document.createElement('DIV');
   167 
   168 		var doTerminate = function()
   169 		{
   170 			terminateWf(wf['ID'], function()
   171 				{
   172 					parentNode.removeChild(li);
   173 				}
   174 			);
   175 		};
   176 
   177 		var terminateButton = document.createElement('BUTTON');
   178 		terminateButton.textContent = 'Terminate';
   179 		terminateButton.addEventListener('click', doTerminate.bind(window), false);
   180 		wfContainer.appendChild(terminateButton);
   181 
   182 		li.appendChild(wfContainer);
   183 
   184 		parentNode.appendChild(li);
   185 	}
   186 
   187 	function terminateWf(id, cb)
   188 	{
   189 		var params = {ID: id, STATUS: 'Terminated by rest app.'};
   190 
   191 		BX24.callMethod(
   192 			'bizproc.workflow.terminate',
   193 			params,
   194 			function(result)
   195 			{
   196 				if(result.error())
   197 					alert("Error: " + result.error());
   198 				else if (cb)
   199 					cb();
   200 			}
   201 		);
   202 	}
   203 
   204 	function startWf(leadId, tplId, cb)
   205 	{
   206 		if (!leadId)
   207 		{
   208 			alert('Lead not selected');
   209 			return;
   210 		}
   211 
   212 		var params = {
   213 			TEMPLATE_ID: tplId,
   214 			DOCUMENT_ID: ['crm', 'CCrmDocumentLead', leadId],
   215 			PARAMETERS: null
   216 		};
   217 
   218 		BX24.callMethod(
   219 			'bizproc.workflow.start',
   220 			params,
   221 			function(result)
   222 			{
   223 				if(result.error())
   224 					alert("Error: " + result.error());
   225 				else if (cb)
   226 					cb();
   227 			}
   228 		);
   229 	}
   230 
   231 
   232 	function selectCRMEntity()
   233 	{
   234 		document.getElementById('selected-entity').textContent = '';
   235 		BX24.selectCRM({
   236 			entityType: ['lead']
   237 		}, function(selected)
   238 		{
   239 			if (selected['lead'] && selected['lead'][0])
   240 			{
   241 				document.getElementById('selected-entity').textContent = selected['lead'][0]['title'];
   242 				var	id =  selected['lead'][0]['id'];
   243 
   244 				document.getElementById('selected-entity').setAttribute('data-entity-id', id.substring(2));
   245 			}
   246 		})
   247 	}
   248 
   249 </script>
   250 </body>
   251 </html>

User Comments

User comments are not part of official documentation. Use information provided by other users in the comments at your own risk.

The User Comments section is not to be used as a feature discussion board. Only registered users can post comments. Your comment will be visible once it has been approved by the moderator.
© «Bitrix Inc.», 2001-2019, «Bitrix Inc.», 2019