Article View: cn.bbs.comp.xml
Article #206ΪǶ��ʽ�豸������ִ�еĴ���ģ��(ת��)
From: <Test/>
Date: Sun, 18 Apr 2010 13:49
Date: Sun, 18 Apr 2010 13:49
635 lines
44256 bytes
44256 bytes
��飺 Ƕ��ʽϵͳ�ܹ�ʦ�������ٵ���ȫ�ԡ��ɿ��Ժ�����ɷ����Է�����������������ĸ��������������η��Ȼ��ͨ��ʹ�õĹ��ߣ�һ�����������˴��ģ����������Ҳ��ܹ�����ϸ�豸���������ϵͳ��ͼ֮��ƽ����ɡ�����ѧϰ���ʹ�ÿ�Դ�������� DITA �� PHP�����ߣ����� blob ��ʾ��������һ��ϵͳ����Ļ�������������Щ����
Darwin ��Ϣ���ͻ���ϵ�ṹ��Darwin Information Typing Architecture��DITA��Ϊ��ơ���д������ͳ�������ӡˢ�� Web �ϵĺܶ�����Ϣ������һ�� XML ��ϵ�ṹ�����ṩһ�ַ�ʽ����������֯���κ������֪ʶ��֯��һ��һ�µġ�������ʶ������������Ľṹ�С���������֯��֪ʶ�����ǻ�е��װ��˵�����ͻ��ĸ������̻�ѧ�ܼ����䷽�ȡ�
�������
DITA��Darwin ��Ϣ���ͻ���ϵ�ṹ
DOM���ĵ�����ģ��
JAUS������ϵͳ������ϵ�ṹ
URI��ͳһ��Դ��ʶ��
XML������չ�������
DITA ��һ�� XML ���켯�ϣ���Щ��������ֿ����ڹ���ʹ洢֪ʶ������Ϊ�ı����ķ�ʽ����Щ����������⣨topic���� ��һ����Ϣ��Ԫ������Ϣ����ģ����ҿ��Իش����⣩����������Щ��������һϵ������֮�䵼���� DITA ��ͼ��map�� ���ĵ�������֮������������
�Ը��concept������Ϊ��ʹ�ø�������Ϊ�����ڲ�Ʒ�����̵���Ҫ��Ϣ�ṩ����֪ʶ���嵥 1 չʾ��������һ�������еĸ������⡣
�嵥 1. �����еĸ�������
<concept id="bearing">
<title>Bearings</title>
<conbody>
<p>Bearings are a mechanism to minimize friction and
loss of rotational energy</p>
<example>
<p>Common bearings mechanisms</p>
<ul>
<li>Ball bearing</li>
<li>Roller bearing</li>
<li>Needle bearing</li>
</ul>
</example>
<p>Fully mechanical bearings require lubrication</p>
<example>
<p>Common lubricants</p>
<ul>
<li>oil</li>
<li>lithium grease</li>
</ul>
</example>
</conbody>
</concept>
�кü���������ã����DZ����и���Ȥ��������task�����⡣
���� DITA ��������
DITA ������������������һ����̣���ʵ���ض���Ŀ�ꡣ���仰˵����ش� ������ô�������� ���͵����⡣��Ĺؼ����У�
<prereq>���ṩ��ʼһ������������Ϣ��
<context>���ṩִ��������ı�����Ϣ��
<steps>�����һ���������ִ�е��ض���������������һ����������� <cmd>��Ԫ�أ�����������ɵľ����������
<result>�������Ԥ�ڽ��
<example>��һ����ѡ�����ӣ���ʾ�����ʹ�á�
<postreq>���ɹ���ɸ�����֮�����ִ�е�һЩ��ѡ������
�嵥 2. ʾ����������
<task id='add_auto_oil'>
<title>Adding oil to an auto engine </title>
<taskbody>
<prereq>Oil container with optional opener</prereq>
<context>Dashboard oil light on or set amount of
mileage elapsed</context>
<steps>
<step id='open_hood'>
<cmd>Locate 'Open hood' lever.</cmd>
<cmd>Operate 'Open hood' lever.</cmd>
<cmd>Raise and retain hood in open position.</cmd>
</step>
<step id='open_oil_reserve'>
<cmd>Locate oil reserve cap.</cmd>
<cmd>Twist open oil reserve cap over
oil reserve opening
</cmd>
</step>
<step id='fill_oil_reserve'>
<cmd>Locate oil container</cmd>
<cmd>Open oil container</cmd>
<cmd>Place oil container spout over oil
reserve opening
</cmd>
<cmd>Remove oil container when empty</cmd>
</step>
<step id='close_oil_reserve'>
<cmd>Locate oil reserve cap.</cmd>
<cmd>Twist close oil reserve cap over oil
reserve opening
</cmd>
</step>
<step id='close_hood'>
<cmd>Close and lock hood</cmd>
</step>
</steps>
<result>Dashboard light off or engine running quietly</result>
</taskbody>
</task>
�ڱ����У����ı�������һ��ϵͳ��Ȼ��ת����һ�����õĿ�ִ�еı?���÷����Ĺؼ�����ʹ���˹�ϵ��ݿ��е� blob ��ʾ����
���� blob
�ڹ�ϵ��ݿ��У�һ�� blob ��һ�������ƴ�����Դ��пɱ���������ݣ��������ֵ�����������ƻ���˵�ֽڡ��ַ� �� ʵ�������κ��ֽ����У�ֵ�����Ǵ� 0x00 �� 0xFF��
���磬������һ�� blob �д洢һ��ͼ�����һ�����������������У�����Сͨ�������� 65,536 �ֽڡ������Դ�һ����ַ�洢���ʵ����к���ʱ�ᱻ�ضϡ��ڱ����У����� PHP �� DITA ����� blob �ģ�������ӳ�䵽һ�ֶ����Ƹ�ʽ��
PHP ������
ǰ���ᵽ��DITA �� XML ������ɣ�����һ�������� DITA �������⡣��Ҫ����һ����ˮ���Ĺ��ߣ�������������ṹ������ PHP ���� DOM �����ࡣ������ת����һ�����õĽṹ��ͨ�������� PHP �ű���ǿ������ DOM ��������ɵġ�
�ۺ�
��Ȼ�ؼ�Ԫ�ض��߱��ˣ����ھý��ܰ�һ���ۺ������ķ����ˡ���Ҫ��˵��DITA ������������ݱ�����Ϊһ�ּ�����ʶ��Ľṹ�������䷽���죨recipe construct����Ȼ��ʹ��һ���䷽����֧�ֵ���ݿ��һ�������������䷽����ת���ɿ�ִ�еĸ�ʽ��
��ǿ DITA ��������
��ǿ����ĵ�һ�����Ǵ��� DITA ��������Ԫ�ص����ݡ��ص� �嵥 2��Ԫ�ص�����ʹ�������ı���ʽ�����뽫�ø�ʽ��Ϊ�ṹ���ġ�������ʶ��ĸ�ʽ��һ�������μ� �嵥 3��
�嵥 3. �����ɸ�ʽ���Ϊ�ṹ����ʽ
<task>
<title>[resourceURI]</title>
<taskbody>
<context>[cont_iteration_yes_no]</context>
<prereq> [resource_list]</prereq>
<steps>
<step id=��[stepID]��>
<cmd>[precondition]|[action_list]</cmd>
................................
<cmd>[precondition]|[action_list]</cmd>
</step>
....................................
<step id=��[stepID]��>
<cmd>[precondition]|[action_list]</cmd>
................................
<cmd>[precondition]|[action_list]</cmd>
</step>
</steps>
<result>[resourceURI]</result>
</taskbody>
</task>
[resource_list] = [resourceURI],[qty] {| [resource_list]}
[precondition] = [action]([parm_list])
[condition] = [action]([parm_list])
[action_list] = [condition]->[action]([parm_list]) {; [action_list]}
[parm_list] = [parm]{,[parm_list]}
[parm] = [resourceURI] or [stepID] or [literal]
[literal] = text or number
[resourceURI] = URN
[stepID] = label
[action] = label
[qty] = number
[cont_iteration_yes_no] = iterate or oneshot
iterate = repeat the steps in the sequence they appear continually
oneshot = repeat the steps in the sequence they appear only once
{...} = optional element(s)
ʵ���ϣ������еIJ���ʹ�� <prereq> Ԫ�����г�����Դ����������ָ����˳��ִ�С�<result> ָ�����Դ������ǣ�����������Ľ��� <context> �������ִ�еĴ����йأ�һ�λ��߲���ִ�У���
ʹ�� <cmd> Ԫ���е� precondition �������⣬��ִ����������ಿ��֮ǰ���Ƿ��Ѿ��߱�ij�������������
if [precondition] is true then perform [action_list]
���[action_list] ֻ��һ�����ṹ��������Щ�����ڷ�ţ�>����ߵIJ�������һ�� Boolean ֵ��true �� false�������ò������� true ֵ����ô���ڷ�ţ�>���ұߵIJ�����ִ�С�
����˵ �嵥 2 �����������һ���֣���ת������ �嵥 3 һ�µĸ�ʽʱ���ͱ���� �嵥 4 �еĴ��롣
�嵥 4. �����ң�ؿ��ص��䷽����
<task>
<title>urn:auto:oil:access</title>
<taskbody>
<context>oneshot</context>
<prereq>
urn:robot:sense:image, 1 |
urn:robot:arm, 2 |
urn:auto:dashboard:hood_lever, 1 |
urn:auto:engine:hood, 1 |
urn:auto:engine:hood_lock, 1 |
urn:auto:engine:oil_reserve_cap, 1 |
urn:auto:engine:oil_reserve_intake, 1 |
urn:robot:storage_pocket, 1
</prereq>
<steps>
<step id='open_hood'>
<cmd>
always() | always() ->
locate(urn:robot:sense:image,
urn:auto:dashboard:hood_lever)
</cmd>
<cmd>
always() | always() ->
activate(urn:robot:arm,
urn:auto:dashboard:hood_lever);
locate(urn:robot:sense:image,
urn:auto:engine:hood);
activate(urn:robot:arm,urn:auto:engine:hood)
</cmd>
<cmd>
fault_detected(urn:robot:sense:image) |
always() ->
report(urn:robot:sense:image);
always() -> shutdown(urn:robot);
</cmd>
<cmd>
fault_detected(urn:robot:arm) |
status(urn:auto:engine:hood, "closed") ->
report(urn:robot:arm);
always() -> shutdown(urn:robot);
</cmd>
<cmd>
fault_detected(urn:robot:arm)|always() ->
lock(urn:robot:arm)
</cmd>
</step>
</steps>
<result>urn:auto:engine:oil_reserve</result>
</taskbody>
</task>
����
always() = ���Ƿ���һ��ֵ True��
locate(resourceURI, resourceURI) = ʹ�õ�һ����Դ��λ�ڶ�����Դ��
activate(resourceURI, resourceURI) = ʹ�õ�һ����Դ����ڶ�����Դ��
fault_detected(resourceURI) = ���һ����Դ�м������������� True��
report(resourceURI) = �㲥һ����Ϣ��ָ����Դ��״̬��
shutdown(resourceURI) = �ر���Դ��
lock(resourceURI) = ����Դ�IJ��������ڵ�ǰ״̬��
move(resourceURI, resourceURI, resource URI) = ʹ�õ�һ����Դ URI ���ڶ�����Դ URI �ƶ����������Դ URI����������
turn(resourceURI, direction, final_state) = ����һ������˳ʱ�����ʱ�룩��ת��Դ��ֱ����������״̬����رգ���
�嵥 4 �������һ���Զ��豸�������ˣ�������ִ�� auto oil filling ����IJ������г��ĺ�����Щ��������һ��֧�ֵ���ݿ��У����ǽ�����ת���ɿ�ִ�б?ʱʹ�õ��Ǹ���ݿ⡣
�ô���չʾ��һ������������������ǣ�open_hood��������ǣ�open_oil_reserve������һ����������ǣ��е������ǣ�
ʹ�û����˵�ͼ�����������ض�λ���Ƹˣ��Դ�����ǣ�locate ����
ʹ�û����˵��ֱ�����������Ƹˣ�activate ����Ȼ��ʹ��ͼ������λ�������ڷ�������ϵ�λ�ã�locate ����
ʹ�û������ֱ۴�����ǡ�
�����������������ͼ�������ֱ۵Ĵ�����Ϊ����������¶��ᱨ�����report ��������ֱ۳����������ֱ۱���е�����ڵ�ǰ״̬��lock �����ڸ�֪��������ʲô����֮ǰ������ʹ�� fault_detected ������ȷ���������Ƿ��ڳ���״̬��
����ʹ�� DITA �������������ı�汾�������κ�Ҳ�漰żȻ���أ������쳣���лָ�����ѭ����̡�����ı�汾Ҳ���䷽����Ļ�
����ȥ��һ�� �嵥 4������������͵Ĺ��������Ĺ�̣�������ǡ�������ǡ����͡��ر�����ǡ��رշ�����ǣ�������������ÿһ�����������쳣����Ĺ�̡�
��Ҫ��˵������һ���䷽���� �� ��һ����Ԫ�����ݿɱ�����ɿ�ִ�б?�� DITA �������⡣�����䷽���죬��Ҫע��һЩ�������飺
�䷽����������첽��ʽ������һ���䷽���� �� ����˵��һ���䷽��������ڵ�����ִ���߳���������һ���䷽�����ִ�С�
��ˣ�����䷽�������������һ���������С�
�����䷽������ͨ�� Uniform Resource Name (URN) Ѱַ�����õģ�����һ���䷽�������Զ�̵�����һ���䷽���� �� ����˵�������õ��䷽������ͨ������Ѱַ�ġ�
��ˣ��䷽�����ִ�пռ�����漰�豸���磬��������Ϊ�������ϵ��첽������в�����
���䷽Ϊ���ĵ����
�䷽�����ǽ���������ת�������ڸ߶ˣ����磬32λ�������������ж������Ŀ�ִ�б?��̵Ļ��䷽����������ı��༭������ר�����ڿ����䷽����Ĺ�����������
�䷽���������ڲ��ף����������õ��˸���ԭ���ϣ����в�����밴һ�µ�˳��ִ�У���������װ����ɡ��ڱ����У��䷽����ʹ��һ��ȷ������Դ�Ͳ������ﵽ��Ҫ�Ľ�� �� ����ػ����е�һ����Ʒ���ġ�
��ʼ�䷽������ƹ�̣����г�һ�齫�Լ��ֽ�Ϊ <task> ����ĸ߶˲��������磬һ�����ں決������������������������������������Ϳ�������ͨ�������� �嵥 4 ���ݵ� <task> ���죬ָ�����ԵĻ�ϡ����Ⱥ�ͿĨװ�ò��� �� �Լ���ص�װ����ϡ�
���� �嵥 4 �������ģ��г��ĺ���洢���䷽���쿪����ݿ��С�����ݿ����һ���䷽�����������������䷽���쿪�������ĺ��ġ����ǣ����ȱ����˽��ѱ����䷽�����Ŀ�껷����
RecipeJAUS
����ϵͳ������ϵ�ṹ��Joint Architecture for Autonomous Systems��JAUS��������������U.S. Department of Defense��������һ������Ŀ����������ϵͳ����Ҫ���������֮���ṩһ��һ�µ���Ϣ���ݿ�ܡ����� OpenJAUS���μ� �ο����� �е����ӣ��˽�����Ϣ����������JAUS �Ѿ��ݱ��һ�ֿ�Դ������
JAUS ���ڸ��䷽�����йأ����Զ�����һ������ṹ�����������ĵͼ����������еIJ�������һ��һЩ JAUS �����Ѿ����ı����ṩ�䷽�����Ŀ��ƽ̨������ RecipeJAUS������һ����������һ��ִ���̹߳��������ɣ�ǰ�����ڴ����䷽�����������������������ڴ������Ϊ������ִ�е��䷽����Ԫ�ء����ͨ��һ������������ص�֧����ݿ⣬�䷽����ת����һ�� RecipeJAUS �������С�
�����
�䷽Ϊ���ĵ������recipe-centered software��RCS����ݿ�ͨ���䷽������������ʹ�õĺ���ת������Ӧ�� RecipeJAUS �������У�֧���䷽����ı����̡��嵥 5 �ṩ�� RCS ��ݿ��Ԫ��ݽṹ��
�嵥 5. RCS ��ݿ�Ԫ��ݽṹ
#
# RC support database schema
#
#
DROP DATABASE IF EXISTS RCSDB;
CREATE DATABASE RCSDB;
USE RCSDB;
#
# Source for a recipe using DITA task format
#
# NOTES -
#
# (1) DITARecipeID - resource URI assigned to the recipe
#
CREATE TABLE DITATaskRecipe
(
DITARecipeID VARCHAR(50) NOT NULL,
TaskRecipeBody TEXT,
PRIMARY KEY (DITARecipeID ASC)
};
#
# Compilation of a DITA recipe into RecipeJAUS code
#
# NOTES -
#
# (1) JAUSRecipeID - DITARecipeID + ":" + date-time stamp (YYYYMMDDHHMMSS)
#
CREATE TABLE JAUSRecipe
(
JAUSRecipeID VARCHAR(60) NOT NULL,
DITARecipeID VARCHAR(50) NOT NULL,
JAUSPackage BLOB,
PRIMARY KEY (JAUSRecipeID ASC)
};
#
# Catalog of all possible actions that can be incorporated in a recipe source
# organized by domain and action ID
#
# NOTES -
#
# (1) DomainURI - URI for the domain of this action
# (2) ActionID - label for this action
# (3) ParmList - comma-delimited list of arguments for this action with
# each argument in resourceURI format. Position in
# the list is important since the position index
# is used in the JAUSMapping below
# (4) JAUSMapping - parametrized code for this action with links
# to ParmList entries. These links are in inserted
# as a hex byte in the appropriate parameter position
# of a JAUS opcode. The value of this byte
# is the position index (0x00 - 0xFF) in the ParmList
# above
#
CREATE TABLE ActionCatalog
(
DomainURI VARCHAR(50) NOT NULL,
ActionID VARCHAR(50) NOT NULL,
ParmList TEXT,
JAUSMapping BLOB,
PRIMARY KEY (DomainURI ASC, ActionID ASC)
};
#
# Catalog of all possible resource URIs that can be incorporated in a recipe source
# organized by domain and action ID
#
# NOTES -
#
# (1) DomainURI - URI for the domain of this action
# (2) ResourceID - URI for this parameter type
# (3) Units - measurement units for this resource
# [4] JAUSEncoding - target JAUS reference for this resource
#
CREATE TABLE ResourceCatalog
(
DomainURI VARCHAR(50) NOT NULL,
ResourceID VARCHAR(50) NOT NULL,
Units VARCHAR(22),
JAUSEncoding BLOB,
PRIMARY KEY (DomainURI ASC, ResourceID ASC)
};
DITARecipe �����ڴ洢�䷽����Դ�����죬�� JAUSRecipe �����ڴ洢�䷽�����������Ϣ�����С���ˣ��䷽��������������䷽���켰���ѱ��������һ�ݹ鵵���Ա����û��߽��䷽�������ӳ�䵽һ���������������������䷽���졣
ActionCatalog ���䷽���첽�躯���һ������� RecipeJAUS �������С�����������ض����������磬һ����Ի���������urn:robot����Դ�Ľ��� lock �ĺ�����������Ƶ�����Զ�����������urn:access:door���ĺ�������ͬ��
���Ƶأ�ResourceCatalog ����Ӧ�ó���������ʹ�õ���Դ�� URI����Ҳ�� RecipeJAUS ƽ̨�ṩ����Դ��һ���ڲ���ַ���ã�JAUSEncoding���������ö�Ӧ������ RecipeJAUS ƽ̨��Ӳ��ƽ̨�з��ʸ���Դ���������ӡ�
RCS ������
RCS ��������һ�� PHP �ű��������� DOM �༰�䷽���������䷽�����������ͼ��� RecipeJAUS ��Ϣ�����С��ýű������ṩ���μ� ���أ���������ʹ�� PHP �����н��� (CLI) ���е��ã�������ʾ��
php RCC.php <RC>.xml
<RC> �ǰ��䷽�����������Դ�ļ�����ơ����� RecipeJAUS ������Ϣ�����е�����ļ���Ϊһ�� JAUSRecipe ���¼�洢�� RCS ��ݿ��У��ü�¼�ļ�ֵ�ڱ������ʱ��ʾ�ڿ���̨�С�
RCS ��������һ��ԭ�Ͱ汾����ͨ�� RCS ��ݿ�� ResourceCatalog �� ActionCatalog ��ת���� RecipeJAUS ����֮ǰ������ RecipeJAUS ���С���ǰ�ڱ������һ����������ļ���
һ�������䷽����Ӧ�ó���
Ϊ����ʾ������䷽����ת����̣�����һ������Ӧ�ó��������Ϊһ���䷽�����Լ�ת���� RecipeJAUS ��������֮ǰ���м������
�嵥 6 �ṩ��һ�������Զ��������������䷽���죩���������ǵ�ǰ�¶ȡ���ǰʪ�Ⱥ͵�ǰ���ڣ��Ա�Ϊ����ӵ�����ȷ�����Ȼ�յ����á�
�嵥 6. �����Զ��������䷽����
<task>
<title>urn:hvac:thermo>/title>
<taskbody>
<context>iterate</context>
<prereq>
urn:hvac:settings_lib,1|
urn:hvac:season_setting,1|
urn:hvac:tod_setting,1|
urn:hvac:temp_setting,1|
urn:hvac:hum_setting,1|
urn:hvac:temp_reading,1|
urn:hvac:hum_reading,1|
urn:hvac:h_trigger,1|
urn:hvac:v_trigger,1|urn:hvac:ac_trigger,1
</prereq>
<steps>
<step id='S0'>
<cmd>always() | always()->
get_setting(urn:hvac:settings_lib,
urn:hvac:tod_setting,
urn:hvac:season_setting)
</cmd>
<cmd> setting_set(urn:hvac:settings_lib,
urn:hvac:season_setting,urn:hvac:tod_setting) |
always()->
set_setting(urn:hvac:settings_lib,
urn:hvac:temp_setting,
urn:hvac:hum_setting)
</cmd>
</step>
<step id='S1'>
<cmd>
step_OK("S0") | always() ->
get_reading(urn:hvac:temp_reading,
urn:hvac:hum_reading)
</cmd>
<cmd>
setting_at(urn:hvac:season_setting,"Fall") |
reading(urn:hvac:hum_reading,A,
urn:hvac:hum_setting)->
set_trigger(urn:hvac:v_trigger);
reading(urn:hvac:hum_reading,B,
urn:hvac:hum_setting)->
reset_trigger(urn:hvac:v_trigger);
reading(urn:hvac:temp_reading,B,
urn:hvac:temp_setting)->
set_trigger(urn:hvac:h_trigger);
</cmd>
</step>
<step id='S2'>
<cmd>
step_OK("S0") | always()->
get_reading(urn:hvac:temp_reading,
urn:hvac:hum_reading)
</cmd>
<cmd>
setting_at(urn:hvac:season_setting,"Winter") |
reading(urn:hvac:hum_reading,A,
urn:hvac:hum_setting)->
set_trigger(urn:hvac:v_trigger);
reading(urn:hvac:hum_reading,B,
urn:hvac:hum_setting)->
reset_trigger(urn:hvac:v_trigger);
reading(urn:hvac:temp_reading,B,
urn:hvac:temp_setting)->
set_trigger(urn:hvac:h_trigger);
</cmd>
</step>
<step id='S3'>
<cmd>step_OK("S0") | always()->
get_reading(urn:hvac:temp_reading,urn:hvac:hum_reading)
</cmd>
<cmd>
setting_at(urn:hvac:season_setting,"Spring") |
reading(urn:hvac:hum_reading,A,
urn:hvac:hum_setting)->
set_trigger(urn:hvac:v_trigger);
reading(urn:hvac:hum_reading,B,
urn:hvac:hum_setting)->
reset_trigger(urn:hvac:v_trigger);
reading(urn:hvac:temp_reading,A,
urn:hvac:temp_setting)->
set_trigger(urn:hvac:v_trigger);
reading(urn:hvac:temp_reading,B,
urn:hvac:temp_setting)->
reset_trigger(urn:hvac:v_trigger)
</cmd>
</step>
<step id='S4'>
<cmd>
step_OK("S0") | always()->
get_reading(urn:hvac:temp_reading,urn:hvac:hum_reading)
</cmd>
>cmd>
setting_at(urn:hvac:season_setting,"Summer") |
reading(urn:hvac:hum_reading,A,
urn:hvac:hum_setting)->
set_trigger(urn:hvac:v_trigger);
reading(urn:hvac:hum_reading,B,
urn:hvac:hum_setting)->
reset_trigger(urn:hvac:v_trigger);
reading(urn:hvac:temp_reading,A,
urn:hvac:temp_setting)->
set_trigger(urn:hvac:ac_trigger);
reading(urn:hvac:temp_reading,B,
urn:hvac:temp_setting)->
reset_trigger(urn:hvac:v_trigger)
</cmd>
</step>
</steps>
<result>urn:hvac:comfort_setting</result>
</taskbody>
</task>
����
always() = ���Ƿ���һ��ֵ True��
get_setting(resourceURI, resourceURI, resourceURI) = �ӵ�һ����Դ���ο��ṹ���õ��ڶ����͵������Դ�����á�
setting_set(resourceURI, resourceURI, resourceURI) = ����ݵ�һ����Դ�еڶ����͵������Դ�����ã���ô���� True��
step_OK(step_ID) = ���һ�����������ȷ���� True��
get_reading(resourceURI, resourceURI) = �õ�������Դ�����Ǵ��������Ķ���
reading(resourceURI, comparator, resourceURI) = ʹ�ñȽϲ�����B = ���ڣ�A = ���ڣ�������һ����Դ�Ķ�����ڶ�����Դ���ο�ֵ�����бȽϡ�
set_trigger(resourceURI) = ���� resourceURI���̵���������Ϊ����
reset_trigger(resourceURI) = ���� resourceURI���̵���������Ϊ����
������ʹ�� HVAC �����е�������Դ���� prereq Ԫ�����г���һ��
һ�����ÿ⣬���ǰʱ�䣨tod_setting������ǰ���ڣ�season_setting�����¶����õ㣨temp_setting����ʪ�����õ㣨hum_setting����
һ����֪�����¶ȶ���temp_reading����
һ����֪����ʪ�ȶ���hum_reading����
�����ÿ����Զ��������еĴ洢��ʩ����ֵ���ⲿ���ã����Բ����ֶ���ʽ��Ҳ����ͨ��һ������Դ���ɸ�����֮ǰ����һ���������á�
������ͨ������������裬���ϵص���������Ԫ���е�ÿ��ֵ�����õ���� �� HVAC ������ʵ����ã�
�������ش����ÿ��õ�ǰʱ��ͼ������ã�ʹ�� setting_set ��������ѯ���ú����õ�Ŀ����ԣ�ʹ�� set_setting ������ã���
�������ػ�������¶Ⱥ�ʪ�ȴ������������^�������������������ⲿͨ����ȣ�
���ʪ�Ȳ������õ��ڣ���ô���ⲿͨ�硣
����¶ȶ���������õ㣬��ô���ȡ�
�������ػ�������¶Ⱥ�ʪ�ȴ����������ڶ����������������������ⲿͨ����ȣ�
���ʪ�Ȳ������õ��ڣ���ô���ⲿͨ�硣
����¶ȶ���������õ㣬��ô���ȡ�
�������ػ�������¶Ⱥ�ʪ�ȴ����������ڴ����������������������ȡ����ⲿͨ�磺
���ʪ�ȸ������õ㣬��ô���ⲿͨ�硣
���ʪ�ȵ������õ㣬��ô�ر��ⲿͨ�硣
����¶ȶ���������õ㣬��ô���ⲿͨ�硣
����¶ȶ���������õ㣬��ô�ر��ⲿͨ�硣
�������ػ�������¶Ⱥ�ʪ�ȴ������������ļ��������������������ⲿͨ���յ���
���ʪ�Ȳ������õ��ڣ���ô���ⲿͨ�硣
����¶ȶ���������õ㣬��ô�յ���
����¶ȶ���������õ㣬��ô���ⲿͨ�硣
����IJ����Ϊ�������л�����Ϊ���̵߳��������С�
���������Զ��������䷽����
�����������������
cd <source_file_path>
php RCC.php Thermo.xml
Thermo.xml �ǰ����ݵ�Դ�ļ�����ơ������Զ���������Ϣ�����յ� RecipeJAUS ������Ϣ��֧���ļ��� �嵥 7 �С�ʹ�øô��������� RecipeJAUS ��Ϣ�����С�
RecipeJAUS ��Ϣ�������� 6 ��������֯�ɣ�ÿ������ǰ�涼��һ���ֽڼ��������� 6 �������ǣ�
�嵥 7 �� __URI__ ���ֵ����ݱ�ת���� �嵥 6 ��ÿ�� ResourceCatalog ��� JAUSEncoding��
�嵥 7 �� __CTX__ �����е����ñ�ת���� 0x00 (iterate) �� 0x01 (oneshot)��
�嵥 7 �� __RES__ ���ֵ����ݱ�ת���� �嵥 6 ��ÿ�� ResourceCatalog ��� JAUSEncoding��
�嵥 7 �� __RSC__ ���ֵ����ݱ���֯Ϊһ�����ֽڵ��Ȼ�����ÿ����Դ����Դ URN����ת���� �嵥 6 ��ÿ�� ResourceCatalog ��� JAUSEncoding��
�嵥 7 �� __THR__ ���ֵ����ݱ���֯��һϵ�ж�Ӧ�ڲ��� ID �����ֽ����ʮ����������� 0xFF ��ʾ������һ���̼߳���
ʹ�� �嵥 6�е� ActionCatalog �?__CMD__ ���ֵ����ݱ�ת������Ӧ�� RecipeJAUS ���롣
RecipeJAUS ����ʱ�������Ͼ���һ���̹߳���������һ�����ڼ��غ�ִ�� RecipeJAUS ��Ϣ�����е� RecipeJAUS �����������
�嵥 7. �����Զ������� RecipeJAUS ��Ϣ��
__URI__
urn:hvac:thermo
__CTX__
iterate
__RES__
urn:hvac:comfort_setting
__RSC__
urn:hvac:settings_lib_1
urn:hvac:season_setting_1
urn:hvac:tod_setting_1
urn:hvac:temp_setting_1
urn:hvac:hum_setting_1
urn:hvac:temp_reading_1
urn:hvac:hum_reading_1
urn:hvac:h_trigger_1
urn:hvac:v_trigger_1
urn:hvac:ac_trigger_1
__CMD__
always()_always()_get_setting(urn:hvac:settings_lib,
urn:hvac:tod_setting, urn:hvac:season_setting)_S0:0
setting_set(urn:hvac:settings_lib,urn:hvac:season_setting,urn:hvac:tod_setting)
_always()
_get_setting(urn:hvac:settings_lib,urn:hvac:temp_setting,urn:hvac:hum_setting)_S0:1
step_OK("S0")_always()_get_reading(urn:hvac:temp_reading,urn:hvac:hum_reading)_S1:0
setting_at(urn:hvac:season_setting,"Fall")
_reading(urn:hvac:hum_reading,A,urn:hvac:hum_setting)
_set_trigger(urn:hvac:v_trigger)_S1:1
setting_at(urn:hvac:season_setting,"Fall")
_reading(urn:hvac:hum_reading,B,urn:hvac:hum_setting)
_reset_trigger(urn:hvac:v_trigger)_S1:2
setting_at(urn:hvac:season_setting,"Fall")
_reading(urn:hvac:temp_reading,B,urn:hvac:temp_setting)
_set_trigger(urn:hvac:h_trigger)_S1:3
setting_at(urn:hvac:season_setting,"Fall")
_reading(urn:hvac:hum_reading,A,urn:hvac:temp_setting)
_reset_trigger(urn:hvac:h_trigger)_S1:4
step_OK("S0")_always()_get_reading(urn:hvac:temp_reading,urn:hvac:hum_reading)_S2:0
setting_at(urn:hvac:season_setting,"Winter")
_reading(urn:hvac:hum_reading,A,urn:hvac:hum_setting)
_set_trigger(urn:hvac:v_trigger)_S2:1
setting_at(urn:hvac:season_setting,"Winter")
_reading(urn:hvac:hum_reading,B,urn:hvac:hum_setting)
_reset_trigger(urn:hvac:v_trigger)_S2:2
setting_at(urn:hvac:season_setting,"Winter")
_reading(urn:hvac:temp_reading,B,urn:hvac:temp_setting)
_set_trigger(urn:hvac:h_trigger)_S2:3
setting_at(urn:hvac:season_setting,"Winter")
_reading(urn:hvac:hum_reading,A,urn:hvac:temp_setting)
_reset_trigger(urn:hvac:h_trigger)_S2:4
step_OK("S0")_always()_get_reading(urn:hvac:temp_reading,urn:hvac:hum_reading)_S3:0
setting_at(urn:hvac:season_setting,"Spring")
_reading(urn:hvac:hum_reading,A,urn:hvac:hum_setting)
_set_trigger(urn:hvac:v_trigger)_S3:1
setting_at(urn:hvac:season_setting,"Spring")
_reading(urn:hvac:hum_reading,B,urn:hvac:hum_setting)
_reset_trigger(urn:hvac:v_trigger)_S3:2
setting_at(urn:hvac:season_setting,"Spring")
_reading(urn:hvac:temp_reading,A,urn:hvac:temp_setting)
_set_trigger(urn:hvac:v_trigger)_S3:3
setting_at(urn:hvac:season_setting,"Spring")
_reading(urn:hvac:hum_reading,B,urn:hvac:temp_setting)
_reset_trigger(urn:hvac:v_trigger)_S3:4
step_OK("S0")_always()_get_reading(urn:hvac:temp_reading,urn:hvac:hum_reading)_S4:0
setting_at(urn:hvac:season_setting,"Summer")
_reading(urn:hvac:hum_reading,A,urn:hvac:hum_setting)
_set_trigger(urn:hvac:v_trigger)_S4:1
setting_at(urn:hvac:season_setting,"Summer")
_reading(urn:hvac:hum_reading,B,urn:hvac:hum_setting)
_reset_trigger(urn:hvac:v_trigger)_S4:2
setting_at(urn:hvac:season_setting,"Summer")
_reading(urn:hvac:temp_reading,A,urn:hvac:temp_setting)
_set_trigger(urn:hvac:ac_trigger)_S4:3
setting_at(urn:hvac:season_setting,"Summer")
_reading(urn:hvac:hum_reading,B,urn:hvac:temp_setting)
_reset_trigger(urn:hvac:ac_trigger)_S4
__THR__
S0
S1,S2,S3,S4
__SRD__
S0|urn:hvac:settings_lib,urn:hvac:season_setting,urn:hvac:tod_setting,
urn:hvac:temp_setting,urn:hvac:hum_setting
S1|urn:hvac:season_setting,urn:hvac:temp_setting,urn:hvac:hum_setting,
urn:hvac:temp_reading,urn:hvac:hum_reading,urn:hvac:h_trigger,urn:hvac:v_trigger
S2|urn:hvac:season_setting,urn:hvac:temp_setting,urn:hvac:hum_setting,
urn:hvac:temp_reading,urn:hvac:hum_reading,urn:hvac:h_trigger,urn:hvac:v_trigger
S3|urn:hvac:season_setting,urn:hvac:temp_setting,urn:hvac:hum_setting,
urn:hvac:temp_reading,urn:hvac:hum_reading,urn:hvac:v_trigger
S4|urn:hvac:season_setting,urn:hvac:temp_setting,urn:hvac:hum_setting,
urn:hvac:temp_reading,urn:hvac:hum_reading,urn:hvac:v_trigger,urn:hvac:ac_trigger
���ļ��������²��֣�
__URI__�����䷽�� URN��
__CTX__�����䷽��ִ�������ġ�
__RES__�����䷽�Ľ�� URN�����䷽��������ݴ洢�����С�
__RSC__�����䷽��ʹ�õ���Դ URN ���б?
__CMD__�����䷽����������� precondition-condition-action ��ά���б?ע�⣬���һ��ָ�����ض���ά����صIJ��裩��
__THR__�����䷽�в���Ķ��߳���
__SRD__��������Դ�����
������ͨ�� RCS ��ݿ��е� ResourceCatalog �?�� __RSC__ �е���Դת����Ŀ�� RecipeJAUS ƽ̨��ע���ַ����Ҳͨ�� ActionCategory �� __CMD__ �еĺ���ת�������ǵ� RecipeJAUS �ȼ�������������ֽ�Ϊ��ת�� __RSC__ �б��е�λ�á�
__THR__ ����չʾ�˿ɶ��߳�ִ�еIJ������С����ԣ��� �嵥 6 �У�ִ���경�� S0 ֮��ִ�в��� S1 �� S4��������ͬ��ִ�еġ�
ԭ�ͱ������� PHP Դ����ɴ� ���� �õ���
������
���Ź����ԡ��ɿ��ԺͰ�ȫ�Է����Ҫ��������Ƕ��ʽϵͳ������Ա��Ҫһ�ַ��������߶˺͵Ͷ�ϵͳϸ�ڣ�ͬʱ�ṩϵͳ��������ͼ�����ĸ�Ҫ������һ�ַ�����ʹ�� PHP��һ��֧�ֱ������ݿ⣬����Ϊ���ӵ�Ƕ��ʽϵͳ��ƺͿ����������������� RecipeJAUS��һ�ֿ���ƽ̨��֧�ִ���ϵͳ�IJ��𣩽� DITA ��������ģ��Ϊ�䷽���졣���⣬���Խ��÷�����չ�����ͻ�������ҵ���е�ϵͳ��
--------------------------------------------------------------------
ת�ԣ�http://www.ibm.com/developerworks/cn/xml/x-ditaproc/index.html?ca=drs-cn-0412
--
[1;36mHappy XMLing
[m[1;32m�� ��Դ:��ˮľ���� newsmth.net��[FROM: 114.249.213.*][m
Technical Details
Message-ID:
<4lQ4fA$FO8@newsmth.net>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!feeder.news-service.com!feeds.phibee-telecom.net!news.byr.edu.cn!news.newsmth.net!NEWSMTHShow Full Headers
Complete Article Headers
X-Google-Thread: 115571,cf3137847e66a957,start X-Google-NewGroupId: yes X-Google-Attributes: gidf7ebf7e2af,domainid0,public,usenet X-Google-Language: Chinese,GB Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!feeder.news-service.com!feeds.phibee-telecom.net!news.byr.edu.cn!news.newsmth.net!NEWSMTH From: thinkhy@newsmth.net-SPAM.no (<Test/>) Newsgroups: cn.bbs.comp.xml Subject: ΪǶ��ʽ�豸������ִ�еĴ���ģ��(ת��) Date: 18 Apr 2010 13:49:02 GMT Organization: ˮľ���� Message-ID: <4lQ4fA$FO8@newsmth.net> Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit X-Filename: XML/U/M.1271598010.x0