# 定义

> 一个流程的结构，只有流程本身变了才动它：通道、元数据、自动化、产量和打印机五个屏幕，以及五者共用的那一副样子。

**定义**是 [Process](process) 页面上一个模型四个分组里的头一个：流程的结构，只有流程本身变了它才变。它装着五行，按搭一张试验台的先后排列：**通道**（这个模型测什么、命令什么）、**元数据**（一次运行盖下什么）、**自动化**（没有人按按钮时什么会带动一台工位）、**产量**（它产出什么）和**打印机**（它的产出从哪里出来）。每一个屏幕都一次显示这个模型的全部单元，因此一张有四台工位的试验台，就在能把这四台放在一起比较的地方配置。

这个分组对查看模型、运行流程和管理 Process 画出来；处在编辑配方与判定层级、没有管理权限的角色，拿到的是收缩到设定那一支的每一个模型，看不到它。这里只有管理 Process 才能编辑任何东西。

## 这个分组里有什么 {#in-this-group}

| 屏幕 | 配置什么 |
| --- | --- |
| [通道](process-channels) | 这个模型的每一件产物所引用的那些抽象通道，以及每一个单元在它们背后绑定的信号源和别名。 |
| [元数据](process-metadata) | 一次运行在开始时采集的字段目录、那些流水号标识，以及每一个单元的代号和计数器状态。 |
| [自动化](process-automation) | 模型跟随的外部停止、每一个单元观测的那个信号，以及朝着 PLC 那一侧、负责选择和驱动流程的自动化。 |
| [产量](process-productivity) | 那些数字所依据的滚动周期，以及产出被归入的那些命名数量。 |
| [打印机](process-printers) | 每一个单元打印所经过的四个打印队列（标签或报告，开始时或完成时）。 |

## 分组页面 {#the-group-page}

选中**定义**会打开它的页面：“这个过程的结构：它在哪些工位上运行、测量什么、一次运行记录盖上什么、什么让工位自己动起来、它产出什么，以及在哪里打印。过程变了，它才变。”一张**内容**卡片，“这个分组里有什么。点一项即可直接跳过去。”，里面是五个方块：通道和元数据带着它们的计数，自动化、产量和打印机只写名字。这一页没有命令栏，也不编辑任何东西。

单元本身不是这个分组的一行：它们声明在模型自己那一页上（见[单元](process-units)），下面每一个屏幕都通过它的**管理单元**按钮链到那里。

## 五个屏幕共用的那一副样子 {#the-one-shape-of-the-five-screens}

每一个定义屏幕都是左边两个方框区域加右边一栏设置。

| 部分 | 装着什么 |
| --- | --- |
| **模型定义**（上面那一块） | 模型自己的声明，做成表格：那些通道、元数据目录、外部停止那一行、滚动周期字段下面那些命名数量、四个打印机槽位。它的标题栏带着说明这张表装什么的那一行，以及作用于这张表的动作：让它长大的 **+**（**通道**、**字段**、**产量项**），在打印机上则是**刷新队列**。 |
| **按单元**（下面那一块） | 这个模型的单元列表，按它们自己的顺序排，每一行都写出这个屏幕对那个单元来说是什么：覆盖情况、代号和计数器、联锁信号和自动化、周期和数量、队列。它的标题栏带着**管理单元**（“模型的单元在这里声明、命名和删除。”），点它打开模型的页面。 |
| **设置**（右边那一栏） | 这个屏幕上被选中的那一行，完整地摆出来。标题写着固定的**设置**二字，下面写出这一行是从哪里来的、又是哪一行：“通道 · Ch1 · 设定值”“元数据 · 序列号”“自动化 · 外部停止”“产量 · 合计”“打印机 · 开始时的标签”，或者“单元 · 单元 1”。 |

整个屏幕上正好有一行被标记。点中上面那张表里的一行会清掉选中的单元；点中一个单元会清掉上面那一行。什么都没选中时，这一栏显示它的提示语，“选中上面的某条通道，或者下面的某个单元，它配置的一切就会在这里打开。”（每个屏幕写出它自己那两半的名字）。下面选中的那个单元是整页的，五个屏幕和模型自己那一页共用它，因此在屏幕之间走动时你仍然站在手上的那张试验台前；在你点一行之前什么都没选中。

两块区域之间的分隔条和那一栏前面的分隔条都可以拖，也都可以用方向键移动（“拖动或用方向键调整大小”），而且每个屏幕在这个窗口的配置里记住它自己的尺寸。每一块区域都在它的标题下面滚动自己的主体，因此一张长表绝不会把另一半也拖着走。

每个屏幕的标题栏都带着它的小药丸：通道数或字段数、单元数，产量和打印机上还有多少个单元自成一体（“全部使用模型的默认设置”“3 个中有 1 个自成一体”）。

## 每个屏幕在行为上共有的东西 {#what-every-screen-shares-in-behaviour}

- **自动保存。**每一个单元格和字段在你提交时就写进模型：下拉框、单选和复选框在改动时写，文本字段在你离开时写。被拒绝的写入会把值放回去，理由落在操作记录条上。
- **选中的那个单元**是整页的，一个模型一个（见[单元](process-units#one-picked-unit-across-the-model)）。
- **只有在要紧的地方，缺答案才穿上警示色**：绑定不全的单元、有流水号字段要把它组合进去却空着的代号、模型在观测停止信号时却没有停止信号的单元、没有信号源的数量、模型的某条命令要从中打印却空着的队列。
- **安全重命名。**属于地址的名称（一条通道、一个元数据字段）通过和模型、单元同一次协调的重命名来提交：字段下面那一行预告有多少处位置读这个地址，提交时把它们改写，或者在撞名时拒绝。

## 权限和锁 {#permissions-and-locks}

| 情形 | 会怎样 |
| --- | --- |
| 角色没有管理 Process | 屏幕照样画出来，但是只读；创建动作不画出来；带着自己那道门槛的卡片会说明（“编辑自动化需要‘管理 Process’权限。”“更改打印队列需要‘管理 Process’权限，而且工作站必须可编辑。”）。 |
| 任何模型的某个单元被一次运行操作占着 | 整页在“工程已锁定”提示条下面被按住不动；那些 **+** 动作变灰并写着“有单元在运行时配置是锁住的。”。 |
| 运行时已停止 | 每一次写入都以“运行时已停止”被拒绝。 |
| 选中的单元正忙，或者联锁处于锁定状态 | 它的联锁信号源和极性，以及模型的外部停止开关和默认信号，在上面那道边界之上仍然是钉死的。 |

## 这个分组不做的事 {#what-this-group-does-not-do}

- 它不添加也不移除单元：那是模型页面上的单元表格。
- 它不组合任何一次运行：数据记录、配方、判定、事件条目、动作和流程都在[设定](process-setup)里。
- 它什么也不画：操作面板和仪表画面在[可视化](process-visualization)里。
- 它什么也不启动：一次运行是在[操作](process-operate)下面启动的。
