NC功能建模用友软件股份有限公司功能建模-功能及目标NC功能建模目标:以业务建模产生的业务组件为主线,创建其功能及UI展现,并发布到NC产品体系中。NC功能建模依赖NCUAP平台。NC功能建模通过功能建模集成开发环境进行,在NC产品客户化-二次开发工具-UAP集成开发工具进入,选择第三个图标。NC功能建模实现了传统的重量级系统与NC轻量化系统的统一。功能建模-组成框图功能建模在业务建模之后进行,以业务建模完成的业务组件为对象,组织其功能及界面展现。功能建模依赖UAP基础平台提供持久化等基础服务,依赖模板提供界面展现、查询及打印的功能,依赖流程平台来提供流程的支持,使用UI模式化框架实现对模板和流程平台的组织,并提供UI的通用功能。功能建模基于UAP基础平台基于UAP模板基于UAP流程平台及UI模式化单据模板打印模板查询模板功能建模集成开发环境功能建模-集成开发环境介绍上面菜单和工具栏,主要针对中心编辑区。组件导航和组件资源导航两个页签,中心是用户编辑区,控制台显示提示信息,最下面为状态条,显示当前操作的组件和资源信息。界面形式采用dockable技术,可以根据个人喜好定制开发工具各块位置布局。功能建模-集成开发环境介绍(续)两个导航页签上方都有各自的工具栏可以操作,其可用性会随着选择节点的不同而变化。组件导航页签提供资源导航页签的导航,选择不同的组件在资源管理页签中显示相应的资源。开发的过程可以通过可视化向导进行:右键选择组件节点选择右键菜单”打开资源开发向导”;也可以对每项资源进行离散的创建:在资源管理页签中选择资源项,如单据模板,在页签工具栏会出现一组菜单,也可以通过右键菜单进行操作,右键菜单和工具栏项是一致的。开发环境不仅提供了新建的功能,更重要的是提供了资源的维护功能,可以进行增、删、改等操作。功能建模-开发流程基本档案:注册组件-创建单据模板-创建查询模板-创建打印模板-自定义按钮设置-UI组装-节点发布-生成运行代码流程平台单据:注册组件-创建单据模板-创建查询模板-创建打印模板-定义单据类型-设置单据动作-设置动作脚本-设置单据交换-设置单据号规则-自定义按钮设置-UI组装-节点发布-生成代码以上流程是完整的开发步骤,可以根据需要确定是否需要设置。下面将详细的介绍每个步骤的概念、功能及建立过程。功能建模-组件注册组件隶属某个模块,需要首先注册模块,在业务建模中已经介绍。选择“由元数据组件创建”,在元数据组件树中选择之前创建的业务组件。此处组件创建可以理解为组件注册,将元数据组件与当前开发环境的组件对象建立关联。功能建模-向导介绍组件注册完成后,会自动出现开发向导的界面。根据向导的提示可以完成整个单据的开发过程。向导首页为基本信息设置页,设置当前单据的总体信息。模板编码用于单据、查询、打印模板编码的设置,V55对模板进行了修改,通过编码来标识模板对象,解脱了原有模板对节点号的依赖。是否基本档案确定此单据是否走流程,如果选择,则不走流程平台。界面类型用于确定当前单据的界面形式,依据UI工厂的界面类型确定,后面将详细介绍UI工厂。功能建模-模板介绍NC开发过程的主线:模型-模板-模式模型,建模过程产生的业务模型和数据模型,支撑后继的整个开发过程。模板,可以看成一个控件,提供了复杂的功能但使用起来却很简单。模式,即UI模式化,也是前面提到的UI工厂。它提供了进行Swing的界面开发的一套开发模式,对各个功能进行了拆分,可以依据相应模式进行快速的单据界面开发。NC的功能建模过程依赖UAP的模板和UI模式化,通过模板来定制单据的界面展现、查询定制以及打印输出格式,通过产生UI模式化的代码来组织相应模板并进行界面的呈现。功能建模-模板介绍(续)NC的模板都是通过模板设计器进行模板信息的定义,通过模板分配指定到特定用户群和节点,其使用已经通过UI模式化进行封装。NC的模板都分为系统模板和自定义模板。通过NC功能建模开发环境创建的模板都是系统模板。实施或二次开发人员可以根据系统模板生成自定义模板,自定义模板可以对相应的系统模板进行个性化定制。模板的权限控制通过模板分配完成。模板分配将制定模板分配到某个节点,也可以同时指定特定的用户和角色才有权使用。通过:客户化/模板管理/模板分配节点进行。NC功能建模工具集成了所有模板的设计器,并在节点发布时完成了模板分配的过程。NC功能建模解脱了原有模板对节点号的依赖,使其完全独立存在。功能建模-单据模板开发向导中第二个步骤是建立单据模板,上图为向导中的单据模板设计器。单据模板在NC开发中占有非常重要的地位,产品中的绝大部分节点都是通过单据模板来定制展现的。单据模板用于定义整个单据的展现形式,分为表头、表体和表尾三个区域。设计者将相应的组件实体拖拽到相应的区域即可。编辑器的元数据部分显示的是当前单据模板所依据的业务组件的实体树结构。功能建模-单据模板(续)通过对关联实体任意属性的简单拖拽,可以实现对相应属性的关联查询。很大程度上简化了原有装载公式的关联表查询。对于对其他实体的关联引用属性,在单据模板中自动转化成参照类型,在业务建模时设置的参照将作为该控件的默认参照,可以在设计器中进行修改。编辑区的每个控件是本单据在进行界面展现时将要呈现的控件形式。在编辑区选择某个属性控件后可以在右下方的属性编辑区进行属性编辑。可以设置其可见性、是否必输项、参照信息等属性。对于某个特定项目的操作,可以通过选择项目右键操作,将出现上面左图的菜单;对于整个单据区域比如表头或表体,可以选择整个区域,通过右键出现上面右图的菜单,可以进行如项目排序等操作。功能建模-查询模板向导第三个步骤是进行查询模板的设置。查询模板在单据进行查询时定制查询条件。上图为查询模板的设计器。设计器上方部分为基本信息设置,其中所关联的元数据组件不能修改。下方为属性设置,选择用户可以使用定制查询条件的属性字段拖拽到右边区域。对右边字段可以进行属性设置,比如是否锁定、默认值等。功能建模-查询模板(续)上面两图为查询模板在使用时的展现形式。主要有两个编辑区:普通和高级。普通区的每个条件之间是AND的关系,可以用于比较简单条件的定制;高级区通过对树形结构的操作实现条件语句的定义,每个节点是一个查询条件子句,可以通过对其父节点(AND、OR关系节点)右键操作进行“与”“或”的转换。本树支持拖拽操作。点击“确定”按钮将生成查询条件,UI模式化代码会根据该条件实现后台数据查询和前台界面展现。对于常用的查询条件可以通过保存操作放到收藏夹中。将被引用实体的任意属性作为查询条件,可以很方便的实现跨表的查询。比如将领款人对应的人员实体的身份证号码作为查询条件,那么可以查询到对应身份证号人员所有的领款信息。功能建模-打印模板向导的第四个步骤是进行打印模板的设计,上图为打印模板设计器。最上方为对打印模板设计器进行操作的菜单和工具栏。打印模板用于定制单据进行打印输出时的界面格式。打印模板设计器核心区域是类似Excel的二维编辑区,单元格可以进行拆分和合并。也可以通过右键菜单进行单元格的个性设置,比如:边框、颜色、字体等信息。通过菜单设置/打印场景设置可以进行打印输出的分页设置,系统提供了五种分页场景:普通、强制分页、凭证、卡片、工资条,其效果都有详细说明。功能建模-打印模板(续)打印模板的运行原理主要是通过对一些变量进行位置布局,在运行时再将变量的真实值进行替换。打印模板的变量主要来自三部分:所依赖的业务组件实体属性、自定义的变量以及系统变量。其中元数据属性是主要来源。自定义变量可以通过菜单“设置/自定义变量设置”来定义,自定义变量可以对已有的变量进行必要的公式加工处理。系统变量是工具内置的常用信息。实体中关联引用的其他实体的任意属性也可以作为打印变量进行布局设置,这样可以很方便的进行关联信息的显示,但是此处要求该关联显示的属性也必须在对应的单据模板存在。功能建模-打印模板(续)上图是单据模板的打印预览效果。通过点击单据上“打印”菜单出现。预览界面可以进行缩放,也可以选择预览的页码。可以通过第二个工具项进行打印页面的设置,如:纸张、页边距、起始页码等信息。在预览界面上可以选择进行Excel输出和打印机输出,同时预览界面是一种屏幕输出方式。通过代码的调用还可以实现pdf和html的输出方式。功能建模-自定义按钮设置向导的第五个步骤是进行自定义按钮的设置,上图为设计界面。自定义按钮是相对于UI模式化中的系统按钮而言,UI模式化将在后面详细介绍。自定义按钮的按钮编号大于100,按钮名称为按钮放置在单据上时显示值,按钮编码为一个符合java变量命名规则的字母数字组合。是否为虚按钮标识该按钮是否允许有子按钮。自定义按钮和系统按钮一样,可以用于UI组装之中。功能建模-UI组装开发向导的第六个步骤是UI组装界面。这也是设计业务组件的页面展现的界面。在NC功能建模中,将单据的UI看成是对已有资源的组装过程。在UI中使用之前创建的所有资源。在UI组装界面主要分为四个区域:基本信息设置、单据按钮选择、模板设置和校验规则的设置。基本信息设置:设置界面的整体信息,在向导开发中有部分信息已经在第一个步骤进行了设置,此处为不可编辑的状态。其中UI类名为将要生成的UI模式化代码中的UI类的全名称。按钮选择功能实现单据中使用按钮的选择,可以通过拖拽或选择后点击移动菜单,另外,系统也提供了对预置按钮功能,针对当前的界面类型和单据类型提供了常用的预置按钮方案。功能建模-UI组装(续)UI组装中的模板设置是很重要的功能。它确定整个UI界面的主要呈现和功能。在一个UI界面中可以存在多个相同类型的模板。节点标识属性用于区分同一个界面中的多个相同类型的模板。单据模板用于确定当前界面的展现形式,如果存在多个单据模板,需要在按钮选择时选择名为“子按钮”的按钮,该按钮将自动按照当前的节点标识个数生成相应的子按钮,通过对不同子按钮的选择,实现对当前整个环境节点标识的切换。节点标识是针对整张单据而言的,因此子按钮的切换导致当前环境NodeKey的切换,同时也导致了当前单据的查询模板和打印模板所对应的NodeKey的切换。鉴于以上原因,需要将匹配出现的单据、查询、打印模板设置为相同的节点标识。由于单据上可以在多个打印模板间选择使用哪个打印模板,所以存在多个打印模板时可以不设置节点标识。功能建模-UI组装(续)左图为UI组装界面的校验规则配置区,校验规则主要利用UI模式化提供的校验框架。通过界面配置的校验规则都是前台校验规则,后台校验需要对生成的代码进行特定需求的修改。本配置区域主要完成非空校验和唯一性校验的配置。非空校验确定该单据的表体是否允许不录入任何数据。唯一性校验确定表体的那些属性在整张单据中是不允许重复的。比如在选课系统中要求每个学员选择的课程是不允许重复的,则可以设置课程号属性不允许重复。右图为唯一性规则设置的弹出对话框,通过它选择特定子实体的特定属性或属性组合不允许为空。功能建模-UI发布向导的第七步也是最后一个步骤是进行UI发布。上图即为UI发布的界面。NC产品是通过一个功能节点树来提供业务功能的。NC的产品体系整体上分为:产品/模块/功能节点三个层次,模块又可以包含子模块。其实产品和模块没有太明确的定义区分,只是有一些约定俗成的理解。比如“供应链”“财务会计”等是一些产品,而“基本档案”“采购管理”等是一些模块。功能节点是产品树中最底层的叶子节点,这些节点提供真实具体的业务功能。模块是NC进行安装和部署的基本单位。此处的模块可以与业务建模和功能建模的模块同样理解。功能建模-UI发布(续)UI发布之后将出现在NC产品树上,作为一个功能节点出现。在节点发布时,需要注册当前单据拥有的按钮,功能建模工具默认当前单据的所有按钮都将被发布,如果修改,需要选择更改发布按钮出现左图的对话框进行修改。此处的按钮注册在产品中仅用于权限控制。NC功能节点注册也提供了对参数进行设置的功能。通过注册节点级别的参数,可以在节点对应的UI中进行必要的逻辑处理,将编码级别的逻辑提升到配置级别。参数值可以通过ToftPanel的getParameter(Stringname)获取。通过将UI发布为“轻量级WEB节点”,可以在生成代码时生成轻量化框架代码。实现轻、重量级的统一。功能建模-代码生成完成的UI经过发布之后,在资源管理页签的“已发布节点”的节点下将出现该发布后的UI节点。对已经发布的节点可以生成必要的运行代码,当前生成的主要有普通界面类型的ToftPanel代码、其他重量级类型(卡片、列表、管理、拆分管理型)界面的UI模式化代码以及轻量化节点的代码。选中节点右键菜单选择“生成代码到本地”即可以出现生成代码的对话框(右图)。右图为生成UI模式化代码的对话框,分为VO和客户端代码两部分。VO即值对象,是NC开发中非常重要的数据装载和传输的载体。客户端代码此处为UI模式化代码,是根据UI模式化的代码框架要求,生成必要的UI、EventHandler、Controller、Delegator等代码。代码生成之后可以通过右键菜单的”预览该节点”预览运行效果,也可以在NC的产品树中查看该节点。UI模式化及代码结构将在下面详细介绍。功能建模-流程配置相关单据类型的设置对于需要走流程的单据需要设置单据类型及相关的其他信息。单据类型是对走流程单据的分类,不同单据通过所对应的单据类型进行区分。单据类型是对对应的类型单据的总体属性描述。单据类型在系统中属于一个系统类型。系统类型来自会计平台,主要用于区分不同的模块。在NC集成开发环境中把这些信息进行了屏蔽,在创建单据类型之前,已经根据当前组件所属模块进行了系统类型是否存在的判断,如果不存在,会创建对应的系统类型。这样便将系统类型、模块和组件联系成了一个整体。单据类型代码长度不超过四位。单据类型是流程平台很重要的概念。流程平台中的很多资源都是围绕单据类型来准备的。对于走流程的单据,在UI组装时不选择“是否基本档案”,会自动出现单据类型的设置框,在弹出的参照中选择当前UI对应的单据类型。在集成开发工具中进行单据类型设置时,节点编号属性可以不设置,在该单据类型对应的UI进行发布时,系统会自动将所发布到的节点号进行反填。功能建模-流程配置相关(续)单据动作设置单据动作是对单据业务处理行为的抽象,具有可订制的动作脚本。业务单据通过单据动作与流程平台进行交互,从而驱动流程的流转。单据动作通常对应单据界面上的菜单。UI模式化已经内置了业务单据的常用菜单与单据动作的对应关系,完成了缺省的动作调用。集成开发环境提供了单据默认动作设置的对话框,里面内置了单据默认的几个单据动作,可以通过选择设置当前单据类型对应的单据动作,同时该操作也完成了单据动作对应的单据脚本的设置。功能建模-流程配置相关(续)单据动作脚本设置单据动作脚本是单据动作真正执行时的代码逻辑。单据动作脚本是通过伪编码的方式,不是通常意义的java代码。一般不需要修改。功能建模-流程配置相关(续)单据交换设置单据交换用于满足单据类型之间相互转换的需要。设置单据类型之间的相互转换的规则。单据交换在前后台都可以发生,并可以在交换后进行特殊的业务处理。功能建模-流程配置相关(续)单据号规则设置在ERP系统中,存在着大量的业务数据,需要对这些数据进行唯一标识,单据号就起到这个作用。单据号的产生需要定义单据号规则。在单据号规则定义中,可以把当前单据的单据类型、制单日期以及流水号等信息设置进去。在单据号规则定义中也可以使用当前单据中存在的对象进行定义。功能建模开发环境提供了对单据类型相关的规则对象的定义。左图即为单据号对象设置对话框。待选对象中列出了当前业务组件的主实体中关联引用的属性及对应的关联对象。这些对象可以作为被选的规则号对象。在此处设置完成被选对象后,就可以在右图的单据号规则设置界面中选择对象作为单据号的一部分。编码范围是指单据号按集团统一编码还是个公司自成体系还是按照对象统一编码。功能建模-参照介绍参照从界面展现的形式来区分,主要分为三种:表型参照、树型参照和树表型参照。表型参照:展现形式为表格,主要用于平面型数据库表的数据展现。AbstractRefModel树型参照:展现形式为树型结构,树结构又分为编码树和PK树,主要展现有树型层次关系的数据库表数据。AbstractRefTreeModel树表型参照:展现形式为左树右表型。主要展现有分类关系的大量数据。左树展现分类信息,选择分类信息后在右表中展现该分类下的具体记录信息。AbstractRefGridTreeModel功能建模-参照创建需要作为参照的实体必须实现dbinterface接口。左图为表型参照的构造界面。上部为基本信息设置,主要是参照名称和模型类名。参照通过参照名称进行调用。中部定义参照的查询条件,不设置则为全部数据。下部设置参照界面可以显示的属性。右图为参照节点进行代码生成和发布的对话框。通过此功能可以生成参照模型代码,更重要的是可以实现参照的发布,发布之后的参照才能在系统中使用。参照设置完成并发布后,需要在业务建模环境中对对应实体进行参照设置。只有在业务建模环境中进行参照设置的实体,才能在该实体被其他实体关联引用后自动显示设置参照类型。树型和树表型参照的构建与表型参照类似。