EMAP研究生线开发使用手册

EMAP研究生线开发手册

1 svn是什么?

svn即subVersion(子版本),是版本控制工具,也就是多个人开发同一个项目,共享一个资源,将仓库的代码/项目(被共享的资源)下载到本地,然后对下载到本地的代码进行编写修改。

2 总是报错:找不到xxxx数据源?

1 首先需要刷新数据连接下的数据源;2 再刷新root目录下的jdbc.proprities文件(选中文件,右击emap,选择刷新数据源)

3 tomcat的端口设置

因为需要使用应用与组件2个服务,所以tomcat需要设置2个端口,避免端口冲突,字符集设置为utf-8,同时值得注意的是组件的端口要记得,在后面应用添加自定义动作的时候需要填写。

4 version.xml文件的作用

该文件在包资源管理器目录下创建,在对应的组件下的src目录下创建db包,在db包下创建一个与该组件名称相同的包,然后在该包下面创建version.xml文件(一定要注意version.xml文件名称一定要按照顺序来,否则会创建不成功),该文件一般用来创建表(空表),一定要注意格式规范,参考开发文档API来进行创建,否则会出现重大错误。

建表的时候主键别忘记,如果建表出错可以到数据库中查看错误信息,改正即可。

5 emap组件设计器 与 emap应用设计器 的作用

emap组件开发工具一般是用来实现业务的后端逻辑的,(类似于前后端分离的idea,辅助java代码业务的编写),代码的目录结构如正常的前后端分离结构一样,Controlle,Service,DAO,PO,WS,这里有一个Ws层,指的意思是:webservice,用它来暴露接口,给前台来调用。

业务模型的产生方式不同:

组件中的业务模型是根据是数据模型来设计的,

而应用中的业务模型是由自定义动作中的数据查询方式webservice来来生成的。

问题:这二者有什么不同?前台显示的是哪一个模型?模型是否可以修改(添加删除字段)如何修改?

6 Html页面的加载顺序?

按照顺序,从上到下运行,先解析head标签中的代码,
(1)head标签中会包含一些引用外部文件的代码,从开始运行就会下载这些被引用的外部文件
当遇到script标签的时候
浏览器暂停解析(不是暂停下载),将控制权交给JavaScript引擎(解释器)
如果

7 一个web应用是如何被启动运行的?

7.1 java程序的运行过程。

1)编写完成的java代码首先被编译成为字节码文件(应该是通过jdk进行编译),helloworld.java →helloworld.class

2)Java虚拟机jvm将编译完成的字节码文件在转化为计算机可识别的二进制文件。helloworld.class→0,1 二进制文件

服务器首先扫描web.xml文件,进行项目的初始化,当有请求过来,进行servlet的调用处理,最后返回数据。

7.2 浏览器的执行过程

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

8 WebService层的作用

9 Po(persistant object)创建的注意点

  1. 所有的类都需要文档注释
  2. Bean的属性名称全部都要大写
  3. 所继承的BaseBean是com.wisedu.binusess.ws下面的,里面有包含WID与很多的备用类
  4. 需要创建一个对应PO的返回结果集xxxResult,继承AbstractResult,主要包含了一些查询的状态以及分页查询的条件,该结果集类只包含一个该类对象的数组变量以及getset方法。

10 DAO(data access object)创建的注意点

  1. 创建接口的时候需要继承CommonDao接口(注意写上对应的泛型类),该接口主要实现PO的增删改查操作
  2. 创建接口实现类的时候需要继承CommonDaoImpl类(注意写上对应的泛型类),该类主要实现了po的crud操作,同时别忘了实现原本的dao接口
  3. 别忘记啊加上@Service(“xxxx”)注解,将其交给spring来进行类管理

11 Service层创建的注意点

  1. 创建service的时候,其中的代码crud方法好像是固定的,如下代码所示,很多地方都不懂,这么多的参数含义是什么?如何编写相关的配置信息?数据权限的配置又是什么意思?

	/**
	 * 申请信息查询
	*QueryConfig :查询条件的参数,规定了查询的分页信息,以及查询的排序方式
    *UserInfo:请求接口时的用户信息,包括了登陆用户的用户名和编号,以及应用的名称等信息
	 */
	public XssqbResult xssqbQuery(Xssqb param, QueryConfig config, String setting, String logKey, UserInfo userInfo) {
     
		XssqbResult result = new XssqbResult();
		// 前端没有传排序字段,则使用默认排序
		if (StringUtils.equals(config.getOrder(), GglglConstants.QUERY_CONFIG_DEFAULT_ORDER)) {
     
			config.setOrder("-XNXQDM,-NJDM,+XH"); // 默认排序:学年学期、年级降序,学号升序
		}
		try {
     
			// 数据权限过滤sql条件
			String filterSub = dataPermissionService.getPermissionCondition(GglglConstants.SjqxTNameConstants.XJGL_XSJCXX, userInfo);
			result = (XssqbResult) xssqbDao.actionQueryPage("此次填写查询申请信息动作的名称", param, config, setting, Xssqb.class, XssqbResult.class, userInfo, filterSub);
			result.setCode(GglglConstants.SUCCESS);
		} catch (Exception ex) {
     
			LOGGER.error("申请信息查询失败:", ex);
			result.setCode(GglglConstants.FAILURE);
			result.setMsg(ex.getMessage());
			commonService.wrapAndThrowException(ex);
		}
		return result;
	}

​ 2.需要添加审核日志查询方法?

​ 3.实现类要加上@Service(“xxx”)

12 在组件上添加数据模型与业务模型

创建一个数据模型(即自己创建的需要使用的表),然后在创建一个业务模型(由各个数据模型字段组合在一起,类似视图;业务模型也可以单独添加字段)。

13 自定义动作

​ 1.组件的自定义动作是数据库操作

​ 2.应用的自定义动作是webservice调用,主要的调用的是组件暴露的webservice接口

编写sql语句:

select #auto[select] 
from  table1
left join table2 on table1.xx=table2.yy
where 1=1 
#sub[and $]		//动态条件查询语句
#sub[and $]		//数据权限过滤语句
#sub[order by $]//排序语句

然后再选择相应的业务模型,并确定相关的子句#sub[]位置。

一般只有查询需要新建动作,新增、修改、删除都通过 dao 自带的方法实现,参考样例的 xssqbDelete 方法

14 EMAP应用设计器中的目录层次结构

主要说明一下web下的目录结构

index:入口页面,主页面

-————index.epg

-————index.jsp

module:应用中各个模块的功能菜单

----------module名称

-————module.js:模块加载的入口文件,

————moduleBS.js:模块中的业务逻辑处理的,比如说ajax的CRUD操作

————modulePage.html:需要渲染的页面

————module.css页面样式

public:

-————css

-————image

-————js

config.js:全局配置文件

15 页面模型的创建

​ 创建页面模型需要选择页面模型干预类**(访问该页面菜单或动作调用时会先走干预类)** ,在管理页面中干预类统一选择 com.wisedu.emap.gglglyy.service.intervention.yjsPageintervention

创建如上图的module文件下的子文件,其中模型文件的前缀名称要与页面模型的名称一致,

且页面模型创建完成之后,需要在config.js中添加路由。

16 应用中新建自定义动作

​ 该自定义动作的类型是webservice调用(用来调用组件写的webservice接口)。

总线类型:非服务总线(带命名空间)

服务地址:组件的tomcat的访问地址/emap/sys/emapWS/ws/组件中ws里面的那个@sevice地址?WDSL

发布地址:${yjsHost}/sys/emapWS/ws/组件中ws里面的那个@sevice地址.do。

配置完成点击刷新,

image-20200702144518302

生成WS下对应的业务模型:点击对应的动作,选择emap->生成ws业务模型即可。

17 字典的创建

​ 通过version.xml文件来创建一张字典表,代码如下:

sql代码块

若出错,则到数据库中查看表的错误,在EMAP_SYS_VERSION_INFO表中,可以查看到数据库初始化的结果,在 EMAP_SYS_VERSION_SCRIPT表中,可以查看到初始化出错的脚本。

一般来说,了解到问题的错误,修改完成后,将表中相关错误的信息删除即可。通用的修改语句:

select * from table where table.xx = 'xxx' for update 

然后,解锁,进行操作,最后别忘记进行事务的提交。

ora-00972:标志名称过长错误;即表名,字段名名称过长,最多不超过30个字符;

字典表的数据模型是存放在组件中的执行管理中心中的。

而字典表的表是存放在应用中的公共类管理应用中的gglgl字典中的。

10086 问题?

1,字典加载不出来;

2,创建字典的时候,只需要添加一个对应的数据模型,自定义动作添加【zdcx】,在通过配置dicCodez_zdb_zddy.zddm,order=+PX就能确定是那个具体字典了吗???其他的字典也是这么做的吗?

你可能感兴趣的:(emap,java)