华丹CHARISMA平台开发手册.docx
- 文档编号:30617276
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:27
- 大小:186.03KB
华丹CHARISMA平台开发手册.docx
《华丹CHARISMA平台开发手册.docx》由会员分享,可在线阅读,更多相关《华丹CHARISMA平台开发手册.docx(27页珍藏版)》请在冰豆网上搜索。
华丹CHARISMA平台开发手册
第1章前言2
第2章开发环境配置2
2.1安装CHARISMA平台2
2.2配置业务开发环境2
第3章添加自己的JSP页面2
3.1目录结构2
3.2JSP页面要求3
3.2.1处理session失效重登录3
3.2.2处理显示消息3
3.2.3处理访问控制3
3.2.4JSP页面示例4
第4章业务模块开发5
4.1表现逻辑5
4.2MVC资源5
4.3调度层5
4.4业务层6
4.4.1简述6
4.4.2数据访问业务逻辑编写6
4.4.2.1数据表映射类编写6
4.4.2.2业务逻辑类编写8
4.4.2.2.1简单数据操作方法编写9
4.4.2.2.2复杂数据操作方法编写10
4.4.2.2.3嵌套事物操作方法编写10
第5章各类业务模块实现11
5.1查询、统计模块11
5.2数据维护类模块11
5.3特殊业务模块15
第6章业务处理模块举例15
6.1表现逻辑16
6.2MVC资源16
6.3调度层17
6.4业务逻辑18
第7章其它18
7.1扩展登录操作18
第8章注意事项19
第1章
前言
在CHARISMA平台上可以构建任意复杂的业务系统,因为CHARISMA平台采用了完全开放的体系结构,用户可以应用一切J2EE技术制作业务模块,可以对CHARISMA平台做任意的功能扩展。
在阅读本手册前,请用户参考“CHARISMA平台使用手册”,本手册主要涉及的是如何在CHARISMA平台中制作涉及复杂业务逻辑的模块,即需要编码实现。
第2章开发环境配置
2.1安装CHARISMA平台
请按照“CHARISMA平台安装指导”中的说明安装。
安装时,请以目录方式发布,这样可以方便添加自己的class、jsp及其它页面资源。
而且这样方便热发布。
2.2配置业务开发环境
分别建立两个工程:
WEB层应用及业务层应用。
WEB层应用主要完成一些页面用到的Bean及调度层Bean。
业务层应用完成业务逻辑模块的编写。
业务逻辑模块\一定要与WEB层应用分开,不能混在一起,建立明显的三层体系结构。
WEB层应用需要将charismaSys.jar包及charismaWeb.jar两个包加载至CLASSPATH中。
这两个包均在charisma.war包中的web-inf\lib目录下。
开发业务层应用时,需要将charismaSys.jar包加载至CLASSPATH中。
开发好的class需要发布在Web应用的web-inf\classes\目录下,或打包放在Web应用的web-inf\lib\目录下。
第3章添加自己的JSP页面
注意WEB应用要以目录方式发布,不要以war包发布。
在CHARISMA平台中,可以任意添加自己的JSP,也可以添加图片、JS、CSS等资源。
3.1目录结构
建义在web应用中,建立自己的目录名,如myapp目录,将自己开发的JSP页面、图片、JS、CSS等资源都放在这个目录下,方便以后CHARISMA平台升级。
典型目录结构如下:
web应用根目录
charisma目录
myapp目录
jscript目录
css目录
image目录
其它jsp目录。
logon.jsp
index.jsp
header.jsp
modNav.jsp
…
3.2JSP页面要求
CHARISMA平台对JSP页面没有特殊要求,但可以引用CHARISMA平台中的功能。
3.2.1处理session失效重登录
在JSP中头部加入<%@includefile="/charisma/includes/checkUserForward.jsp"%>.即可。
3.2.2处理显示消息
可以显示MVC调度类中的消息。
实现步骤:
Ø在JSP中的
间加入:<%@includefile="/charisma/includes/htmlHeader.jsp"%>
Ø然后在
中加入onload事件,如:showMsg();"> Ø在
3.2.3处理访问控制
每个处理业务的JSP页面都要进行访问控制,可以采用平台统一的授权来处理。
关现步骤:
打开模块:
系统控制中心>>系统资源管理>>权限资源管理。
注册一个权限,如子系统是myapp,权限标识是1。
然后在JSP页面中加上如下代码:
AppSessionappSession=JspUtil.createAppSession(request);
SecurityProxyproxy=newSecurityProxy(appSession);
if(proxy.hasPermission(appSession.getCurUserID(),"myapp",1))
thrownewCharismaException(CharismaException.CLIENT_INFO,"您没有权限访问该资源,请与系统管理员联系!
");
其中,proxy.hasPermission(appSession.getCurUserID(),"myapp",1)中的myapp对应注册权限子系统,1对应权限标识。
3.2.4JSP页面示例
以下是一个典型的JSP示例。
<%@pagecontentType="text/html;charset=GBK"%>
<%@includefile="/charisma/includes/jspHeader.jsp"%>
<%@pageimport="charisma.sys.util.SecurityProxy"%>
<%@includefile="/charisma/includes/checkUserForward.jsp"%>
<%
AppSessionappSession=JspUtil.createAppSession(request);
SecurityProxyproxy=newSecurityProxy(appSession);
if(proxy.hasPermission(appSession.getCurUserID(),"myapp",1))
thrownewCharismaException(CharismaException.CLIENT_INFO,"您没有权限访问该资源,请与系统管理员联系!
");
StringcontextRoot=JspUtil.getContextRoot();
%>
<%@includefile="/charisma/includes/htmlHeader.jsp"%>
showMsg();">
includepage="<%=JspUtil.getFooterURL()%>"/> 第4章业务模块开发 由于CHARISMA平台采用了先进的MVC的体系结构,因此,开发业务模块主要有四层,即表现逻辑、MVC资源、调度层及业务逻辑层的开发。 4.1表现逻辑 表现逻辑即页面展现。 对于MIS,ERP等管理系统,一般来说,显示方式主要有各种查询、统计报表及数据的录入、更新、删除等页面,这些页面在CHARISMA平台中都可以非常方便定制出来,无需进行开发。 特殊的页面,可以自己定制,可以用J2EE支持的所有模式,如常规的jsp,xml+xsl等。 在开发页面资源时,只涉及数据的展现及数据的录入,对于业务逻辑处理,要采用MVC的方式进行处理。 在页面中,如果需要处理业务,只需新建一个MVC资源,将页面中form的action属性值、的href属性值、或其它URL设置为对应的MVC资源的URL即可。 这样提交后,就将页面中的数据提交到对应的MVC调度层处理。 MVC的URL格式为: 子系统标识.MVC标识.do? URL参数,如demo.submitApply.do? applyNo=1。 4.2MVC资源 MVC资源的设置请参考“CHARISMA平台使用手册”。 4.3调度层 调度层介于页面表现逻辑与业务逻辑之间,起中间调度作用。 主要接受与处理页面(request)参数、调用业务逻辑,以及根据业务逻辑的返回结果返回相应的MVC结果。 调度层的编写比较简单,规范如下: 1、继承charimsa.web.mvc.AbstractAction类; 2、具有无参数的构造函数; 3、具有方法: publiccharimsa.web.mvc.ActionResultperform(HttpServletRequestrequest,HttpServletResponseresponse,AppSessionappSession)throwscharimsa.sys.exception.Chariscexception。 其中charimsa.web.mvc.ActionResult及charimsa.sys.exception.Chariscexception的含义请参考相应的APIDoc。 各参数含义如下: ØparamrequestHttpServletRequest实例。 ØparamresponseHttpServletResponse实例。 ØappSession当前应用会话。 具体参见“业务模块开发举例”。 4.4业务层 4.4.1简述 业务层即业务逻辑处理层。 业务逻辑类可以用JavaBean,也可以用EJB(SessionEJB)。 如果采用EJB,每个EJB均需要通过模块: 系统控制中心>>系统资源维护>>EJB信息维护,来注册。 CHARISMA平台为业务逻辑层提供了大量的API,特别是数据库控制引擎封装了所有的数据库操作,简化了数据库操作相关的业务逻辑方法的编写,在开发时基本上无需编写SQL语句。 详细请参考CHARISMA平台的JavaAPIDoc。 在编写有关数据库操作的业务逻辑时,也可以不用CHARISMA平台提供的数据库控制引擎,而采用EntityEJB、Hibernate、或JDO等技术,只是需要自己设置数据库连接,以及日志处理等。 业务逻辑类必须继承类charimsa.sys.util.BusiBase类。 4.4.2数据访问业务逻辑编写 以下主要介绍如何采用CHARISMA平台的数据库控制引擎来编写业务逻辑。 数据库控制引擎对外开放的类主要有3个: charimsa.sys.db.DBMng、charimsa.sys.db.SQLObj以及charimsa.sys.db.DBOpUtil。 其中前两个类是核心类,可以实现一切数据库操作,DBOpUtil是为了简化,对常用的数据库操作进行再封装。 4.4.2.1数据表映射类编写 通过数据库控制引擎访问数据库,首先必须对所涉及的数据表(或视图)编写相应的数据表映射类(或视图映射类,以下统称数据表映射类)。 数据表映射类即一般的数据类,主要由对应数据表字段的属性组成。 注意需要继承类charimsa.sys.db.TableBean,并实现接口: java.io.Serializable,如publicclassST_SYSUSERextendsTableBeanimplementsSerializable。 表类名与数据表名可以不相同,属性名与字段名也可以相同,按TableBean规范设定,具体参照JAVADOCAPI。 要求所有字段名对应的属性均为public。 数据表映射类可以通过模块: 系统控制中心>>代码生成管理>>数据表映射类生成向导生成代码。 例如: packagecharisma.sysmng.tabbean; importjava.io.Serializable; importcharisma.sys.db.TableBean; /** * Description: 数据表ST_SYSUSER映射类
*/
publicclassST_SYSUSERextendsTableBeanimplementsSerializable
{
//如果类名与数据列名不同。
/*
publicStringtableName()
{
return"数据表名";
}
*/
//如果属性名与列名不同,则按如下处理
/*
privatestaticfinalMapmap=newHashMap();
static
{
map.put("propName","colName");
.....
//不必全部列出,只列出不相同的即可。
}
publicMappropColMap()
{
returnthis.map;
}
*/
/**
*返回主键属性集。
*@return主键属性集。
*/
publicStringkeyProps()
{
return"USERID";
}
/**系统用户标识*/
publicStringUSERID=null;
/**系统用户密码*/
publicStringPASSWD=null;
/**用户名*/
publicStringUSERNAME=null;
/**所属区域*/
publicStringREGION=null;
/**所属工作组*/
publicStringWORKGROUP=null;
/**系统用户级别*/
publicIntegerGRADE=null;
/**系统用户部门*/
publicStringDEPT=null;
/**职位*/
publicIntegerPOST=null;
/**状态*/
publicIntegerUSERSTAT=null;
/**EMAIL*/
publicStringEMAIL=null;
/**用于发送短信*/
publicStringMOBILE=null;
/**备注*/
publicStringREMARK=null;
/**构造函数*/
publicST_SYSUSER()
{
}
}
4.4.2.2业务逻辑类编写
业务逻辑类可以是普通Java类,也可以是SessionEJB,但都必须继承类charimsa.sys.bean.BusiBase。
SessionEJB必须是stateful类型,且BMT,即Bean管理事物。
建议用普通Java类实现,现在比较少用EJB。
4.4.2.2.1简单数据操作方法编写
简单数据操作主要指查询、新增、更新、删除操作,主要通过DBOpUtil类来实现,下面以系统用户管理为例,进行说明:
Ø根据主键查询:
publicST_SYSUSERgetSysUser(StringuserID)throwsChariscexception
{
ST_SYSUSERsysUser=newST_SYSUSER();//数据表类实例
sysUser.USERID=userID;//设定主键值
DBOpUtildbOpUtil=this.newDBOpUtil(Constants.SUBSYS_SYSMNG);//初始化DBOpUtil
return(ST_SYSUSER)dbOpUtil.selectOne(sysUser,"USERID");//返回结果
}
Ø查询一组数据:
publicListgetGroupUsers(intgroup)throwsChariscexception
{
ST_SYSUSERsysUser=newST_SYSUSER();//数据表类实例
sysUser.WORKGROUP=newInteger(group);//设定查询条件
DBOpUtildbOpUtil=this.newDBOpUtil(Constants.SUBSYS_SYSMNG);//初始化DBOpUtil
returndbOpUtil.select(sysUser,null,"REGION,USERID");
}
Ø新增数据
publicintinsertSysUser(ST_SYSUSERsysUser)throwsChariscexception
{
DBOpUtildbOpUtil=this.newDBOpUtil(Constants.SUBSYS_SYSMNG);//初始化DBOpUtil
returndbOpUtil.insertOne(sysUser);
}
Ø更新数据
publicintupdateSysUser(ST_SYSUSERdataObj,ST_SYSUSERcmdObj,String
updateFields)throwsChariscexception
{
DBOpUtildbOpUtil=this.newDBOpUtil(Constants.SUBSYS_SYSMNG);
returndbOpUtil.updateOne(dataObj,cmdObj,updateFields,"USERID");
}
Ø删除数据
publicintdeleteSysUser(StringuserID)throwsChariscexception
{
ST_SYSUSERsysUser=newST_SYSUSER();
sysUser.userID=userID;
DBOpUtildbOpUtil=this.newDBOpUtil(Constants.SUBSYS_SYSMNG);
returndbOpUtil.deleteOne(sysUser);
}
除以上实现方法外,DBOpUtil中还有其它许多方法,可以实现诸如批量更新、批量删除、批量新增等方法。
4.4.2.2.2复杂数据操作方法编写
复杂数据操作方法,主要通过DBMng及SQLObj来完成,通过这两个类可以完成各种数据库操作。
具体用法请参考相应的javaAPIDoc。
建议,如果对应SQL语句特别复杂,可以通过DBMng来直接执行SQL语句,而不通过SQLObj来完成。
可以将系统中所用到的复杂SQL语句集中写在一个类中,从而提高系统的可维护性。
4.4.2.2.3嵌套事物操作方法编写
通过数据库控制引擎,可以实现事务嵌套。
何为事务嵌套,比如说,A类方法aa涉及到事物,且被客户程序调用,B类方法bb也涉及到事物,也被客户程序调用,但方法bb中又调用方法aa,这样就形成了事物嵌套。
通过CHARISMA平台的数据库控制引擎实现事物嵌套的规范如下所示:
publicclassAextendsBusiBase
{
……
publicvoidaa()throwsChariscexception
{
//处理数据库操作的语句
}
……
}
publicclassBextendsBusiBaseimplementsSessionBean
{
……
publicvoidbb()throwsChariscexception
{
DBMngdbMng=newDBMng(this.getAppSession())
try
{
dbMng.beginTran();//必须在connect之前调用
dbMng.connect(this.tranDBMng,Constants.SUBSYS_SYSMNG);
Aclassa=newA(super.getAppSession());
classa.setTranEnv(dbMng);
classa.aa();//调用类A的方法aa.
……//方法bb中其它数据库操作的语句;
dbMmitTran();
}
catch(Exceptione)
{
dbMng.rollbackTran();
if(einstanceofChariscexception)
throw(Chariscexception)e;
thrownewChariscexception(Chariscexception.SYS_ERR,"",e);
}
finally
{
dbMng.disConnect();
}
}
}
其中,B类的方法bb还可以继续被其它类的方法调用,形成多级嵌套。
第5章各类业务模块实现
对于MIS,ERP等系统,大多数的业务模块属于查询、统计、新增、更新、删除等,除此还包括特殊业务模块。
5.1查询、统计模块
对于查询、统计模块,在CHARISMA平台上构建,基本上不必编写代码。
制作方法请参考“CHARISMA平台使用手册”。
5.2数据维护类模块
数据维护类模块指新增、更新、删除、批量新增、批量更新、批量删除类模块。
CHARISMA平台通过数据维护引擎为这类模块提供了非常完美的解决方案。
对于界面层显示,不必进行页面编写,通过平台进行参数定制即可,请参考“CHARISMA使用手册”。
业务逻辑处理,一般的业务逻辑都可以在数据维护资源中,通过关联操作等资源实现即可。
如果需要非常复杂的业务逻辑处理,则可以通过业务扩展来处理。
以下分别进行介绍。
1、新增资源
打开模块:
系统控制中心>>数据维护资源>>新增资源维护,即可打开新增资源维护界面,其更新界面如下所示:
重要数据项说明:
Ø标签提供类:
用户通过继承内定类charimsa.web.dbop.InsTagProvider,重载一些方法,实现一些特定的需求,主要是给某些数据项设定初始值。
一般不设定。
Ø新增处理器:
用户可以继承内定类charimsa.web.dbop.InsertHandler,重载相应的方法,对页面传过来的参数做特殊处理。
如验证数据项的合法性。
一般不设定。
Ø业务层新增类性质:
指定处理新增业务逻辑的类是普通类还是EJB;
Ø业务层新增类名:
指定处理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华丹 CHARISMA 平台 开发 手册
![提示](https://static.bdocx.com/images/bang_tan.gif)