{"text_format":"2","workbook":"xlsx","n_sheets":2,"sheets":["使用说明","工程模板"],"not_rendered":{"charts":0,"images":7,"macros":1,"external_links":0,"defined_names":1,"comments":2,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"run_cost":"one","rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"使用说明","index":0,"n_rows":364,"n_cols":19,"rows_kept":364,"cut":false,"hidden":false,"merged":[[127,6,131,6],[120,6,123,6],[213,6,216,6],[213,7,216,9],[222,1,222,2],[239,1,239,2],[166,2,168,2],[112,6,113,6],[112,7,113,7],[112,8,113,9],[120,7,123,9],[217,6,219,6],[217,7,219,7],[217,8,219,9],[212,3,213,4],[214,2,216,2],[217,3,217,4],[143,2,143,4],[144,2,145,2],[144,3,145,4],[146,2,148,2],[154,2,154,4],[155,2,156,2],[204,6,207,6],[98,4,99,4],[97,1,97,4],[98,1,99,1],[93,8,93,9],[94,8,94,9],[95,8,95,9],[99,6,103,6],[115,6,116,6],[98,2,99,3],[100,1,102,1],[115,7,116,9],[110,7,111,9],[110,6,111,6],[103,1,105,1],[106,2,106,4],[107,2,107,4],[108,2,108,4],[102,11,102,18],[109,11,109,13],[115,11,115,12],[119,11,119,12],[125,11,125,13],[125,15,125,16],[149,3,149,4],[150,3,150,4],[213,12,216,14],[208,8,210,9],[208,7,210,7],[208,6,210,6],[135,6,138,6],[155,3,156,4],[208,11,208,14],[211,2,211,4],[212,2,213,2],[104,8,104,9],[105,8,105,9],[106,8,106,9],[107,8,107,9],[104,6,107,6],[117,8,117,9],[209,11,212,11],[15,2,16,5],[84,7,92,9],[17,2,18,5],[11,1,12,1],[11,2,12,5],[22,1,23,17],[77,1,78,17],[17,1,18,1],[84,11,84,17],[84,6,92,6],[204,7,207,9],[202,2,203,2],[213,11,216,11],[201,2,201,4],[157,2,159,2],[160,2,162,2],[209,12,212,14],[202,3,203,4],[204,2,206,2],[207,3,207,4],[208,3,208,4],[196,1,197,17],[175,1,176,17],[163,2,165,2],[298,11,299,14],[295,1,296,17],[259,11,260,11],[258,11,258,13],[259,12,260,12],[259,13,260,13],[261,11,263,11],[264,11,266,11],[284,10,285,10],[272,9,273,9],[274,7,276,7],[277,7,279,7],[298,1,299,3],[298,5,299,8],[269,1,281,1],[271,7,271,9],[272,7,273,7],[272,8,273,8],[245,9,246,9],[284,8,285,8],[284,9,285,9],[286,8,287,8],[288,8,290,8],[244,7,244,9],[259,3,260,3],[280,8,280,9],[282,1,291,1],[283,8,283,10],[245,7,246,7],[245,8,246,8],[243,1,254,1],[247,7,249,7],[250,7,252,7],[253,8,253,9],[254,8,254,9],[255,1,268,1],[258,3,258,5],[259,4,260,4],[259,5,260,5],[261,3,263,3],[264,3,266,3],[267,4,267,5],[1,1,2,17],[80,6,80,9],[80,1,80,5],[80,10,80,17],[135,7,136,7],[135,8,136,9],[137,7,138,7],[137,8,138,9],[127,7,131,9],[132,6,134,6],[132,8,132,9],[133,8,133,9],[134,8,134,9],[5,1,6,17],[99,7,103,9],[124,8,124,9],[93,6,96,6],[8,1,8,5],[93,11,93,13],[15,1,16,1],[9,1,10,1],[9,2,10,5],[13,1,14,1],[13,2,14,5],[301,1,301,3],[302,1,303,1],[302,2,303,2],[302,3,303,3],[321,1,322,4],[340,1,341,17],[343,1,344,5],[343,6,344,10],[301,5,301,6],[301,8,301,9],[301,11,301,15],[302,5,303,5],[321,7,322,11],[310,11,310,13],[304,8,306,8],[309,5,309,6],[309,8,309,9],[302,6,303,6],[302,8,303,8],[302,9,303,9],[304,1,306,1],[307,1,309,1],[304,5,306,5],[357,1,358,17],[360,1,361,4],[363,1,365,10],[310,5,311,5],[310,6,311,6],[310,8,311,8],[310,9,311,9],[349,1,350,5],[349,6,350,10],[351,1,352,5],[351,6,352,10],[345,1,346,5],[345,6,346,10],[347,1,348,5],[347,6,348,10],[312,5,314,5],[312,8,314,8]]}
[]
[null,"数据表格分析工具-使用说明"]
[]
[]
[]
[null,"一、准备工作"]
[]
[]
[null,"开始使用之前的准备工作"]
[null,1,"熟悉数据表的基本规则，如下描述"]
[]
[null,2,"根据业务系统，定义出状态"]
[]
[null,3,"根据业务系统，定义出触发条件（事件）"]
[]
[null,4,"分析条件与状态之间的关系"]
[]
[null,5,"填写数据表的动作以及次态"]
[]
[]
[]
[]
[null,"二、应用系统的框架图"]
{"$rows_empty":54}
[null,"三、组成说明"]
[]
[]
[null,"状态机类表",{"$nulls":4},"概念（定义）说明",null,null,null,"参数表"]
[]
[]
[]
[{"$nulls":6},"状态","是指当前的所处的状态，常是稳定值。是描述分析对象它在生命周期内的所经历的状态序列。状态的确定是通过对业务的分析，对应的业务中有哪些关键的标识（状态变量），经对处理后能变换成其他的标识（状态变量）。如果没有外部条件的触发，一个状态会一直维持下去。",null,null,null,"函数表"]
[{"$nulls":11},"编号","产品类型","名称","函数","参数","是否线程同步","描述"]
[{"$nulls":11},1,-1,"跳转","Void Go(Int32 currentTableNo)",null,1,"数据表跳转"]
[{"$nulls":11},2,-1,"跳转异步","Void AsynGo(Int32currentTableNo)",null,1,"数据表格跳转异步处理"]
[{"$nulls":11},3,-1,"退出值","Void Exit(Int32 code)",null,1,"退出值返回"]
[]
[]
[]
[]
[{"$nulls":6},"组成","变量","例如：V=1",null,null,"参数配置表"]
[{"$nulls":7},"运算符","例如：V=1",null,null,"字段1","字段2","…"]
[{"$nulls":7},"常量","例如：V=1"]
[{"$nulls":7},"函数","例如：V=子层（子表名称）"]
[null,"类"]
[null,"  状态\n条件","状态1"]
[{"$nulls":6},"动作","条件满足后执行的动作，动作执行完毕后，可以迁移到新的状态，也可以仍旧保持原状态，“动作”是不稳定的，一旦执行完毕就结束，是原子即时的。"]
[null,"条件1","真动作","假动作"]
[null,null,"子结果序列","子结果序列"]
[null,null,"次态","次态",{"$nulls":7},"变量表"]
[{"$nulls":11},"产品名称","产品编号","类型名称","名称","事件类型","值描述","数据类型","默认值"]
[{"$nulls":6},"组成","变量","例如：V=1"]
[{"$nulls":7},"运算符","例如：V=1"]
[null,1,"子结果序列对应的语句",{"$nulls":4},"常量","例如：V=1"]
[null,2,{"$nulls":5},"函数","例如：子层（子类名称）"]
[null,"…"]
[{"$nulls":11},"常量表"]
[{"$nulls":6},"子结果序列","子层返回结果对应的序号；如果序号重复时，添加类名称为前缀。",null,null,null,"名称","数据类型","默认值"]
[]
[{"$nulls":6},"组成","数值\n（1-255）","例如：1,2,3，…\n或者：对象1.1,对象1.2,…"]
[]
[]
[{"$nulls":6},"子结果的处理语句","由子层返回的条件数据后对应的处理说明",null,null,null,"xxx(产品声明表)"]
[{"$nulls":11},"类型编号"]
[{"$nulls":6},"组成","逻辑语句","例如：D=1；异常处理（）",null,null,"类型名称"]
[{"$nulls":11},"父类型"]
[{"$nulls":11},"字段属性"]
[{"$nulls":6},"次态","条件满足后要迁往的新状态。“次态”是相对于“状态”而言的，“次态”一旦被激活，就转变成新的“状态”了。",null,null,null,"字段名称","字段类型"]
[]
[]
[]
[{"$nulls":6},"组成","状态","例如：V=1"]
[{"$nulls":11},"工程配置表",null,null,null,"compileConfigure"]
[{"$nulls":11},"类型","表名称","参数表分类",null,"名称","描述"]
[{"$nulls":6},"条件","条件又称为“事件”，常是瞬态值。根据各状态之间的条件依赖关系定义出条件。",null,null,null,"函数表",{"$f":"U97","v":0},null,null,"EncryptionType",0]
[{"$nulls":11},"常量表",{"$f":"AC97","v":0},null,null,"VirtualMachineType",1]
[{"$nulls":11},"变量表",{"$f":"L97","v":0},null,null,"MakeFiledll","GABFMakeFile.dll"]
[{"$nulls":11},"产品声明表",{"$f":"L112","v":0},null,null,"SemanticAnalyzerDll"]
[{"$nulls":11},"数据表",{"$f":"L44","v":0},null,null,"SemanticAnalyzer","ConstSemanticAnalyzer, VariableSemanticAnalyzer, FunctionSemanticAnalyzer"]
[{"$nulls":6},"组成","变量","例如：V=1",null,null,"参数表",{"$f":"L81","v":0},null,null,"CompilerVersion",2]
[{"$nulls":7},"运算符","例如：V=1"]
[{"$nulls":7},"常量","例如：V=1"]
[{"$nulls":6},"分类",1,"外部系统的中断触发条件"]
[]
[{"$nulls":7},2,"当前表的赋值操作导致的条件触发"]
[]
[]
[]
[null,"例如："]
[]
[null,null,"家庭设备控制"]
[null,null,"  状态\n条件","场景控制=关闭"]
[]
[null,null,"场景打开","子层（卧室控制）"]
[null,null,null,"1，2，…"]
[null,null,null,"设备控制=关闭"]
[null,null,1,"异常处理"]
[null,null,2,"设置成功"]
[]
[]
[]
[null,null,"卧室控制"]
[null,null,"  状态\n条件","当前控制=正常"]
[]
[null,null,"卧室有人","打开卧室灯;灯1=打开"]
[]
[]
[null,null,"灯1=打开"]
[]
[]
[null,null,"异常","退出值（1）"]
[]
[null,null,null,"S0"]
[null,null,"设置完成","退出值（2）"]
[]
[null,null,null,"S0"]
[]
[]
[]
[]
[]
[]
[null,"四、运行原理（状态机）"]
{"$rows_empty":20}
[null,"五、表之间的关系说明"]
[]
[]
[]
[]
[null,null,"顶层对象1"]
[null,null,"  状态\n条件","当前状态=顶层"]
[]
[null,null,"进入子层","子层（子层对象1）",null,null,"进入","进入的实现是通过函数的封装实现，函数的语言形式：\nVoid 子层(表名)"]
[null,null,null,"子结果"]
[null,null,null,"次态"]
[null,null,1,"异常处理(1)"]
[null,null,"…",null,null,null,"组成","进入函数","例如：\nGo（子层对象）或者\n子层（子层对象）",null,null,"顶层与子层表之间的跳转变化说明"]
[{"$nulls":11},"进入子表","切换到子表：\n主表进入等待；\n子表进入执行；"]
[]
[null,null,"子层对象1"]
[null,null,"  状态\n条件","当前控制=正常"]
[{"$nulls":6},"退出值","退出值的实现是通过函数的封装实现，函数的语言形式：\nVoid 退出值(值)",null,null,null,"退出子表","切回到主表(递归)：\n主表进入执行；\n子表进入退出；"]
[null,null,"异常","退出值（1）"]
[]
[null,null,null,"S0"]
[{"$nulls":6},"组成","退出值函数","例如：\nExit（值）或者\n退出值（值）"]
[]
[]
[]
[]
[null,"执行栈的变化："]
{"$rows_empty":16}
[null,"例如："]
[]
[]
[]
[null,"顶层"]
[{"$nulls":7},"主流程"]
[{"$nulls":7},"  状态\n条件",null,"流程=3"]
[]
[{"$nulls":7},"进入流程3",null,"子层(流程3)"]
[{"$nulls":9},"对象3.1"]
[]
[{"$nulls":7},"进入流程2","子层(流程2)"]
[{"$nulls":8},"对象2.1"]
[]
[{"$nulls":7},"对象2.1","对象2的返回值的辑语句"]
[{"$nulls":7},"对象3.1","对象3的返回值的语句"]
[null,"子层1"]
[]
[]
[null,null,null,"流程2",{"$nulls":7},"流程3"]
[null,null,null,"  状态\n条件",null,"流程=4",{"$nulls":5},"   状态\n条件","正常"]
[]
[null,null,null,"进入流程4",null,"子层(流程4)"]
[{"$nulls":5},1]
[]
[null,null,null,"流程结束",null,"退出值(1)",{"$nulls":5},"流程结束","退出值（1）"]
[]
[]
[null,null,null,1,"对象4的返回值的语句"]
[]
[null,"子层2"]
[]
[{"$nulls":7},"流程4"]
[{"$nulls":7},"   状态\n条件","流程=5"]
[]
[]
[]
[]
[{"$nulls":7},"进入流程5","子层(流程5)"]
[{"$nulls":8},1]
[]
[{"$nulls":7},1,"对象5的返回值的处理语句"]
[]
[null,"…"]
[{"$nulls":8},"流程5"]
[{"$nulls":8},"     状态\n条件","正常"]
[]
[{"$nulls":8},"流程结束","退出值（1）"]
[]
[{"$nulls":9},"子层(...)"]
[]
[]
[]
[]
[]
[]
[null,"六、业务分析过程的指导"]
[]
[]
[null,"1.顶层表\n根据业务功能定义出主要的业务进行填写堆砌。",null,null,null,"2.子层表集合\n分析初表，进行解耦，拆分成多个子表。",{"$nulls":5},"3.函数抽象、参数表设计\n对子表集进行功能函数的抽象，参数表的设计。"]
[]
[]
[null,"表1",null,null,null,"表1",null,null,"表2",null,null,"函数表"]
[null,"  状态\n条件","S1","…",null,"   状态\n条件","…",null,"     状态\n条件","…",null,"编号","名称","函数","参数","描述"]
[{"$nulls":11},1,"跳转","Void Go(String name)",null,"数据表跳转"]
[null,"E1","动作",null,null,"…","动作",null,"…","动作"]
[null,null,"子结果",null,null,null,"子结果",null,null,"子结果"]
[null,null,"次态",null,null,null,"次态",null,null,"次态"]
[null,"…"]
[]
[{"$nulls":5},"表3",null,null,"表4"]
[{"$nulls":5},"   状态\n条件","…",null,"     状态\n条件","…",null,"参数配置表"]
[{"$nulls":11},"字段1","字段2","…"]
[{"$nulls":5},"…","动作",null,"…","动作"]
[{"$nulls":6},"子结果",null,null,"子结果"]
[{"$nulls":6},"次态",null,null,"次态"]
[]
[]
[]
[]
[]
[]
[null,"4.迭代初表\n根据分析出的函数和参数表，重新迭代。",{"$nulls":5},"5.退出迭代\n状态机表、函数表、参数表三者达到了合理的平衡。"]
{"$rows_empty":18}
[null,"七、优势对比"]
[]
[]
[null,"普通的有限状态机（FSM）",{"$nulls":4},"数据表格分析工具"]
[]
[null,"状态逻辑的重用性低（状态的逻辑已经是在程序内部固定，并给一个唯一的状态编号）",{"$nulls":4},"通过语言描述状态的逻辑，灵活方便，可复用，可修改"]
[]
[null,"新增状态的维护难度大",{"$nulls":4},"通过合理的引导方式，简化了新增状态的上下关联操作"]
[]
[null,"状态的数量大，导致状态机非常复杂",{"$nulls":4},"通过状态机的子表分割，保证业务的模块化，保证了状态机的灵活简单"]
[]
[null,"一旦条件不满足，就会卡在当前状态（整个状态机卡住）",{"$nulls":4},"状态的描述是通过语言逻辑描述，可以灵活地定义当前状态的判断是否处于一种阻塞的方式"]
[]
[]
[]
[]
[]
[null,"八、附录"]
[]
[]
[null,"1.表格分析工具数据转换成用户语言2.0的规则说明"]
[]
[]
[null,"* 针对有跳转的时候，把跳转函数替换为跳转变量,比如varGo1=0，然后在子表的S1列，所有动作不为空的，相应条件都加上varGo1=0\n* 针对有退出值的情况。如果有退出值，比如退出值(3)，把序列化后面要执行的语句，与当前退出值的结果合并"]

{"sheet":"工程模板","index":1,"n_rows":151,"n_cols":22,"rows_kept":151,"cut":false,"hidden":false,"merged":[[163,1,164,17],[1,1,2,17],[5,1,6,17],[8,1,10,4],[8,5,10,8],[11,1,13,4],[11,5,13,8],[23,1,24,8],[48,1,49,17],[62,2,63,2],[14,1,16,4],[14,5,16,8],[17,1,19,4],[17,5,19,8],[20,1,22,4],[20,5,22,8],[62,3,63,4],[112,11,112,17],[112,19,112,21],[127,2,127,3],[28,1,29,17],[61,2,61,6],[62,5,63,6],[57,1,58,22],[74,3,74,6],[64,2,66,2],[67,2,69,2],[70,2,72,2],[73,3,73,6],[141,2,141,4],[141,6,141,7],[131,2,131,3],[96,2,96,4],[112,2,112,9]]}
[]
[null,"数据表格分析工具-工程模板"]
[]
[]
[]
[null,"一、模板功能的使用说明"]
[]
[]
[{"$nulls":5},"自动在当前文档中创建一个工程表格模板"]
[]
[]
[{"$nulls":5},"在工程表格中，可以新建一个语言表"]
[]
[]
[{"$nulls":5},"在工程表格中，可以将语言表选中的区域拆分成一个子表"]
[]
[]
[{"$nulls":5},"在工程表格中，可以将选中的子表内容转变成一个函数"]
[]
[]
[{"$nulls":5},"调用编译器编译当前表格的数据"]
[]
[]
[null,"注意：使用之前需要开启宏的执行。"]
[]
[]
[]
[]
[null,"二、使用流程"]
{"$rows_empty":19}
[null,"三、模板内容"]
{"$rows_empty":8}
[null,"新建工程"]
[]
[]
[]
[null,null,"语言表1"]
[null,null,"  状态\n条件"]
{"$rows_empty":33}
[null,null,"XX参数表"]
[null,null,"字段1","字段2","…"]
{"$rows_empty":14}
[null,null,"变量表",{"$nulls":8},"函数表",{"$nulls":7},"常量表"]
[null,null,"产品名称","产品编号","类型名称","名称","事件类型","值描述","数据类型","默认值",null,"编号","类型名称","名称","函数","参数","是否线程同步","描述",null,"名称","数据类型","默认值"]
[{"$nulls":11},1,-1,"跳转","Void Go(Int32 currentTableNo)",null,1,"数据表跳转"]
[{"$nulls":11},2,-1,"跳转异步","Void AsynGo(Int32 currentTableNo)",null,1,"数据表格跳转异步处理"]
[{"$nulls":11},3,-1,"退出值","Void Exit(Int32 code)",null,1,"退出值返回"]
{"$rows_empty":10}
[null,null,"xxx(产品声明表)"]
[null,null,"类型编号"]
[null,null,"类型名称"]
[null,null,"父类型"]
[null,null,"字段属性"]
[null,null,"字段名称","字段类型"]
{"$rows_empty":8}
[null,null,"工程配置表",null,null,null,"compileConfigure"]
[null,null,"类型","表名称","参数表分类",null,"名称","描述"]
[null,null,"函数表",{"$f":"L113","v":"函数表"},null,null,"EncryptionType",0]
[null,null,"常量表",{"$f":"T113","v":"常量表"},null,null,"VirtualMachineType",1]
[null,null,"变量表",{"$f":"C113","v":"变量表"},null,null,"MakeFiledll","GABFMakeFile.dll"]
[null,null,"产品声明表",{"$f":"C128","v":"xxx(产品声明表)"},null,null,"SemanticAnalyzerDll"]
[null,null,"数据表",{"$f":"C62","v":"语言表1"},null,null,"SemanticAnalyzer","ConstSemanticAnalyzer, VariableSemanticAnalyzer, FunctionSemanticAnalyzer"]
[null,null,"参数表",{"$f":"C97","v":"XX参数表"},"应用虚拟机",null,"CompilerVersion",2]
[null,null,"参数表",{"$f":"G142","v":"compileConfigure"},"编译器内核",null,"AppName","ComputerKey"]
[{"$nulls":6},"LogicStorageFormat",1]