Coeus酷易中间件开发指南.docx
Coeus酷易中间件开发指南 在 BPM 协同平台中,可运用的程序接口分为三部分 一、系统接口 系统接口指程序运行中已经存在的一些可调用类的方法。1、Ctop5(com.ctop.Ctop5)Ctop5 类是在服务器启动时创建的。该类中包含了系统中的一些基本信息(如:系统路径、系统语言、系统名称等等),是支撑系统运行的基本类,在以后的界面构建中,将会大量运用到该类。该类在运用时,尽量不要运用 Ctop5 ctop5 = new Ctop5()干脆初始化它。而应当运用Ctop5 ctop5 = Ctop5.getInstance(application)。2、SimpleUser SimpleUser 类在用户登陆后产生,存在在服务器 session 中。该类包含了一些用户的基本信息(如:当前登陆用户的用户 id、当前登陆用户的用户名、当前登陆用户的用户风格等)。该类可运用 changeUser 方法得到当前的登陆用户的 User 类。User user = simpleUser.changeUser(); User 为描述一个用户的类,User 类中记录着一个用户的具体信息(如:部门、角色、性别等等,具体见系统 api 说明)在系统中调用该类时,可以运用 SimpleUser simpleUser = SystemSession.getSimpleUser(session); 得到它3、MenuTruss、SimpleMenu 和 SimplePrivilegeMenuTruss 、SimpleMenu、SimplePrivilege 是用来描述当前登陆用户的菜单和权限的类。由于系统中存在着大量的菜单,以及每个菜单数据的高操作率。为了减轻服务器的负担,所以在用户登陆时,系统将一次性取出登陆用户所拥有的菜单,及每个菜单的操作权限。存储在 MenuTruss 、SimpleMenu 和SimplePrivilege 类中,供系统中程序调用运用。MenuTruss 可通过MenuTruss menuTruss = SystemSession.getSimpleMenu();得到它。而 SimpleMenu、SimplePrivilege 可通过 menuTruss 中的方法得到。(具体请见系统 api 说明)二、构建软件界面应用接口 构建软件界面应用接口指通过系统供应的应用接口,可以快速的构建出软件的界面。界面方面主要包括表单构件、数据列表构件、按钮构件、树型菜单构件等。整个界面应用接口构架如下图所示: 1、按钮 1.1、按钮构建按钮主要由两个类构成 ButtonContainer、Button Button:构建按钮详细的类 ButtonContainer:按钮容器,按钮不能单独存在,必需加入到按钮容器中才可以正式运用。构建一个按钮时,必需指定按钮的名称、标题、单击事务、类型、链接、宽度、高度等等(具体请见 api 说明)例一、 lt;% page contentType=text/html;charset=gb2312%gt;lt;% page import=com.ctop.Ctop5 %gt; lt;% page import=com.ctop.util.SystemSession %gt; lt;% page import=com.ctop.system.domain.SimpleUser %gt; lt;% page import=com.ctop.frame.prop.ButtonContainer %gt; lt;% page import=com.ctop.frame.prop.Button %gt;lt;% Ctop5 ctop5 = Ctop5.getInstance(application);SimpleUser simpleUser = SystemSession.getSimpleUser(session);ButtonContainer buttonContainer = new ButtonContainer();buttonContainer.setCtop5(ctop5);buttonContainer.setSimpleUser(simpleUser);buttonContainer.setButtonContainerMode(ButtonContainer.FUNCTIONKEY);Button button = new Button(Button.NEWKEY);button.setTitle(测试);指定按钮标题button.setOnClickEvent(alert("这是按钮测试");指定按钮事务 buttonContainer.addButton(button); %gt; lt;htmlgt; lt;headgt;lt;titlegt;lt;%=ctop5.getSysName()%gt;lt;/titlegt; lt;link rel=stylesheet type=text/css href=./style/css/main.cssgt; lt;link rel=stylesheet type=text/css href=./style/lt;%=simpleUser.getStyle()%gt;/css/button.cssgt; lt;bodygt;lt;%=buttonContainer.createPageCode()%gt; lt;/bodygt; lt;/htmlgt; 以上代码运行后的结果为:假如没有指定按钮图片,按钮上的图片为默认图片。如上图。在 Button 中,系统默认已定义了一些(22 种)按钮,如:阅读按钮(BROWSEKEY)、新增按钮(ADDKEY)、修改按钮(MODIFYKEY)等等(具体请见 api 说明)。可以通过如下方法构建。例二、 lt;% page contentType=text/html;charset=gb2312%gt;lt;% page import=com.ctop.Ctop5 %gt; lt;% page import=com.ctop.util.SystemSession %gt; lt;% page import=com.ctop.system.domain.SimpleUser %gt; lt;% page import=com.ctop.frame.prop.ButtonContainer %gt; lt;% page import=com.ctop.frame.prop.Button %gt;lt;%Ctop5 ctop5 = Ctop5.getInstance(application); SimpleUser simpleUser = SystemSession.getSimpleUser(session);ButtonContainer buttonContainer = new ButtonContainer();buttonContainer.setCtop5(ctop5);buttonContainer.setSimpleUser(simpleUser);buttonContainer.setButtonContainerMode(ButtonContainer.FUNCTIONKEY); Button button1 = new Button(Button.BROWSEKEY);Button button2 = new Button(Button.ADDKEY);Button button3 = new Button(Button.MODIFYKEY);Button button4 = new Button(Button.SEARCHKEY);Button button5 = new Button(Button.CLOSEKEY);buttonContainer.addButton(button1).addButton(button2) .addButton(button3).addButton(button4).addButton(button5); %gt; lt;htmlgt; lt;headgt; lt;titlegt;lt;%=ctop5.getSysName()%gt;lt;/titlegt; lt;link rel=stylesheet type=text/css href=./style/css/main.cssgt; lt;link rel=stylesheet type=text/css href=./style/lt;%=simpleUser.getStyle()%gt;/css/button.cssgt; lt;bodygt;lt;%=buttonContainer.createPageCode()%gt; lt;/bodygt; lt;/htmlgt; 以上代码运行后的结果为系统中的按钮样式分为两中,一中为上图所示的样式,另一中为一般按钮样式。把例二中的代码稍做修改。把 buttonContainer.setButtonContainerMode(ButtonContainer.FUNCTIONKEY); 改为 buttonContainer.setButtonContainerMode(ButtonContainer. CONTROLKEY); 运行的结果将如下所示:1.2、按钮的状态按钮的状态可分为操作,隐藏,失效三中状态,下面的代码对这三种状态进行编写例三、 lt;% page contentType=text/html;charset=gb2312%gt;lt;% page import=com.ctop.Ctop5 %gt; lt;% page import=com.ctop.util.SystemSession %gt;lt;% page import=com.ctop.system.domain.SimpleUser %gt; lt;% page import=com.ctop.frame.prop.ButtonContainer %gt; lt;% page import=com.ctop.frame.prop.Button %gt; lt;%Ctop5 ctop5 = Ctop5.getInstance(application);SimpleUser simpleUser = SystemSession.getSimpleUser(session);ButtonContainer buttonContainer = new ButtonContainer();buttonContainer.setCtop5(ctop5);buttonContainer.setSimpleUser(simpleUser);buttonContainer.setButtonContainerMode(ButtonContainer.FUNCTIONKEY); Button button1 = new Button(Button.BROWSEKEY);button1.setState(Button.S_MANAGE_BUTTON);Button button2 = new Button(Button.ADDKEY);button2.setState(Button.S_HIDE_BUTTON); Button button3 = new Button(Button.MODIFYKEY);button3.setState(Button.S_DISABLE_BUTTON);buttonContainer.addButton(button1).addButton(button2).addButton(button3); %gt; lt;htmlgt; lt;headgt; lt;titlegt;lt;%=ctop5.getSysName()%gt;lt;/titlegt; lt;link rel=stylesheet type=text/css href=./style/css/main.cssgt; lt;link rel=stylesheet type=text/css href=./style/lt;%=simpleUser.getStyle()%gt;/css/button.cssgt; lt;bodygt;lt;%=buttonContainer.createPageCode()%gt; lt;/bodygt; lt;/htmlgt;运行结果如下图所示: 在上图中,第一个按钮为操作状态,可以正常对它进行操作; 其次个按钮为失效状态,只可以查看,不行以运用; 第三个状态为隐藏状态,那么它将不在界面上显示。 1.3、按钮的权限在系统中,按钮可以和系统中的详细菜单权限关联,每个按钮都具有权限属性,如增加按钮属于权限中的操作权,而阅读按钮属于权限中的阅读权。在程序中,可以通过 button.setPrivilege()方法来对按钮所属的权限进行再次设置。在初始化按钮容器的时候,可以通过 buttonContainer.setSimpleMenu()方法来设置当前按钮所在的菜单,把菜单和按钮关联起来。这样在系统运行中,假如当前的用户在设置的菜单中不拥有操作权限,那么属于操作权限的按钮将不会显示出来。 2、树型菜单2.1、树型菜单的构建树型菜单是通过 Tree、TreeNode 两个类构建出来的。Tree:表示整个菜单,相当于一棵树。TreeNode:表示菜单中的各个节点,相当于一棵树的树叉。在调用时,首先初始化整个菜单的各个节点 TreeNode。TreeNode tn = new TreeNode();tn.setNodeCode(); tn.setParentCode(); tn.setNodeTitle();最终把 TreeNode 加入到 Tree 中即可。例四、 lt;% page contentType=text/html;charset=gb2312%gt;lt;% page import=com.ctop.Ctop5 %gt; lt;% page import=com.ctop.util.TreeNode %gt; lt;% page import=com.ctop.util.Tree %gt;lt;% Ctop5 ctop5 = Ctop5.getInstance(application); Tree tree = new Tree(ctop5);TreeNode tn = new TreeNode(); tn.setNodeCode(1); tn.setParentCode(-1); tn.setNodeTitle(中国); tree.add(tn); TreeNode tn1 = new TreeNode(); tn1.setNodeCode(2); tn1.setParentCode(1); tn1.setNodeTitle(广东); tree.add(tn1);TreeNode tn2 = new TreeNode(); tn2.setNodeCode(3); tn2.setParentCode(1); tn2.setNodeTitle(上海); tree.add(tn2);TreeNode tn3 = new TreeNode(); tn3.setNodeCode(4); tn3.setParentCode(2); tn3.setNodeTitle(广州); tree.add(tn3);%gt; lt;htmlgt; lt;headgt; lt;titlegt;lt;%=ctop5.getSysName()%gt;lt;/titlegt; lt;link rel=stylesheet type=text/css href=./style/css/main.cssgt; lt;/headgt; lt;bodygt; lt;%=tree.growTree()%gt; lt;/bodygt; lt;/htmlgt; 运行结果如下图所示:假如须要设置节点的链接、图片等其他属性时,可运用下列的方法:(具体请见 api 说明)setNodeCode:设置节点编号 setParentCode:设置节点的父节点编号 setNodeTitle:设置节点标题 setOnClickEvent:设置节点的单击事务 setOnDblclickEvent:设置节点的双击事务 setPrompt:设置节点文字提示setTarget:设置目标 setImageAddress:设置节点图片地址 setOpenImageAddress:设置节点打开图片地址3、数据列表构建一个数据列表窗体由 DataGrid、DataField 组成。DataGrid:整个窗体的说明类。DataField:表示窗体中的一列数据DataField 继承于 ArrayList。可以通过 add()方法加入一列中拥有的数据 假如一个数据列表窗体中拥有多列(大都拥有多列)那么每列中的数据总数必需相同,否则在运行时会抛出 FieldDifferException 错误。DataField 通过DataField DataField = new DataField(fieldName,width)创建,在 DataField 创建的时候须要传入两个参数:fieldname:列标题 width:该列在窗体中的宽度。width 可以为空,当 width 为空时,将会自动适应大小 DataField 支持 javascript 形式的排序。可以通过 setSort()的方法设定一列的数据是否排序。在确定排序后,通过 setSortType()方法确定排序的类型。默认的排序类型有字母排序、数字排序、日期排序、中文拼音排序、中文笔画排序。以下代码可以创建出一列根据中文笔画排列的数据:DataField titles = new DataField(标题, null); titles.setSort(true); titles.setSortType(DataField.SORT_CNBH); titles.add(数据 1); titles.add(数据 2); titles.add(数据 3); titles.add(数据 4);DataField 同按钮一样不能单独的存在,必需加入到窗体 DataGrid 中才可以运行。DataGrid 通过DataGrid dataGrid = new DataGrid(ctop5, simpleUser.getStyle();创建。在创建完成后,运用 addDataField 加入 DataField 例五、 lt;% page contentType=text/html;charset=gb2312%gt;lt;% page import=com.ctop.Ctop5 %gt; lt;% page import=com.ctop.util.SystemSession %gt; lt;% page import=com.ctop.system.domain.SimpleUser %gt; lt;% page import=com.ctop.frame.data.DataGrid %gt; lt;% page import=com.ctop.frame.data.DataField %gt; lt;%Ctop5 ctop5 = Ctop5.getInstance(application);SimpleUser simpleUser = SystemSession.getSimpleUser(session);DataGrid dataGrid = new DataGrid(ctop5, simpleUser.getStyle();DataField titles = new DataField(标题, null);titles.setSort(true); titles.setSortType(DataField.SORT_CNBH);titles.add(一);titles.add(二.