Документация для разработчиков

Бизнес-процесс

Методы работы с Бизнес-процессами

Метод Описание
bizproc.workflow.instance.list Метод возвращает список запущенных бизнес-процессов. Адлиас bizproc.workflow.instances.
bizproc.workflow.instances Метод возвращает список запущенных бизнес-процессов.
bizproc.workflow.terminate Метод останавливает активный Бизнес-процесс.
bizproc.workflow.start Метод запускает Бизнес-процесс.

Пример

Пример rest приложения для работы с запуском/остановкой БП:

     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>

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2020, «1С-Битрикс», 2020
Наверх