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的更多相关文章

  1. CodeGen标记循环

    CodeGen标记循环 标记循环是一个模板文件构造,它允许您迭代CodeGen拥有的标记信息的集合.为了使用标记循环,必须基于至少定义了一个字段标记的存储库结构生成代码.              标 ...

  2. CodeGen按钮循环

    CodeGen按钮循环 按钮循环是一个模板文件构造,它允许您迭代CodeGen拥有的按钮信息集合.              在按钮循环中处理的按钮的定义可以来自两个位置之一. 如果基于UI工具箱输入 ...

  3. 代码的坏味道(7)——临时字段(Temporary Field)

    坏味道--临时字段(Temporary Field) 特征 临时字段的值只在特定环境下有意义,离开这个环境,它们就什么也不是了. 问题原因 有时你会看到这样的对象:其内某个实例变量仅为某种特定情况而设 ...

  4. oracle的控制语句if和循环语句loop while for

    pl/sql的控制结构if-then if-then-else if-then-elsif-else 案例1:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该雇员工资增加10% ...

  5. Django文档——Model字段类型(Field Types)

    大部分内容参考自http://wrongwaycn.github.io/django11/topics/db/models/index.html#topics-db-models ,内容是django ...

  6. 心智与认知(1): 反馈循环(Feedback loop)

    目录: ** 0x01 反馈循环(Feedback loop) | How to see System in everyday life ** 0x02 如何像视频游戏一样剖析你的人生?| 打怪升级这 ...

  7. C# 属性(Property)和字段(Field)的区别

    导读: 近期学习过程中发现了一些问题,我的学习只是学习,敲代码就是敲代码,没有加入思考,也不问为什么就直接去敲人家写好的例子去敲,把知识都学死了,逐渐散失了思考能力,所以学习的兴趣大打折扣,正如那句话 ...

  8. 简单了解一下事件循环(Event Loop)

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  9. django字段类型(Field types)介绍

    字段类型(Field types) AutoField 它是一个根据 ID 自增长的 IntegerField 字段.通常,你不必直接使用该字段.如果你没在别的字段上指定主 键,Django 就会自动 ...

随机推荐

  1. 【Feign/Ribbon】记录一次生产上的SpringCloudFeign的重试问题

    在上周在的微供有数项目中(数据产品),需要对接企业微信中第三方应用,在使用Feign的去调用微服务的用户模块用微信的code获取access_token以及用户工厂信息时出现Feign重试超时报错的情 ...

  2. 【原创】ansible常用模块整理

    一.Ansible模块帮助 ansible-doc -l # 列出 Ansible 支持的模块 ansible-doc ping # 查看该模块帮助信息 二.远程命令模块 2.1command com ...

  3. hdu2276 矩阵构造

    题意:      给了n个灯泡的状态,他们绕成一个环,0是灭,1是亮,每一秒灯泡的状态都会改变,规则是如果当前这个灯泡的左边的灯泡当前是状态1,那么下一秒当前的这个灯泡状态就改变0变1,1变0,最后问 ...

  4. Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)

    目录 用scapy模块写 用 python-nmap 模块写 python3.7  windows环境 以下两个都可以扫描指定主机或者指定网段的 IP 对应的 MAC 地址,然后保存到 csv 文件中 ...

  5. (Py练习)判断101-200之间的素数个数并输出

    判断素数的方法之一:用一个数分别去除以2到squrt(这个数),如果能被整除,则不是素数. import math h = 0 leap = 1 for m in range(101, 201): k ...

  6. Asp.NetCore Web开发之Nlog日志配置

    接着讲基于ASP .net Core 的web开发,这节主要讲一下如何使用和配置Nlog进行日志记录. 日志在开发中的作用是很重要的,使用日志,程序出了错误可以及时捕获并记录下来,开发人员可以通过日志 ...

  7. Codeforces Round #691 (Div. 2)

    A. Red-Blue Shuffle 题意:有两个长度为n的数组,数组a和数组b,问那个数组中的数字相比之下比另一个数组中相应位置的元素值更大一些,如果数组a大就输出RED,如果数组b大就输出BLU ...

  8. 我写了一个简单的JSON序列化和反序列化的工具

    背景 互联网上有许多可用的Json序列化和反序列化的工具,例如fastjson,jackson,Gson等等,那么,我为什么还要自己写一个? 项目不方便依赖其他第三方库.比如有时候我们编写SDK,考虑 ...

  9. .Net Core·热加载的实现及测试

    阅文时长 | 0.25分钟 字数统计 | 460字符 主要内容 | 1.引言&背景 2.解决原理&方法 3.声明与参考资料 『.Net Core·热加载的实现及测试』 编写人 | SC ...

  10. Spring 注解动态数据源设计实践

    Spring 动态数据源 动态数据源是什么?解决了什么问题? 在实际的开发中,同一个项目中使用多个数据源是很常见的场景.比如,一个读写分离的项目存在主数据源与读数据源. 所谓动态数据源,就是通过Spr ...