| 代码段 | CPN Tools help |
| 为变迁编写代码 | CPN ML |
每一个变迁都可以与一个包含了ML代码的代码段连接。这些代码段将在它们的所属变迁触发时被执行.
变迁的代码段由添加/编辑注入式(Add/edit inscriptions)来创建.
在代码段还没有添加之前,初始的表述的文本是"ACTION":
代码段可以使用CPN变量CPN variables,也可以约束那些尚未绑定在别处的输出弧上的CPN变量.
Each code segment may contain:
代码段可以包括:
输入标识是一个CPN变量的元组,放在关键词"input"之后.输入标识列出了可以在代码行为中使用的CPN变量.代码行为可以使用这些CPN变量的值,但是不能改变它们的值.
在输入标识中列出的CPN变量可以在代码行为中被使用,即使你在声明节点上声明了同样名字的ML标识符.
如果输入子句为空,则意味着,没有CPN变量可以在代码行为中被使用.
输入标识是一个CPN变量的列表,放在关键词"output"之后.输出标识列出了那些将作为代码行为执行结果而改变的CPN变量.
输出标识必须是一个CPN变量,或者没有重复的变量列表.
如果输出子句为空,则意味着,没有CPN变量将被计算.
一个代码行为是一个ML表达式,跟在关键词"action"之后.代码行为不能包含颜色集的声明,CPN的变量或者参变量.但是,它可以应用用户定义或预定义的常量,操作和函数.另外,可以用"let-in-end"来定义本地使用的新函数和常量.
作为包括有在输入标识中列出的CPN变量的环境中的一个本地声明,代码行为将被执行.这样子就保证了代码行为不能直接改变任何一个CPN的变量,而只能改变它们的本地拷贝.
当代码行为被执行之后,执行的结果将约束输出标识中的CPN变量.在一个含有输入标识变量的环境中求职的代码行为必须要得出一个与输出标识类型相同的结果.如果输出标识没有给定,默认它的类型为整数型.
在这个例子中,输入标识中有一个变量(m),输出标识中有两个变量(n,b).
当变迁"Even"被给定的标识触发时,CPN变量将变为:
m 变为 3,
n 变为 4,
b 变为 false.