EMP开发后台业务逻辑情况总结.docx
- 文档编号:12505787
- 上传时间:2023-04-19
- 格式:DOCX
- 页数:23
- 大小:900.79KB
EMP开发后台业务逻辑情况总结.docx
《EMP开发后台业务逻辑情况总结.docx》由会员分享,可在线阅读,更多相关《EMP开发后台业务逻辑情况总结.docx(23页珍藏版)》请在冰豆网上搜索。
EMP开发后台业务逻辑情况总结
建立业务逻辑的基本流程概述:
1、添加数据字典:
通过数据库导入或者加入自定义传输数据模型到整个工程的数据字典中;
使用IDE进行应用开发时,需要遵循数据字典,每个业务逻辑的输入输出数据都是从数据字典中选取出来的,保证了整个开发工程的数据、变量名用词统一。
因此在进行开发之前,需要预先对数据字典进行设计。
在业务逻辑开发过程中,也可以随时为数据字典添加需要的元素。
数据字典定义保存为XML文件形式(designFiles/commons/dataDict.xml)。
2、添加服务定义:
定义公共服务,如JDBCDriverDataSource、SQLDefine、TableDefine等服务。
(定义的服务需要在节点定义中引用到公共节点或应用节点才可以起作用。
)
3、添加公共节点所使用的服务和应用节点所使用的数据:
需要引用步骤2中的服务定义和需要引用步骤1中的数据字典定义,以便在整个工程的业务逻辑中使用;
4、编写业务逻辑构件:
●加入该逻辑业务构件的所需数据定义;
●通过Java类导入或者IDE提供的业务组件编写业务流程;
建立业务逻辑的步骤:
1、添加数据字典:
在EMPExplorer中,右键点击工程名称,点击【项目扩展定义】打开e-ChannelsEMP项目设定编辑器,如下图:
方法一:
自定义数据字典。
点击编辑器中的数据字典定义,通过【创建】添加自定义的传输数据模型:
数据ID需要唯一,数据类别分为dataElement和dataCollection,其中,dataCollecion为dataElement的集合,建立对应的dataElement和dataCollection之后可以右键点击dataCollection,选择【添加。
。
。
】下的数据引用选项,添加对应的dataElement到集合中,形成数据集,这样便于使用。
如下图:
方法二:
使用数据库中的对象添加数据字典。
在EMPTableView视图中点击【project图标】选择工程名称,点击【connect】,选中所要加入数据字典的对象名,拖拽到EMPExplorer视图中的数据库表文件夹中,点击【ok】确认添加新的数据表模型。
之后,双击欲添加的表名,在打开的编辑器中点击自动注入数据字典即可(注意:
此时应该关闭“e-ChannelsEMP项目设定编辑器”)。
2、添加服务定义:
在EMPExplorer中,右键点击业务逻辑下的第一个文件夹,点击【编辑】,可以打开“业务逻辑分组设定编辑器”,点击【服务定义】,如下图:
填写服务ID(注意要唯一)并选择服务类型,然后点击【创建向导】,如类型是JDBCDriverDataSource时,如下图填写对应内容,点击【连接】,最后点击【Finish】
如为SQLDefine,可以在填写服务ID并选择服务类型后,点击【创建】,填写SQL语句,如有input条件用“?
”表示,选择iColl名称,为数据字典定义的集合,选择操作类型;在右边添加input和output(现今版本一定要加入),然后为输入输出添加参数,其中序号为第几个参数,数据域为参数的数据字典名称(注意和前面填写的iColl名称对应),并选择参数的数据类型,最后点击【确定】即可,如下图:
3、添加公共节点所使用的服务和应用节点所使用的数据:
在“业务逻辑分组设定编辑器”中,点击【节点定义】,再点击【公共节点】,最后在“公共节点服务”中点击【添加】,加入要使用的服务,点击【确定】即可。
如下图:
在“业务逻辑分组设定编辑器”中,点击【节点定义】,再点击【应用节点】,最后在“数据引用”中点击【添加】,加入要使用的数据定义,点击【确定】即可。
如下图:
4、编写业务逻辑构件:
在在EMPExplorer中,右键点击业务逻辑构件所要放的包名,选择【新建】中的【新增业务逻辑构件】,填写业务逻辑构件ID,之后点击【Finish】。
如下图:
点击数据定义,之后点击【添加】,选择本逻辑构件中需要使用的数据定义,点击【确定】即可。
如下图:
点击【逻辑处理流程】,点击【基本信息】,填写罗ID和名称,点击【添加】,即可在【逻辑流程】中编写处理流程。
如下图:
使用组件编写处理流程可分为两种方式:
方式一:
使用JAVA程序编写组件
在工程的src目录下的com.sqws.sihitech.service包中建java文件(注意需要继承com.ecc.emp.flow.EMPAction),Java基础代码如下:
packagecom.sqws.sihitech.service;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjavax.sql.DataSource;
importcom.ecc.emp.core.Context;
importcom.ecc.emp.core.EMPException;
importcom.ecc.emp.data.IndexedCollection;
importcom.ecc.emp.data.KeyedCollection;
importcom.ecc.emp.flow.EMPAction;
importcom.ecc.emp.jdbc.ConnectionManager;
importcom.ecc.emp.jdbc.EMPJDBCException;
importcom.ecc.emp.transaction.EMPTransactionDef;
publicclassOrgIncomeBalanceServiceextendsEMPAction{
privateStringdataSourceName=null;
privateDataSourcedataSource;
//缺省事务为TRX_REQUIRED(全局事务)
privateinttrxType=EMPTransactionDef.TRX_REQUIRED;
/**
*
*自定义SQL语句执行模板。
*
*@paramContextcontext交易定义的Context,服务会自动从Context中获取数据,或更新数据。
*@throwsEMPExceptionEMP异常。
*@returnString0,正常;2,记录未找到;-1,异常
*
*/
publicStringexecute(Contextcontext)throwsEMPException{
if(dataSourceName!
=null&&dataSourceName.length()!
=0)
dataSource=(DataSource)context.getService(dataSourceName);
if(dataSource==null)
thrownewEMPException("dataSourcenamed\""+dataSourceName+"\"isnotfoundinJDBCSQLExecAction:
"
+this.toString());
Connectionconnection=null;
PreparedStatementps=null;
try{
connection=ConnectionManager.getConnection(dataSource);
/*****
此处为数据库处理过程
***/
return"0";
}catch(EMPJDBCExceptionje){
throwje;
}catch(Exceptione){
thrownewEMPException(e);
}finally{
if(ps!
=null){
try{
ps.close();
}catch(Exceptionex){
}
}
if(connection!
=null)
ConnectionManager.releaseConnection(dataSource,connection);
}
}
publicvoidsetTransactionType(Stringvalue){
//全局事务
if("TRX_REQUIRED".equals(value))
this.trxType=EMPTransactionDef.TRX_REQUIRED;
//独立事务
elseif("TRX_REQUIRE_NEW".equals(value))
this.trxType=EMPTransactionDef.TRX_REQUIRE_NEW;
}
publicEMPTransactionDefgetTransactionDef(){
returnnewEMPTransactionDef(trxType);
}
//设置数据源名称
publicvoidsetDataSource(StringdataSourceName){
this.dataSourceName=dataSourceName;
}
}
其中数据输出有2种方法:
方法1:
IndexedCollectioniColl=null;
KeyedCollectionkColl=null;
iColl=(IndexedCollection)context.getDataElement("analyseDataCollecion");
if(iColl!
=null){
kColl=(KeyedCollection)iColl.getDataElement();
}
if(iColl!
=null){
while(rs.next()){
kColl=(KeyedCollection)kColl.clone();
iColl.addDataElement(kColl);
Stringvalue=rs.getString
(1);
Stringvalue2=rs.getString
(2);
kColl.setDataValue("analyseData_Count",value);
kColl.setDataValue("analyseData_Name",value2);
}
}
这种方法的输出方式与使用EMP定义好的组件输出结构相同,但必须在数据字典中定义该数据结构,并且在数据结构中引用。
方法2:
context.addDataField("analyseData",object);
这种方法的输出方式与使用EMP定义好的组件输出结构不同,可以传出各种不同对象,输出比较灵活,而且不必在数据字典中定义该数据结构。
完成编码后在PackageExplorer中,右键点击该Java类选择“GenerateActionprofile”,之后选中project中的工程名称,点击【>>】,最后点击【Finish】将该类设置为一个EMP可用组件。
如下图:
在逻辑流程中选择要使用的逻辑定义,在图版区内将需要使用的组件加入到图中(注意填写组件的属性,自定义Java类中transactionType为事务类型,dataSource为数据源ID,需要在步骤2中定义,步骤3中引用),即可。
如下图:
方式二:
使用EMP定义好的组件
在逻辑流程中选择要使用的逻辑定义,在图版区内将需要使用的组件加入到图中(注意填写组件的属性,事务类型可选,数据源填服务定义中定义好的数据源ID,执行SQL服务填写步骤2中定义的SQLExecService的服务ID,SQL定义服务填写步骤2中定义的SQLDefine的服务ID,上述服务定义需要在步骤3中引用),即可。
如下图:
定义处理流程的输入:
在“逻辑处理流程”的输入中,点击【添加】,选择需要输入的条件,点击确定,即可。
如下图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EMP 开发 后台 业务 逻辑 情况 总结