none
这样写能不能让人明白想表达的思想 RRS feed

  • 常规讨论

  • 开发系统工具

    工具的开发的目的

    原因

             一种模式:对止前软件项目开发来说,软件开发过程不断的重写代码,随然有很多控件或类,但大部分还是类型复制,粘贴过程,如VC++PB

             一种模式:通过描述过程来实现,但现有的缺陷是一个工具只能开发一种流程,每个工具又都不一样的描述过程,并且可扩展性很差,如PHPCMSMSCRM

     

    目的

        将软件项目开发过程中的代码开发过程抽象出来,由程序员实现抽象过程,而项目开发人员使用表达方式,在表达过程中不需用if,else,for等过程也不需去定义数据结构等过程,而有类似于口语的方式实现

    工具的结构

             一个基本库,一个核心库以及若干个应用库完成

             在工具开发过程中,只需要少数人了解核心库,而其它开发人员做应用库,而所有的开发人员之间是相互独立。

             核心库一当完成就基本不需要在修改

    与商业版的PHPCMS, MSCRM, Windows Workflow Foundation-WF等比较的优势

    应用范围

             商业版的这里都是面向某一个流程。如PHPCMS是面向论坛,MSCRM是面向商务, Windows Workflow Foundation-WF是面向工作流程。

             而本模型是是面向所有流程。也就是说用PHPCMS,MSCRM, Windows Workflow Foundation-WF等完成的的事都可以用这个完成,可以独立也可整合在一起。

    再扩展性

             商业版的因是面向一个流程,但需要在流程中进行变化时,很难去在原有的基础上去扩展出新的功能。

             本模型的扩展以DLL形式出现,可以是一般面向一个具体的应用也可以是一个抽象过程。

    公司使用性

             商业版公司不愿意使用的一个重要原因是,一家公司很少会只做一种流程的软件,这样就要求使用人员会用的工具要多才行,严重影响公司可选择人员的范围。

             本模型下只要求程序语言和逻辑性好就可以实现扩展.而一般的项目人员不会要求有学很多东西。

    和传统开发流程比较(.net等开发工具)

    组织结构图

     

    人员分别

             传统项目开发过程中每个项目都需要程序员。

             而新的模式下,项目开发团队中不需要程序员,而程序员被集中于一个工具开发团队中

    人员能力要求

             传统开发过程中应和项目联系度很高,需要每个开发人员都需要有一定的程序语言能力和较高的逻辑能力

             新的模式下开发过程中和程序和项目联系度很低,基本上不需要使用程序语言,所有开发人员都可以不需要懂程序语言,而逻辑能力只需要项目经理有就可以

    开发时间周期

             传统需要在开发过程中不断需要程序员进行开发过程中测试,要常和用户交流,而交流和写代码是必须分开的。所以需要时间很长。

             新模式下应在程序是已完成的,在用户要求修改时能很快在系统中反应出来,可以说是一边用户交流一边马上做出来。所以需要时间很短

    维护性

             传统开发流程下,程序是面向代码时,一定有需要改动的地方,会要求开发人员重写或修改代码,耗时耗力。

             新模型下,需要改动时基本上是修改一个描述就可以实现,方便快速.

    语言要求

             传统开发流程下,开发人要员要求至少懂一种开发语言(如C++),了解数据结构,对象模型等知识。

             新模型下,做项目时不需要了解数据结构,对象模型,而语言也是一种如同白话版一样的易语言(没有if,else等)。只有制作工具的人员才需要C++,了解数据结构,对象模型等知识

    2010年1月28日 3:51

全部回复

  • 厉害。你可以看一下MSCRM. Microsoft做了一个类似的东西
    2010年1月29日 3:45
  • 这种模式,似乎有Windows Workflow Foundation-WF 的身影,在WF 中,开发人员使用WF 开发好各种Activity, 和设计器。 Activity 包含了所有的逻辑和算法。
    开发完成后,不懂开发但懂业务逻辑的人使用这套系统自定义他们需要的 系统。


    This posting is provided "AS IS" with no warranties, and confers no rights. Microsoft Online Community Support
    2010年2月2日 4:07
    版主
  • 已实现的b/s开发模式项目开发过程

    项目开发人员的工作过程

             项目工作人员需要自已定义数据库结构,然后再将描述过程应用到工具上(工具本身不会操作数据库,数据库的定义需要一些规则,如所有的表都要用nid字段等)

             由美工定义好用户页面框架,然将描述用在实际位置上(在一点类似asp方式)

             描述分两大块,一块定义框架,此块需要在文件中完成,一块表,字段描述,可以通过界面管理

    工具的特点

             系统包含功能的文件名是不会让客户端所知道。是由一个URL上的标识,后台一个标识指定文件位置来决定

             上传的文件和功能文件是分开存放

             系统的文件功能组合,有点类似asp一样,一个文件代表一个页面(不是一个页面就一定要一个独立文件)

             所有的脚本因是由工具开发人员完成,项目人员不需要书写函数或类,以及后台处理过程,及代码大部分由系统自动完成。少量的javascript脚本用工具开发人员完成

             基本上Demo完成时,系统大部分工作已完成,因为工具是以界面为入口,在需要变动的地方修改一下描述就完成

             工具的升级不会影响原有的系统的描述。

             由于是描述实现,所以任何人都可以很容易理解项目实现过程,当换一个人时不会因为每个人的思路不一样,而要花费大量时间是理解别人的过程

     

    如何扩展工具

    数据库类型的扩展

    原因

             现在市场有很多数据库,sqlserver,mysql,     虽然都遵守sql92标准,但还是有分别的。

    目的

             虽然有一些不同,但在描述时还是使用同样过程。

    过程

             从数据库类型派生一个类,重载分页功能,日期功能,别名功能函数,做成dll,然后在通知工具已使用新的dll名称,新建的数据库类型代号。在项目开发时就可以指定建立的新数据库。

    字段类型的扩展

    原因

             系统开发过程时,可能会出现一定特定功能的字段,如身份证验证、或从第三方取数等,而这些是以前没有被定义过。

    目的

             再出来新的字段要求时,项目开发人员不需要去了解程序语言数据结构等知识,一样用描述可以实现。

    过程

             从字段定义类派生后,重载其一些需要用到的函数,做成dll,然后在通知工具已使用新的dll名称, 新建的字段类型代号.在项目开发时就可以使用新的字段类型。

    界面和功能扩展

    原因

             用户可以会提出一些不常用的界面类型,而工具中还没有实现

    目的

             再出来新的界面要求时,项目开发人员不需要去了解程序语言数据结构等知识,一样用描述可以实现(:输入界面,只有一个,至于输入界面最终如何排列,是根据描述来自动生成)

    过程

             从界面和功能类派生后,重载其一些需要用到的函数,做成dll,然后在             通知工具已使用新的dll名称, 新建的界面和功能类型代号,在项目开发时             就可以使用新的界面和功能类型。

    已实现的功能(具体如何写,可以查看《冯式系统终结者帮助》)

    界面

    登陆界面及后台过程

             登陆界面由美工完成,在输入位置加上字段描述过程,有几个输入项需要自已指定

             后台需要指定登陆成功和各种不同失败的页面

    输入保存界面及后台过程

             描述好后,工具会自给根据字段描述过程成输入界面,并包括保存过程的函数(根据描述生成各种验证过程)以及字段定义中需要的脚本函数

             保存后只需要通知工具要保存那些表就,系统会自动完成,需要定义各种保存出错文件和保存成功后的操作

             可以支持各种运算如统计,计算,以及有限运算等运算过程

    列表显示及后台操作过程(ListCtrl)

             工具根据描述生成列表过程,并根据描述在一些地方加上需要的行为(删除,修改,新增等一些操作),和一些脚本

             其有很多变种,如用于监控的列表(自动刷新),有可选择操作的列表,可输入操作的列表等

             可以使用内容级的权限和菜单级权限

    树型操作及后台过程(TreeView)

             工具根据描述生成树型过程,树的每个节点都可以显示n个字段,并每个字段是可以有点击行为,树的每层之间可以有关系也可以跨层指定关系,更可以没有关系。并可以保存,刷新,修改,删除,新增等功能

             分两个,一个为层固定,一个层可变树(并同一层可以不用的表)

             可以使用内容级权限

    查询过程及后台过程

             根据描述生成查询输入界面,并生成所需要的查询脚本

             系统只定义一组有三项的查询,至少其它一项或使用二项的查询,需要自已通过界面和功能扩展来扩展出

    导入过程及后台过程

             此描述过程是文件中描述,需要定表,和表字段关系等

             可以实现多表同时导入并自动生成关系,并具有值自动转化功能(如,是,Y,YES,可以自动统一为是)

    线型图、柱型图及后台过程

             生成图片以jpg方式到客户端

             可以在查询中使用,也可以直接显示

    列表分页功能及后台过程

             Listctrl同时使用,可以自动生成页数等

             工具只定义一种,其它更多可以扩展出使用

    自定义页面显示及后台过程

             此描述过程是文件中描述,可以解决一些复杂的显示页面。如类似统计或论坛的回复等。

    分页及后台过程(TabCtrl

             此描述类似TabCtrl的控制。

    菜单生成的后台过程(主菜单和一般菜单)

             此描述实现主菜单,列表菜单,输入菜单,查询菜单等所有菜单或按钮。

     

    字段

    整数

    下拉型

    小数

    字符串

    下拉数可变型

    日期型

    单选型

    多选型

    分级下拉型

    密码型

    文件型

    获取最大值

    时间大于

    时间小于

    多行多列

    Word类型

    多选只有一个选择

    单选只有一个选择

    自动创建图片字段

    单选Check

    分行多选型

    输入是下拉列表时是图片

    从后面获取列表点选方式

    普通列表点选方式

    条形码

    图形文件型

    下拉数可变型并设另字段的值

    日期时间

    查询功能下拉

    包含文件对象

    如何制作复杂权限系统

    自定义操作权限

    原因

             不同的系统用不同的读取,修改,删除等权限分类

    目的

             可以通过描述来自由定义权限。

    过程

             设定权限种类,如只读,新增,删除,修改,导入,导出等,指定能修改操作的具体权限,如可以设定新增,修改有输入功能,默认的情况下是都没有真正的输入功能,设定好后,再以后的描述中就可以使用定义好的权限种类

    表字段级权限

    原因

             实际使用的表有很多,但很可能某一些表的操作权限是相同的.也有可能同一张表中某一些字段是一组权限而另一些字段是另一组权限。

    目的

             项目开发时可以通过点选描述过程可以实现。

    过程

             设成权限级的表的字段描述,然后在其它表和字段描述中使用。在成设成权限时会要求设定可以操作的权限,只有当用户和本身都存在时才表有这个用户有这个权限。

    内容级权限

    原因

             有时用户要求某些人只能对某些记录可以操作,如审批等工作流。

    目的

             项目开发时可以通过点选描述过程可以实现。

    过程

             在扩展用户登陆表,并增加1号表的字段描述,然后在需要控制的界面上加上就可以。

     

    菜单级权限

    原因

             有时用户要求某些菜单会根据某一个值进行是否可用。

    目的

             项目开发时可以通过点选描述过程可以实现。

    过程

             在定义菜单时再增加设定控制字段就可以。

    系统变量

             系统变量由表号为1的描述自动生成。用户需要根据项目情况在1号表上增减描述,然后在然后就可以操作使用所定义的系统变量

    提示语

             系统需要自已定义一些常用的提示语,主要用于不同语言种类的提示,如国语,英语,日语等,系统已定义好国语提示,但可以自已修改。

    数据库

             系统已有sqlserver下的数据库应,其它数据库需要自已从数据库类型中自已扩展。在系统描述中需要指定默认连接数据库(描述库)

    有关数据库操作锁定

             所有修改,删除,插入操作都可以锁定,此过程由程序完成,首先需要定义一些锁,然后在表描述上输入使用的锁,这样在操作同一张表的数据时就会只可以一个用户修改,删除,插入操作

    有关如保存,查询等javascript脚本

             系统会自动生成相关的所有脚本,函数名是固定或有一定规则出现

    界面美化

             此需要css控制,css名称是固定或有一定规则出现,根据情况,需要自已修改css

    与第三系统交互方式

             工具可以将用户自已的session以及权限内容用加密的方式传给第三系统使用

    2010年3月2日 1:58
  • 一些界面实现例子(http://127.0.0.1:3002下可以看到结果)

             有关简单模式不在单独描述

             例子中的写法只书写重要的部分,其它如html语言排版不书写

             下面红色部分表示代码

     

    售票模式

    数据库描述

    文件中描述

             在查询文件中需要自动生成代码的地方写下

    102::10

    101::0,20%|20%|20%|20%|20%|20%|(此处表示查询输入项的排列情况)

    105::TNI(104::具体的表号)

    系统会自动生成输入框以及所包括的一个javascript函数FindData,此函数可以直接放到html中写好,也可以用生成按钮过程完成(此过程请看帮助的写法)

    FindData函数的解释

    第一个参数是表单的form对象,要求根据情况调整,第二参数为form提交的位置

             在列出可有班次的文件中自需要自动生成代码的地方写下

    101::99, and  BeginTime>getdate()(此处可以加上条件限定,具体限定根据情况)

    101::10,10(此处后面的10表示一页显示10)

    102::4

    105::TNI(104::具体的表号)

    上面界面列表情况,有一页显示不全,可以有下面的过程进行分页

    101::1,ACTIVE.FG?FUN=5&TNI=[$TNI$](这个的行为是和调用这个页面的行为是一致的)

    102::8

    104::3(分页显示一边的页数如:3就表示显示为1,2,3...5,6,7)

             具体售票过程产生的输入界面(点击行为因在显示班次情况的表号定义菜单行为)

    102::3

    105::TNI(104::具体的表号)

    此时会生成一个输入界面和提交操作所需要的函数msubmit_表号

    msubmit_表号函数的解释

    第一个是表单的form对象,第二个参数form提交位置

    售票过程应有计算过程,所以需要在一些位置加上你要的计算函数,然后将函数

    在字段描述过程上用上,函数生成写法如下

    102::11

    101::0,SetPiao(函数名)

    212::1,[+114+]=[-108-]*[-115-](计算公式[+字段号+]=[-字段号-]…)

    194::12(无意义,只要写上就可以)

    还需要一个按钮

    101::0,RECO_NID(记录号ID将做为参数使用)

    101::10,1(1表示使用标号为1的按钮组合)

    102::5

    105::TNI(104::具体的表号)

    系统保存时还需要一个隐藏表单,将上一次的表单向下传送

    102::11

    144::RECO_NID

              数据保存的写法,数据保存时请在数据库中定义一样触发器,已实现余票变动

    101::0, Parent=[$MDATA2$] and State=0(获取票数据的语句)

    101::1,State=1,CHNAME='[$F_109$]'(修改的语句)

    101::2,F_115(检查余票数的字段)

    101::3,余票不足(余票不足的提示语句)

    101::4,修改数据出错(系统出错的提示语句)

    101::5,*\Html\ErrorNoPiao.txt(余票不足时需要访问的文件)

    101::6,*\Html\ErrorUpdatePiao.txt(系统出错时需要访问的文件)

    102::2

    134::105(要保存的表或135::URL上的参数)

    后面是正常情况下的处理过程,可以将票打印。也可以直接关闭,具体根据情况操作,在关的保存记录成功的记录ID放在NIDARRY里面,可以后面使用

    监控模式

    数据库描述

    文件中描述

             在后台内存中有一块监控模式的内存,可以定时从数据库中获取,也可以通过写dll方式控制(如第三方的socket通信)

             后台数据建立过程,在begin.inf文件建立后台内存管理器

    100::2(加载的那个dll)

    110::内存数据处理器,1(这块内存的名字)

    111::*\Exter\1.txt(指内存具体情况文件)

    内存情况文件的内容如下

    2::考试服务(指定内存是在那个服务下,也就是是那个IIS)

    3::77(描述的表号,内存已那张表描述建立)

    6::ModiDate(检查数据变动的字段,一般指时间,在从数据库中检索时只需查找上一次到现在有变动的数据)

    1::ChName(记录关健字段,用于区分记录是不同的标记)

    4::92(获取数据的字段号,也就是上面指写的表号下的字段号,此是多组这样的表达,具体多少由实际情况决定)

    7::全部(下面是一样的,只是不写后面两项内容,表示所有数据)

    5::10000(每次多久去数据库查一次)

    7::一般告警,97,0(建立快速查找的内存索引,此是多组表达,根据情况定义,格式是索引的名称,建立索引的字段号,已字段号的那个值进行建立索引)

    如果是用dll方式的,5::就不需要,在DLL有接口调用,就可以(具体可以看帮助)

             前台界面生成,其中有些css是要自已书写,作用是可以根据记录情况已不同的颜色区分或用动画

    101::0,78(界面显示的表号,这个表号和后台是无关的)

    101::1,98(区分分类的字段号,此和下面的相互配合就可现不同分区可以不同的颜色显示)

    101::2,jiankon(处分css的前缀)

    101::3,99(后台取nid值的字段号)

    101::4,2000(过多久自动向服务器请求更新数据,数据更新是后台运算,不会当前页面数据消失)

    101::7,全部(后台的索引名称)

    102::21

    104::内存数据处理器(后台内存块的名称)

             有关字段定义和其它定义有些区分,这里说明一下字段定义规则

    字段定义中的最大值在这里因表示为后台数据的字段号

     

    审批模式

             此模式是主要通过权限制作来完成,文件的写法是一般的写法的组合,没有多大逻辑性

             此界面方式和数据库表的建立有很大的关系,下面以一种比较复杂组合为介绍

    审批需要的权限以最简单的一种来讲解一下

    1.  定义要申请者的表权限号和权限字段

    2.  定义审批者的表权限号和权限字段号

     

    2010年3月2日 2:02
  • 开票模式

    数据库描述

    文件中描述

             此模式主要体现对可编辑列表和一般输入的混合(混合是用字段定义完成)

             此保存过程分多种过程,此处只讲对可以保存部分成功过程

    101::90,*\Html\NewFaPiao_2.txt(新的描述文件)

    102::2

    144::126(所需要显示的表号或145::URL上的参数)

    此处使用啦自定义界面格式,它可以做为论坛使用

    NewFaPiao_2.txt格式

          <tr>

            <td width="10%" align="left" >公司名称</td>

            <td width="40%" align="center" >

    12::126

    </td>     

    </tr>

    这里使用自由排版方式,其中12::表示前面定义的表号在这里的字段号,多个自由组

    合,在字段定义中需要使用包含文件对象,在其定义一个需要使用的文件

    *\NewFaPiao_[NM].txt,其中[NM]表示如是新增时,使用的表达文件是

    NewFaPiao_N.txt,修改模式下是NewFaPiao_M.txt,下面是修改模式下的写法

    101::10,10(最多几行记录)

    101::99, and   parent=[$RID$](获取数据的条件)

    102::23

    104::118(表号或105::URL上的参数)

    下面是保存过程

    101::0,*\Html\ErrorNoRID.txt(没有参数处理文件(此过程一般是因配制错误而产生))

    101::1,*\Html\ErrorKeyNoValue.txt(关健字没有输入值,所需要的处理文件(此过程一般是因配制错误而产生)

    101::2,*\Html\ErrorNoKey.txt(关健字没有输入值,所需要的处理文件(此过程一般是因配制错误而产生))

    101::3,*\Html\ErrorNoModi.txt(修改失败情况下的处理文件)

    101::4,*\Html\ErrorData.txt(表示数据的数据已存在的错误处理文件)

    101::5,*\Html\ErrorNoInsert.txt(插入数据失败的错误处理文件)

    101::10,T_[$TNI$](保存成功的情况,将nid值返回,返回值是放在页面名称为<T_表号>)

    102::2

    103::0

    124::126(表号或145::URL上的参数,此过程是保存输入框)

    102::4

    101::1,parent=[$T_126$],(不通过界面转来数据的保存参数)

    164::118(表号或145::URL上的参数此过程是保存编辑列表)

    后面可以加上保存成功后的过程

     

     

    输入框中模版

    数据库描述

             此过程是只需在字段定义中完成,代码系统自动完成,格式如下

    |显字段|值字段|内容字段|条件,最大值放另字段,

    参数定义为KIAOSI.DBO.SHENG_MO|caption|nid|Word|

    最大值写上88

    分层数据输入

    数据库描述

             此过程需要在定段定义中和树型定义中完成,代码系统自动完成,格式如下

    要操作的层-当前字段号-下一层字段号|树号|当前层|条件,如

    1-85-86|1|0|Group_nid=[#3#]

    [#3#]表示从session中取数,其它取数方式请参考帮助

     

    输入检索功能

    数据库描述

             此过程是只需在字段定义中完成,弹出的地方需要控制一下css样式,代码系统自动完成,格式如下

    表名|显示字段名|值字段名|条件,注表名,是包含所在数据库的全称,如

    KIAOSI.DBO.SHENG_MO|caption|nid|caption like '%[$CURVAL$]%'

    其中[$CURVAL$]表示输入的值

    文件中描述

    打开public.js文件,找到CreateDiv函数,在<select 里面加上css,已控制下拉出来

    的样式

    列表中多选修改,删除

    数据库描述

    文件中描述

             此过程是只需在字段定义中完成,代码系统自动完成,只需要在修改和删除,多选,取消多选功能函数放到你需要的地方就可以完成

    点击框是由定段定义完成

    在按钮上加上如下全选或全不选函数

    SetCheckTableListCheck('表号','列名称',true);SetCheckTableListCheck('表号','列名称',false)

    向后台提交函数

    SetCheckTableList('表号','列名称','表单URL')

    后台处理过程如下写

    1.  修改过程

    102::4
    101::0,Field=1,Field1=[$12$]
    (
    修改语句)

    101::1,nid(条件记段一般是nid)

    101::2,1(客户端如何操作,没有表示不操作,1表示删除,2表示刷新)

    101::6,修改出错(出错提示语)

    134::67(要修改的表号)

    2.  删除过程

    102::4
    101::1,nid
    (
    条件记段一般是nid)

    101::2,1(客户端如何操作,没有表示不操作,1表示删除,2表示刷新)

    101::6, (出错提示语)

    144::67(要删除的表号)

    论坛模式          

             此过程是使用自定义显示记录方式列出数据,输入框为普通方式完成

    树型模式

             此过程是各种界面组合而成,这里主要对新增,删除,修改树如何操作进行讲解

             此树可以定义多列,并且每个节点上的列都可以定义行为,当定义列宽为1时表示这列是不显示的

    数据库描述

     

    文件中描述

    2010年3月2日 2:03