mirror of
https://github.com/valitydev/damsel.git
synced 2024-11-06 09:45:21 +00:00
398 lines
30 KiB
HTML
398 lines
30 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||
<style type="text/css"/><!--
|
||
/*!
|
||
* Bootstrap v2.0.3
|
||
*
|
||
* Copyright 2012 Twitter, Inc
|
||
* Licensed under the Apache License v2.0
|
||
* http://www.apache.org/licenses/LICENSE-2.0
|
||
*
|
||
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||
*/
|
||
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
|
||
.clearfix:after{clear:both;}
|
||
.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
|
||
.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
|
||
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
|
||
audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
|
||
audio:not([controls]){display:none;}
|
||
html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
|
||
a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
|
||
a:hover,a:active{outline:0;}
|
||
sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
|
||
sup{top:-0.5em;}
|
||
sub{bottom:-0.25em;}
|
||
img{max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic;}
|
||
button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
|
||
button,input{*overflow:visible;line-height:normal;}
|
||
button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
|
||
button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
|
||
input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield;}
|
||
input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
|
||
textarea{overflow:auto;vertical-align:top;}
|
||
body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;}
|
||
a{color:#0088cc;text-decoration:none;}
|
||
a:hover{color:#005580;text-decoration:underline;}
|
||
.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}
|
||
.row:after{clear:both;}
|
||
[class*="span"]{float:left;margin-left:20px;}
|
||
.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
|
||
.span12{width:940px;}
|
||
.span11{width:860px;}
|
||
.span10{width:780px;}
|
||
.span9{width:700px;}
|
||
.span8{width:620px;}
|
||
.span7{width:540px;}
|
||
.span6{width:460px;}
|
||
.span5{width:380px;}
|
||
.span4{width:300px;}
|
||
.span3{width:220px;}
|
||
.span2{width:140px;}
|
||
.span1{width:60px;}
|
||
.offset12{margin-left:980px;}
|
||
.offset11{margin-left:900px;}
|
||
.offset10{margin-left:820px;}
|
||
.offset9{margin-left:740px;}
|
||
.offset8{margin-left:660px;}
|
||
.offset7{margin-left:580px;}
|
||
.offset6{margin-left:500px;}
|
||
.offset5{margin-left:420px;}
|
||
.offset4{margin-left:340px;}
|
||
.offset3{margin-left:260px;}
|
||
.offset2{margin-left:180px;}
|
||
.offset1{margin-left:100px;}
|
||
.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}
|
||
.row-fluid:after{clear:both;}
|
||
.row-fluid [class*="span"]{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;float:left;margin-left:2.127659574%;*margin-left:2.0744680846382977%;}
|
||
.row-fluid [class*="span"]:first-child{margin-left:0;}
|
||
.row-fluid .span12{width:99.99999998999999%;*width:99.94680850063828%;}
|
||
.row-fluid .span11{width:91.489361693%;*width:91.4361702036383%;}
|
||
.row-fluid .span10{width:82.97872339599999%;*width:82.92553190663828%;}
|
||
.row-fluid .span9{width:74.468085099%;*width:74.4148936096383%;}
|
||
.row-fluid .span8{width:65.95744680199999%;*width:65.90425531263828%;}
|
||
.row-fluid .span7{width:57.446808505%;*width:57.3936170156383%;}
|
||
.row-fluid .span6{width:48.93617020799999%;*width:48.88297871863829%;}
|
||
.row-fluid .span5{width:40.425531911%;*width:40.3723404216383%;}
|
||
.row-fluid .span4{width:31.914893614%;*width:31.8617021246383%;}
|
||
.row-fluid .span3{width:23.404255317%;*width:23.3510638276383%;}
|
||
.row-fluid .span2{width:14.89361702%;*width:14.8404255306383%;}
|
||
.row-fluid .span1{width:6.382978723%;*width:6.329787233638298%;}
|
||
.container{margin-right:auto;margin-left:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
|
||
.container:after{clear:both;}
|
||
.container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
|
||
.container-fluid:after{clear:both;}
|
||
p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}
|
||
.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
|
||
h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
|
||
h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
|
||
h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
|
||
h3{font-size:18px;line-height:27px;}h3 small{font-size:14px;}
|
||
h4,h5,h6{line-height:18px;}
|
||
h4{font-size:14px;}h4 small{font-size:12px;}
|
||
h5{font-size:12px;}
|
||
h6{font-size:11px;color:#999999;text-transform:uppercase;}
|
||
.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
|
||
.page-header h1{line-height:1;}
|
||
ul,ol{padding:0;margin:0 0 9px 25px;}
|
||
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
|
||
ul{list-style:disc;}
|
||
ol{list-style:decimal;}
|
||
li{line-height:18px;}
|
||
ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
|
||
dl{margin-bottom:18px;}
|
||
dt,dd{line-height:18px;}
|
||
dt{font-weight:bold;line-height:17px;}
|
||
dd{margin-left:9px;}
|
||
.dl-horizontal dt{float:left;width:120px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
||
.dl-horizontal dd{margin-left:130px;}
|
||
hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
|
||
strong{font-weight:bold;}
|
||
em{font-style:italic;}
|
||
.muted{color:#999999;}
|
||
abbr[title]{cursor:help;border-bottom:1px dotted #ddd;}
|
||
abbr.initialism{font-size:90%;text-transform:uppercase;}
|
||
blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
|
||
blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
|
||
blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
|
||
q:before,q:after,blockquote:before,blockquote:after{content:"";}
|
||
address{display:block;margin-bottom:18px;font-style:normal;line-height:18px;}
|
||
small{font-size:100%;}
|
||
cite{font-style:normal;}
|
||
code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||
code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
|
||
pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}pre.prettyprint{margin-bottom:18px;}
|
||
pre code{padding:0;color:inherit;background-color:transparent;border:0;}
|
||
.pre-scrollable{max-height:340px;overflow-y:scroll;}
|
||
.label,.badge{font-size:10.998px;font-weight:bold;line-height:14px;color:#ffffff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;}
|
||
.label{padding:1px 4px 2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||
.badge{padding:1px 9px 2px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
|
||
a.label:hover,a.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;}
|
||
.label-important,.badge-important{background-color:#b94a48;}
|
||
.label-important[href],.badge-important[href]{background-color:#953b39;}
|
||
.label-warning,.badge-warning{background-color:#f89406;}
|
||
.label-warning[href],.badge-warning[href]{background-color:#c67605;}
|
||
.label-success,.badge-success{background-color:#468847;}
|
||
.label-success[href],.badge-success[href]{background-color:#356635;}
|
||
.label-info,.badge-info{background-color:#3a87ad;}
|
||
.label-info[href],.badge-info[href]{background-color:#2d6987;}
|
||
.label-inverse,.badge-inverse{background-color:#333333;}
|
||
.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a;}
|
||
table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
|
||
.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
|
||
.table th{font-weight:bold;}
|
||
.table thead th{vertical-align:bottom;}
|
||
.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
|
||
.table tbody+tbody{border-top:2px solid #dddddd;}
|
||
.table-condensed th,.table-condensed td{padding:4px 5px;}
|
||
.table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapsed;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
|
||
.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
|
||
.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px;}
|
||
.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px;}
|
||
.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;}
|
||
.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;}
|
||
.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
|
||
.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5;}
|
||
table .span1{float:none;width:44px;margin-left:0;}
|
||
table .span2{float:none;width:124px;margin-left:0;}
|
||
table .span3{float:none;width:204px;margin-left:0;}
|
||
table .span4{float:none;width:284px;margin-left:0;}
|
||
table .span5{float:none;width:364px;margin-left:0;}
|
||
table .span6{float:none;width:444px;margin-left:0;}
|
||
table .span7{float:none;width:524px;margin-left:0;}
|
||
table .span8{float:none;width:604px;margin-left:0;}
|
||
table .span9{float:none;width:684px;margin-left:0;}
|
||
table .span10{float:none;width:764px;margin-left:0;}
|
||
table .span11{float:none;width:844px;margin-left:0;}
|
||
table .span12{float:none;width:924px;margin-left:0;}
|
||
table .span13{float:none;width:1004px;margin-left:0;}
|
||
table .span14{float:none;width:1084px;margin-left:0;}
|
||
table .span15{float:none;width:1164px;margin-left:0;}
|
||
table .span16{float:none;width:1244px;margin-left:0;}
|
||
table .span17{float:none;width:1324px;margin-left:0;}
|
||
table .span18{float:none;width:1404px;margin-left:0;}
|
||
table .span19{float:none;width:1484px;margin-left:0;}
|
||
table .span20{float:none;width:1564px;margin-left:0;}
|
||
table .span21{float:none;width:1644px;margin-left:0;}
|
||
table .span22{float:none;width:1724px;margin-left:0;}
|
||
table .span23{float:none;width:1804px;margin-left:0;}
|
||
table .span24{float:none;width:1884px;margin-left:0;}
|
||
/* Auto-generated CSS for generated Thrift docs */
|
||
h3, h4 { margin-bottom: 6px; }
|
||
div.definition { border: 1px solid #CCC; margin-bottom: 10px; padding: 10px; }
|
||
div.extends { margin: -0.5em 0 1em 5em }
|
||
td { vertical-align: top; }
|
||
table { empty-cells: show; }
|
||
code { line-height: 20px; }
|
||
.table-bordered th, .table-bordered td { border-bottom: 1px solid #DDDDDD; }
|
||
--></style>
|
||
<title>Thrift module: state</title></head><body>
|
||
<div class="container-fluid">
|
||
<h1>Thrift module: state</h1>
|
||
Определения структур и сервисов для поддержания взаимодействия со
|
||
state processor – абстракции, реализующей шаг обработки (другими словами,
|
||
один переход состояния) ограниченного конечного автомата со сложным
|
||
состоянием, которое выражается при помощи истории как набора событий,
|
||
порождённых процессором.
|
||
<br/><table class="table-bordered table-striped table-condensed"><thead><th>Module</th><th>Services</th><th>Data types</th><th>Constants</th></thead>
|
||
<tr>
|
||
<td>state</td><td><a href="#Svc_Processor">Processor</a><br/>
|
||
<ul>
|
||
<li><a href="#Fn_Processor_processCall">processCall</a></li>
|
||
<li><a href="#Fn_Processor_processSignal">processSignal</a></li>
|
||
</ul>
|
||
<a href="#Svc_Automaton">Automaton</a><br/>
|
||
<ul>
|
||
<li><a href="#Fn_Automaton_call">call</a></li>
|
||
<li><a href="#Fn_Automaton_destroy">destroy</a></li>
|
||
<li><a href="#Fn_Automaton_repair">repair</a></li>
|
||
<li><a href="#Fn_Automaton_start">start</a></li>
|
||
</ul>
|
||
</td>
|
||
<td><a href="#Struct_Args">Args</a><br/>
|
||
<a href="#Typedef_Call">Call</a><br/>
|
||
<a href="#Struct_CallArgs">CallArgs</a><br/>
|
||
<a href="#Typedef_CallResponse">CallResponse</a><br/>
|
||
<a href="#Struct_CallResult">CallResult</a><br/>
|
||
<a href="#Struct_ComplexAction">ComplexAction</a><br/>
|
||
<a href="#Struct_Event">Event</a><br/>
|
||
<a href="#Typedef_History">History</a><br/>
|
||
<a href="#Struct_InitSignal">InitSignal</a><br/>
|
||
<a href="#Struct_Reference">Reference</a><br/>
|
||
<a href="#Struct_RepairSignal">RepairSignal</a><br/>
|
||
<a href="#Struct_SetTimerAction">SetTimerAction</a><br/>
|
||
<a href="#Struct_Signal">Signal</a><br/>
|
||
<a href="#Struct_SignalArgs">SignalArgs</a><br/>
|
||
<a href="#Struct_SignalResult">SignalResult</a><br/>
|
||
<a href="#Struct_StartResult">StartResult</a><br/>
|
||
<a href="#Struct_TagAction">TagAction</a><br/>
|
||
<a href="#Struct_TimeoutSignal">TimeoutSignal</a><br/>
|
||
</td>
|
||
<td></code></td>
|
||
</tr></table>
|
||
<hr/><h2 id="Typedefs">Type declarations</h2>
|
||
<div class="definition"><h3 id="Typedef_History">Typedef: History</h3>
|
||
<p><strong>Base type:</strong> <code>list<<code><a href="#Struct_Event">Event</a></code>></code></p>
|
||
Сложное состояние, выраженное в виде упорядоченного набора событий
|
||
процессора.
|
||
<br/></div>
|
||
<div class="definition"><h3 id="Typedef_Call">Typedef: Call</h3>
|
||
<p><strong>Base type:</strong> <code>binary</code></p>
|
||
Внешний вызов.
|
||
|
||
При помощи вызовов организовано общение автомата с внешним миром и
|
||
получение на них ответов.
|
||
<br/></div>
|
||
<div class="definition"><h3 id="Typedef_CallResponse">Typedef: CallResponse</h3>
|
||
<p><strong>Base type:</strong> <code>binary</code></p>
|
||
Ответ на внешний вызов.
|
||
<br/></div>
|
||
<hr/><h2 id="Structs">Data structures</h2>
|
||
<div class="definition"><h3 id="Struct_Event">Union: Event</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>event</td><td><code>binary</code></td><td></td><td>optional</td><td></td></tr>
|
||
</table><br/>Произвольное событие, продукт перехода в новое состояние.
|
||
<br/></div><div class="definition"><h3 id="Struct_ComplexAction">Struct: ComplexAction</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>set_timer</td><td><code><a href="#Typedef_SetTimerAction">SetTimerAction</a></code></td><td></td><td>optional</td><td></td></tr>
|
||
<tr><td>2</td><td>tag</td><td><code><a href="#Typedef_TagAction">TagAction</a></code></td><td></td><td>optional</td><td></td></tr>
|
||
</table><br/>Желаемое действие, продукт перехода в новое состояние.
|
||
|
||
Возможные действия представляют собой ограниченный язык для управления
|
||
прогрессом автомата, основанием для прихода сигналов или внешних вызовов,
|
||
которые приводят к дальнейшим переходам состояния. Отсутствие заполненных
|
||
полей будет интерпретировано буквально, как отсутствие желаемых действий.
|
||
<br/></div><div class="definition"><h3 id="Struct_SetTimerAction">Struct: SetTimerAction</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>timer</td><td><code><a href="base.html#Struct_Timer">base.Timer</a></code></td><td>Критерий остановки таймера ожидания
|
||
</td><td>required</td><td></td></tr>
|
||
</table><br/>Действие установки таймера ожидания на определённый отрезок времени.
|
||
|
||
По истечению заданного отрезка времени в процессор поступит сигнал
|
||
`TimeoutSignal`.
|
||
<br/></div><div class="definition"><h3 id="Struct_TagAction">Struct: TagAction</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>tag</td><td><code><a href="base.html#Typedef_Tag">base.Tag</a></code></td><td>Значение для ассоциации
|
||
</td><td>required</td><td></td></tr>
|
||
</table><br/>Действие ассоциации с процессом автомата произвольного значения
|
||
|
||
После факта успешной ассоциации к автомату можно обратиться с внешним
|
||
вызовом, используя указанное значение, то есть в процессор может поступить
|
||
вызов `processCall` с указанным `tag` в качестве `Reference`.
|
||
|
||
Это действие в общем случае неидемпотентно, то есть ассоциация связана с
|
||
определённым моментом в истории, и в случае попытки использования одного и
|
||
того же значения ассоциации в разные моменты истории процесса автомата он
|
||
переходит в ошибочное состояние.
|
||
|
||
То же самое происходит в случае попытки ассоциации одного и того значения с
|
||
двумя или более различными процессами автомата, все они переходят в ошибочное
|
||
состояние, – ситуация, требующая ручного вмешательства.
|
||
<br/></div><div class="definition"><h3 id="Struct_Reference">Union: Reference</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>id</td><td><code><a href="base.html#Typedef_ID">base.ID</a></code></td><td>Основной идентификатор процесса автомата
|
||
</td><td>optional</td><td></td></tr>
|
||
<tr><td>2</td><td>tag</td><td><code><a href="base.html#Typedef_Tag">base.Tag</a></code></td><td>Ассоциация
|
||
</td><td>optional</td><td></td></tr>
|
||
</table><br/>Ссылка, уникально определяющая процесс автомата.
|
||
<br/></div><div class="definition"><h3 id="Struct_CallArgs">Struct: CallArgs</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>call</td><td><code><a href="#Typedef_Call">Call</a></code></td><td>Данные вызова
|
||
</td><td>required</td><td></td></tr>
|
||
<tr><td>2</td><td>history</td><td><code><a href="#Typedef_History">History</a></code></td><td>История автомата
|
||
</td><td>required</td><td></td></tr>
|
||
</table><br/>Набор данных для обработки внешнего вызова.
|
||
<br/></div><div class="definition"><h3 id="Struct_CallResult">Struct: CallResult</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>ev</td><td><code><a href="#Struct_Event">Event</a></code></td><td>Событие, порождённое в результате обработки
|
||
</td><td>required</td><td></td></tr>
|
||
<tr><td>2</td><td>action</td><td><code><a href="#Struct_ComplexAction">ComplexAction</a></code></td><td>Действие, которое необходимо выполнить после обработки
|
||
</td><td>required</td><td></td></tr>
|
||
<tr><td>3</td><td>response</td><td><code><a href="#Typedef_CallResponse">CallResponse</a></code></td><td>Данные ответа
|
||
</td><td>required</td><td></td></tr>
|
||
</table><br/>Результат обработки внешнего вызова.
|
||
<br/></div><div class="definition"><h3 id="Struct_Signal">Union: Signal</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>init</td><td><code><a href="#Typedef_InitSignal">InitSignal</a></code></td><td></td><td>optional</td><td></td></tr>
|
||
<tr><td>2</td><td>timeout</td><td><code><a href="#Typedef_TimeoutSignal">TimeoutSignal</a></code></td><td></td><td>optional</td><td></td></tr>
|
||
<tr><td>3</td><td>repair</td><td><code><a href="#Typedef_RepairSignal">RepairSignal</a></code></td><td></td><td>optional</td><td></td></tr>
|
||
</table><br/>Сигнал, который может поступить в автомат.
|
||
|
||
Сигналы, как и частный их случай в виде вызовов, приводят к прогрессу
|
||
автомата и эволюции его состояния, то есть нарастанию истории.
|
||
<br/></div><div class="definition"><h3 id="Struct_InitSignal">Struct: InitSignal</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>id</td><td><code><a href="base.html#Typedef_ID">base.ID</a></code></td><td>Основной идентификатор процесса автомата
|
||
</td><td>required</td><td></td></tr>
|
||
<tr><td>2</td><td>arg</td><td><code>binary</code></td><td>Набор данных для инициализации
|
||
</td><td>required</td><td></td></tr>
|
||
</table><br/>Сигнал, информирующий о запуске автомата.
|
||
<br/></div><div class="definition"><h3 id="Struct_TimeoutSignal">Struct: TimeoutSignal</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
</table><br/>Сигнал, информирующий об окончании ожидания по таймеру.
|
||
<br/></div><div class="definition"><h3 id="Struct_RepairSignal">Struct: RepairSignal</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>arg</td><td><code>binary</code></td><td></td><td>optional</td><td></td></tr>
|
||
</table><br/>Сигнал, информирующий о необходимости восстановить работу автомата,
|
||
опционально скорректировать своё состояние.
|
||
<br/></div><div class="definition"><h3 id="Struct_SignalArgs">Struct: SignalArgs</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>signal</td><td><code><a href="#Struct_Signal">Signal</a></code></td><td>Поступивший сигнал
|
||
</td><td>required</td><td></td></tr>
|
||
<tr><td>2</td><td>history</td><td><code><a href="#Typedef_History">History</a></code></td><td>История автомата
|
||
</td><td>required</td><td></td></tr>
|
||
</table><br/>Набор данных для обработки сигнала.
|
||
<br/></div><div class="definition"><h3 id="Struct_SignalResult">Struct: SignalResult</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>ev</td><td><code><a href="#Struct_Event">Event</a></code></td><td>Событие, порождённое в результате обработки
|
||
</td><td>required</td><td></td></tr>
|
||
<tr><td>2</td><td>action</td><td><code><a href="#Struct_ComplexAction">ComplexAction</a></code></td><td>Действие, которое необходимо выполнить после обработки
|
||
</td><td>required</td><td></td></tr>
|
||
</table><br/>Результат обработки сигнала.
|
||
<br/></div><div class="definition"><h3 id="Struct_Args">Struct: Args</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>arg</td><td><code>binary</code></td><td>Неструктурированные данные.
|
||
</td><td>required</td><td></td></tr>
|
||
</table><br/>Универсальная расширяемая структура с набором аргументов.
|
||
<br/></div><div class="definition"><h3 id="Struct_StartResult">Struct: StartResult</h3>
|
||
<table class="table-bordered table-striped table-condensed"><thead><th>Key</th><th>Field</th><th>Type</th><th>Description</th><th>Requiredness</th><th>Default value</th></thead>
|
||
<tr><td>1</td><td>id</td><td><code><a href="base.html#Typedef_ID">base.ID</a></code></td><td></td><td>required</td><td></td></tr>
|
||
</table><br/>Результат запуска процесса автомата.
|
||
<br/></div><hr/><h2 id="Services">Services</h2>
|
||
<h3 id="Svc_Processor">Service: Processor</h3>
|
||
Процессор переходов состояния ограниченного конечного автомата.
|
||
|
||
В результате вызова каждого из методов сервиса должны появиться новое
|
||
состояние и новые действия, приводящие к дальнейшему прогрессу автомата.
|
||
<br/><div class="definition"><h4 id="Fn_Processor_processSignal">Function: Processor.processSignal</h4>
|
||
<pre><code><a href="#Struct_SignalResult">SignalResult</a></code> processSignal(<code><a href="#Struct_SignalArgs">SignalArgs</a></code> a)
|
||
</pre>Обработать поступивший сигнал.
|
||
<br/></div><div class="definition"><h4 id="Fn_Processor_processCall">Function: Processor.processCall</h4>
|
||
<pre><code><a href="#Struct_CallResult">CallResult</a></code> processCall(<code><a href="#Struct_CallArgs">CallArgs</a></code> a)
|
||
</pre>Обработать внешний вызов и сформировать ответ на него.
|
||
<br/></div><h3 id="Svc_Automaton">Service: Automaton</h3>
|
||
Сервис управления процессами автоматов, отвечающий за реализацию желаемых
|
||
действий и поддержку состояния процессоров.
|
||
<br/><div class="definition"><h4 id="Fn_Automaton_start">Function: Automaton.start</h4>
|
||
<pre><code><a href="#Struct_StartResult">StartResult</a></code> start(<code><a href="#Struct_Args">Args</a></code> a)
|
||
</pre>Запустить новый процесс автомата.
|
||
<br/></div><div class="definition"><h4 id="Fn_Automaton_destroy">Function: Automaton.destroy</h4>
|
||
<pre><code>void</code> destroy(<code><a href="#Struct_Reference">Reference</a></code> ref)
|
||
throws <code><a href="base.html#Struct_NotFound">base.NotFound</a></code>
|
||
</pre>Уничтожить определённый процесс автомата.
|
||
<br/></div><div class="definition"><h4 id="Fn_Automaton_repair">Function: Automaton.repair</h4>
|
||
<pre><code>void</code> repair(<code><a href="#Struct_Reference">Reference</a></code> ref,
|
||
<code><a href="#Struct_Args">Args</a></code> a)
|
||
throws <code><a href="base.html#Struct_NotFound">base.NotFound</a></code>
|
||
</pre>Попытаться перевести определённый процесс автомата из ошибочного
|
||
состояния в штатное и продолжить его исполнение.
|
||
<br/></div><div class="definition"><h4 id="Fn_Automaton_call">Function: Automaton.call</h4>
|
||
<pre><code><a href="#Typedef_CallResponse">CallResponse</a></code> call(<code><a href="#Struct_Reference">Reference</a></code> ref,
|
||
<code><a href="#Typedef_Call">Call</a></code> c)
|
||
throws <code><a href="base.html#Struct_NotFound">base.NotFound</a></code>
|
||
</pre>Совершить вызов и дождаться на него ответа.
|
||
<br/></div></div></body></html>
|