CodeGen字段循环Field Loop
CodeGen字段循环Field Loop
字段循环是一个模板文件构造,它允许迭代CodeGen拥有的有关字段的集合。这些字段定义可以来自以下两个位置之一:
•如果基于从存储库结构中获取的信息生成代码,则字段集合将基于存储库结构中定义的字段。
•如果根据UI Toolkit输入窗口(在窗口脚本文件中定义)的定义生成代码,则字段集合由该输入窗口中定义的字段确定。当然,这些字段可能反过来引用存储库结构。
•如果基于从Synergy方法目录中获取的信息生成代码,并且当前正在处理一个结构参数,则字段集合将基于与当前参数关联的存储库结构中定义的字段。
字段循环由一对匹配的<Field_LOOP>和</Field_LOOP>标记分隔,它们围绕要为每个字段插入的模板代码。在每个字段的开始标记和结束标记之间重复处理。
•场循环扩展令牌
•字段循环表达式标记
字段循环可以在结构循环和参数循环中定义,但不能在任何其他循环构造中声明。
CodeGen将数组字段作为多个单独的字段进行处理。通常CodeGen不处理覆盖字段或标记为“由语言排除”的字段。
有两种类型的场循环,称为多线场循环和串联场循环。
Multi-Line Field Loops
在模板的一行或多行中出现一行或多行结束标记时,在模板中出现一行或多行结束标记,如:
[code]
<FIELD_LOOP>
code
</FIELD_LOOP>
[code]
多行字段循环为处理的每个字段生成一行或多行输出代码。
In-Line Field Loops
当开始和结束字段循环标记出现在模板文件中的同一行上,并且分隔了模板代码行的一部分时,就会出现行内字段循环,如下所示:
[code] <FIELD_LOOP>
code </FIELD_LOOP> [code]
行内字段循环将代码生成到当前输出行。
Field Loop Example 1
(Multi-Line)
以下模板文件代码:
sql = "CREATE TABLE <STRUCTURE_NAME> ("
<FIELD_LOOP>
& + "<FIELD_SQLNAME>
<FIELD_SQLTYPE><IF REQUIRED> NOT NULL</IF><,>"
</FIELD_LOOP>
& + ")"
可以产生这样的输出:
sql = "CREATE
TABLE PROJECT ("
& + "SYNERGYGRFA VARCHAR(22),"
& + "PROJECT_ID DECIMAL(8) NOT NULL,"
& + "CUSTOMER_ID VARCHAR(10) NOT NULL,"
& + "CONTRACT_ID VARCHAR(10) NOT NULL,"
& + "CONTRACT_PROJECT_ID DECIMAL(3) NOT NULL,"
& + "DESCRIPTION VARCHAR(60) NOT NULL,"
& + "START_DATE DATETIME NOT NULL,"
& + "END_DATE DATETIME,"
& + "CURRENT_STATUS DECIMAL(2) NOT NULL,"
& + "STATUS_DATE DATETIME NOT NULL,"
& + "LEAD_CONSULTANT VARCHAR(15) NOT NULL,"
& + "COORDINATOR VARCHAR(15) NOT NULL,"
& + "APPROVED_BY_FIRST DECIMAL(3) NOT NULL,"
& + "APPROVED_BY_LAST DECIMAL(3) NOT NULL,"
& + "APPROVED_DATE DATETIME NOT NULL,"
& + "APPROVAL_LOCATION DECIMAL(2) NOT NULL,"
& + "WORK_LOCATION_ID DECIMAL(2),"
& + "CREATED_BY VARCHAR(15) NOT NULL,"
& + "CREATED_DATE DATETIME NOT NULL,"
& + "MODIFIED_BY VARCHAR(15),"
& + "MODIFIED_DATE DATETIME,"
& + "TEXT VARCHAR(700),"
& + "REPLICATION_KEY VARCHAR(20)"
& + ")"
Field Loop Example 2
(Multi-Line and In-Line)
以下模板文件代码:
sql = "INSERT INTO <STRUCTURE_NAME> ("
<FIELD_LOOP>
& + "<FIELD_SQLNAME><,>"
</FIELD_LOOP>
& + ") VALUES(<FIELD_LOOP>:<FIELD#LOGICAL><,></FIELD_LOOP>)"
可以产生这样的输出:
sql = "INSERT
INTO PROJECT ("
& + "SYNERGYGRFA,"
& + "PROJECT_ID,"
& + "CUSTOMER_ID,"
& + "CONTRACT_ID,"
& + "CONTRACT_PROJECT_ID,"
& + "DESCRIPTION,"
& + "START_DATE,"
& + "END_DATE,"
& + "CURRENT_STATUS,"
& + "STATUS_DATE,"
& + "LEAD_CONSULTANT,"
& + "COORDINATOR,"
& + "APPROVED_BY_FIRST,"
& + "APPROVED_BY_LAST,"
& + "APPROVED_DATE,"
& + "APPROVAL_LOCATION,"
& + "WORK_LOCATION_ID,"
& + "CREATED_BY,"
& + "CREATED_DATE,"
& + "MODIFIED_BY,"
& + "MODIFIED_DATE,"
& + "TEXT,"
& + "REPLICATION_KEY"
& + ") VALUES(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,:22,:23)"
Field Loop Example 3
以下模板文件代码:
#region Private
fields (storage for properties)
<FIELD_LOOP>
private <FIELD_CSTYPE> p_<Field_Sqlname>;
</FIELD_LOOP>
#endregion
可以产生这样的输出:
#region Private
fields (storage for properties)
private string
p_Synergygrfa;
private int p_Project_Id;
private string p_Customer_Id;
private string p_Contract_Id;
private int p_Contract_Project_Id;
private string p_Description;
private DateTime p_Start_Date;
private DateTime p_End_Date;
private int p_Current_Status;
private DateTime p_Status_Date;
private string p_Lead_Consultant;
private string p_Coordinator;
private int p_Approved_By_First;
private int p_Approved_By_Last;
private DateTime p_Approved_Date;
private int p_Approval_Location;
private int p_Work_Location_Id;
private string p_Created_By;
private DateTime p_Created_Date;
private string p_Modified_By;
private DateTime p_Modified_Date;
private string p_Text;
private string p_Replication_Key;
#endregion
CodeGen字段循环Field Loop的更多相关文章
- CodeGen标记循环
CodeGen标记循环 标记循环是一个模板文件构造,它允许您迭代CodeGen拥有的标记信息的集合.为了使用标记循环,必须基于至少定义了一个字段标记的存储库结构生成代码. 标 ...
- CodeGen按钮循环
CodeGen按钮循环 按钮循环是一个模板文件构造,它允许您迭代CodeGen拥有的按钮信息集合. 在按钮循环中处理的按钮的定义可以来自两个位置之一. 如果基于UI工具箱输入 ...
- 代码的坏味道(7)——临时字段(Temporary Field)
坏味道--临时字段(Temporary Field) 特征 临时字段的值只在特定环境下有意义,离开这个环境,它们就什么也不是了. 问题原因 有时你会看到这样的对象:其内某个实例变量仅为某种特定情况而设 ...
- oracle的控制语句if和循环语句loop while for
pl/sql的控制结构if-then if-then-else if-then-elsif-else 案例1:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该雇员工资增加10% ...
- Django文档——Model字段类型(Field Types)
大部分内容参考自http://wrongwaycn.github.io/django11/topics/db/models/index.html#topics-db-models ,内容是django ...
- 心智与认知(1): 反馈循环(Feedback loop)
目录: ** 0x01 反馈循环(Feedback loop) | How to see System in everyday life ** 0x02 如何像视频游戏一样剖析你的人生?| 打怪升级这 ...
- C# 属性(Property)和字段(Field)的区别
导读: 近期学习过程中发现了一些问题,我的学习只是学习,敲代码就是敲代码,没有加入思考,也不问为什么就直接去敲人家写好的例子去敲,把知识都学死了,逐渐散失了思考能力,所以学习的兴趣大打折扣,正如那句话 ...
- 简单了解一下事件循环(Event Loop)
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- django字段类型(Field types)介绍
字段类型(Field types) AutoField 它是一个根据 ID 自增长的 IntegerField 字段.通常,你不必直接使用该字段.如果你没在别的字段上指定主 键,Django 就会自动 ...
随机推荐
- phpstorm 方法名类名 作者日期 注释
phpstorm 设置方法名 函数名注释 新建页面作者日期信息注释 官方提供的文档地址: http://www.jetbrains.com/phpstorm/help/creating-php-do ...
- php7 连接 mysql 的两种方式
PHP 5 的使用者可以使用 MySQL extension,mysqli 和 PDO_MYSQL .php 7移除了mysql extension,只剩下后面两种选择.这份文档解释了每个API 的术 ...
- deep freeze standard v8.x
62S93Y4Q-6C6E4EQQ-7MKMZA9F-RK5H6CSZ-AB7W3BMMPJ6GGQDCPT5EPVWGJP3EEQ5GAV2TCQD7-F8J933CA-6AEHN9ZG-2FW3M ...
- hdu3987 最小割边数
题意: 是让你求最小割之后问最小割的最少边数是多少,因为最小割不是唯一的,所以存在最小边数的问法.思路: 两个方法,一个是先一遍最大流,然后把割边全都改成流量1,其他的全都改成流量 ...
- 逆向 stdio.h 函数库 fwrite 函数(调试版本)
0x01 fwrite 函数 函数原型: size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 函数功能:把 ...
- 浅谈自动特征构造工具Featuretools
简介 特征工程在机器学习中具有重要意义,但是通过手动创造特征是一个缓慢且艰巨的过程.Python的特征工程库featuretools可以帮助我们简化这一过程.Featuretools是执行自动化特征工 ...
- 用Taro写一个微信小程序(二)——配置目录别名
配置别名可以方便书写代码引用路径,让代码更整洁. 官方文档可参考https://nervjs.github.io/taro/docs/config-detail#alias 一.在config/ind ...
- 『政善治』Postman工具 — 9、在Postman中使用断言
目录 1.Tests的介绍 2.常用SNIPPETS(片段)说明 (1)常用变量相关 (2)状态码相关 (3)响应结果断言: (4)Header : (5)响应速度: 3.示例 (1)响应码断言 (2 ...
- C#中的委托(Update)
什么是委托? 委托(delegate)是一种托管方法的数据结构,它是一种引用类型,是对方法的引用.如果说int,string等是对数据类型的定义,那么委托就类似于对"方法类型"的定 ...
- 判断标准I/O的缓冲区类型
#include <stdio.h> void pr_stdio(const char *, FILE *); int main() { FILE *fp; fputs("ent ...