亚信CRM7.0新框架AppEngine3.0培训摘要

来源:互联网 发布:docker windows程序 编辑:程序博客网 时间:2024/04/29 06:16

南京培训:

 

FTP下载地址:10.11.20.110

端口号:21

用户名:crmftpdownload

密码:crmftpdownload

jar包路径:/AppEngine-PUB/AppEngine_V3.X/appengine_V3.0_20150210

文档路径:/AppEngine-PUB/AppEngine_doc/AppEngineV3.0/

集成工具:/AppEngine-PUB/InstallTools/AppEngine3.0(已集成AppEngineV3.0版本插件)

视频路径:/AppEngine-PUB/AppEngine_doc/AppEngineV2.2/video(基于AppEngineV2.2版本录制)

 

3.23.2015(张峰)

上午:

SaaS,A-PaaS,I-Paas,IaaS.

下午(OVERVIEW):

域—实体:该做什么?

模型。

SID整套框架      海外交流共同语言:TMF公共框架(业务语言)。

TMF:业务流程框架(eTom),信息框架(SID),应用框架(模块 系统 划分),集成框架

eTom,SID有大量的实践。

SID  首先划分了很多Domain,CRM的众多域:MarketSalesProduct Customer Service

Recourse Supplier/partnerEnterprise Common-Business.

ABE:  Business Entity,Attribute&RelationShip

Specification:对一类产品定好规格,以免每增加一种产品需要增加相应的代码。

AbstractSuperclass,Composite,Role Entity(party参与人),

Temporal StateEntity(PS:状态子表描述实体状态),Self Relationship,

EntitySpecification Characteristic/Entity Characteristic.

现在讲的CRM主要指客户交互。

区分好ABE中:实例和规格。     ProductOffering:套餐   MarketingResourse:营销资源

APaas里头有一堆构件,ABE与业务构件一一对应,如此架构能够避免数据频繁增加

带来的混乱。

在父类里头体现关系;

Identification:识别信息的标识号,成对出现,识别类型与识别号;

PartyRole;

Contacts(联系人)包括联系人,决策人,关键人,担保人等。

 

 

产品模型(7.0中最重要最难的)

一些服务依赖主服务;

产品规格,多个服务封装成一个产品规格,

面向资源服务->面向客户服务->产品规格->组合产品规格;

销售品,“资费前移”;

产品->原子消费品->组合销售品。定价计划根据产品特征的取值来决定。

产品线:是技术上具有主从关系的一组产品的集合,有且只有一个主产品。

销售品产品关系。

订单域最关键最核心,是资料的入口。

业务交互:请求,响应,通知,协议。

客户交互项:之间存在依赖,互斥,连带等关系。

业务交互角色:个人或组织参与业务交互过程中,扮演不同的角色。

 

 

 

3.24.2015(英林海)

功能模块;

Page and ServiceSeparation   前后台开发完全分离,通过HUB中间层拼装;

快速开发;职责明确(设计态视图转化为开发代码);

三流合一整合成一个业务流,设计态事件和规则划分。

 

如何配置APPEngine:

倒架包,删缓存文件,关联主要文件类型打开方式,

HTML,java,javascript编码方式改为UTF-8。

Nginx静态WEB容器只部署HTML纯静态的东西。

Appengine.au   注册服务器信息文件

update.dat从FTP下载升级设计开发工具版本。

Appengine-lib  平台依赖的jar包;

Paas Project:业务能力,applicationProject;

Saas   HTML:web Project;

AEDomain.properties    一个域对应一个Paas工程;

AppEnginePreferenses:

Code ReviewSetting;Composite:Abo,UIEntity;Configtools。

Event Server:配置,用于build,startEvent;

Register:把元数据等注册到数据库中ae开头的表中;

AppEngine New:只new   workflow;

Attribute:流程节点属性的配置;

New ResourceCategory;

 

Cache.xml  defaults.xml  数据源的配置;

aicache.properties   缓存文件的配置;

AIConfig.xml   数据方言的配置,AilkMutiDialectImpl  复合数据库的配置;

 

save()保存与更新,只允许逻辑删除;

getBeanId()新建bean,只带新增的Id,getBeanById(longid)获得特定id的已有bean;

.bo文件中General一栏手动去掉Table Name中的“BO”;

 

 

3.25.2015(英林海,顾海燕)

上午:

Dao提供封装好的基本的数据操作能力;

值对象与ABO之间的转化;

数据库cfg_db_acct中要配置数据源信息;

练习:Paas项目Customer的增删改查;

HUB第一个功能就是服务的注册;

HUB解析HTTP报文,到对应服务表HUB_serv里查询该服务,

应用服务器要和域匹配;

HUB的第二个功能就是服务的解析和应用服务器路由的分发;

hub_http_mapping;

config.properties;

Hub工程一个Paas工程;

工程启动HUB步骤

第一步:main()传HUB_ccode启动HUB;

第二步:拷贝hub和jetty的架包到appEngine-lib,同时右键把事件相关的LIB勾上;

第三步:i18n和apphub文件夹覆盖到工程中config目录对应的文件夹中;

第四步:defaults.xml中配置hub数据源(cfg_db_acct)服务~DAO 注释掉跨域;

hub_http和hub_http_mapping的hub_code一定要对应上;

第五步:cache.xml最后加入那些缓存的配置.

练习:搭建hub服务器环境,并且本地启动hub;

 

 

下午:

静态页面开发:

Nginx;json;

Grid;

Form:  dataField;后台交互依然通过JS进行;

Tree;

http://localhost:7777/Saas0104/demo/demo-grid.html

练习:创建静态页面,并在nginx服务器中运行,并尝试

通过hub实现前后台交互;

 

3.26.2015(英林海)

上午:

hubservice.properties;

当hub_code为0,则有故障;

hub_value里边有对应的异常编码值,这些是从hub_resource中取;

code:业务代码;

每个服务的入参必须是可序列化的(例如ABO或者JAVA基本数据类型);

根据业务的紧密程度来决定ABO之间的关联或者聚合;

主对象聚合wrap指向从对象,从对象记录主对相Id;

ABO可以从数据库或者缓存中取;

isReqPersistence()是否需要持久化;

通用业务对象:ICommonBusiObj;

_$ABO   _$ABO_ARRAY;

一对多加一层循环,一对一直接执行;

addCustomerOrder()向客户对象贴加item信息,并在缓存中建立关联关系,

与Set*方法区别在于是否在缓存中建立关联关系,共同点都是在数据库存数据;

懒加载;

貌似一个ABO可以包含多个BO;

不同业务构件下的ABO的配置;

一对一关联(association)只是相互记录对方的id;

自关联;

多对多关系通过中间对象拆成两个一对多关系来实现;

查询ABO;

参数类型的ABO;

 

 

 

下午:

ABO自定义业务方法;

规范:建表语句禁止设置外键,只允许主键;

流程:服务流,工作流,业务流;

 

服务流(pwf):Combined,以前服务嵌套,耦合性强,

现在松散耦合,提升单个服务的复用性;

设计节点:start,finish有始有终,auto原子节点,原子之间通过线串起来,

第一个服务的返回值赋值给全局变量,下一个服务的入参从全局变量取;

可以多个in,只有一个out;

设计面板空白处点击一下在Attribute中可以看到全局变量;

Shell:一些流程节点处理不可了的JAVA代码(规范:要求写全路径的对象);

Decision;

原子节点的返回值和Decision组成AutoDecision;

Loop:Loop和LoopEnd组成闭环;

Loop节点循环条件的设置(循环变量的值也是从全局变量取);

子流程:Child Workflow,一个流程对应一个事务,父流程和子流程事务相互独立;

服务调用方式:同步调用or 异步调用;

异步调用:log库log_process插入数据,JMX解析报文信息,再异步调用实际的代码;

excute()方法:服务流执行入口;

练习:服务流的设计与代码生成;

 

工作流(wvm):

Comframe:底层架构;

Function对外提供使用的最小单元;

前置任务,后置任务;

Sign:会签,多个领导签字通过,会签结束,派生多个任务;

AND两道或者多道线全部完成;

FOLK  OR只需一个完成;

ROLE在运行态没有用;

isOverTime判断是否超时,类似decision节点;

Comframe:流程的运行首先要创建工作流实例create;

startWorkFlowQueue()启动工作流队列进程;

人工回单;

会签相当于多个人工回单;

vm_wf:工作流进程扫描该表,启动多个子任务;

vm_template;

vm_wf中error_message字段包含处理报错信息;

 

 

业务流(bvm):

页面的输入和输出也要和全局变量进行捆绑;

发现user  folk   子流程 人工标记w 等节点就开始解析成工作流运行;

如果没有以上情况,页面流后就解析成服务流;

貌似业务流属于前端设计,在SaaS工程中;

页面解析成HTML和json,相当于以前的.pf文件;

 

 

 

 

3.27.2015(英林海)

事件:服务在运行时业务状态的变更;

connector:连接器,事件拦截器(有event和service两种类型);

rules数据来源:event和context;

事件采集信息;

事件处理完后有相应输出;

mapping映射里头元数据的配置;

Events包中是一些bean文件,通过gettersetter方法值传递;

aebuild.properties      eventlibpath   rulelibpath     ext_java_src;

makejars.xml;

subscriber订阅哪个事件交给哪个服务去处理。
0 0
原创粉丝点击