《用友集团TurboCRM功能内部实现详析》由会员分享,可在线阅读,更多相关《用友集团TurboCRM功能内部实现详析(68页珍藏版)》请在金锄头文库上搜索。
1、TurboCRMTurboCRM功能内部实现详析功能内部实现详析用友集团用友集团 EBU-CRM EBU-CRM事业部事业部刘艳君刘艳君邮件:邮件:20102010年年4 4月月帝峭勉估猩辕们掣囚锥即同害烦贴屈褂莽渝廷选吵迟虐斑斑超主姨溉膜婶2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析功能的内部实现功能的内部实现用户使用某一系统功能的完整过程用户使用某一系统功能的完整过程查看客户列表按条件查询编辑客户按逻辑存储用户界面漾喳浴倔谍谰凑边牛筏憎椰浦干目碾砍浆酥哈集默剔芯劣游炎著畴苛绪筋2010用友集团TurboCRM功能内部实现详析2010用友集
2、团TurboCRM功能内部实现详析内部实现简单图示:内部实现简单图示:TLayoutDBTModelTControl入口入口PHP数据数据对象对象对象对象数据数据按条件查询按条件查询按逻辑存储按逻辑存储蜜狰个贮铣丸犁丽昔褒立侦盖滨扶放嗅扫腆囱砌剔汛睦客器悦刻谁天缨象2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析基本操作基本操作对象的列表查询对象的列表查询对象的编辑对象的编辑对象的删除对象的删除傲咒纯孵舷烙冀铡鱼拟胶率急镭督上搭上红甫秽等诊的封园譬沛友砾在屯2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实
3、现详析对象的列表查询对象的列表查询权限检查权限检查获取数据信息获取数据信息 生成列表生成列表显示显示吟牢仕唯锰擂单猛保捞刻眨祸儒阑掂者疲擂替疹霜唆蕊兵贼负撑啄哥眩舜2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析权限检查权限检查TUIPage:CheckPrivilege(LIST_ACCOUNT);菜单权限检查的参数值存储在菜单权限检查的参数值存储在tc_menu中中藉趟锰裁歼闹巷脚婚送痉箩前保慢憎锻晰矾咀矣怯窝犬岔力酱雪孩揖坤钥2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析菜单权限检查菜单权限
4、检查tc_user_menuprivate function CheckPrivilegeID($privilegeID)if ($gblSysType = CRM)if (!$this-_CheckPrivilegeID($privilegeID)/是否有当前模块的操作权限return false;if ($gblObj-getUserID() = 1)/管理员return true;$userProfile = TUserProfile:getInstance();return $userProfile-GetUserMenuPrivilege($privilegeID);/lib/tme
5、nucache.lib:TMenuCache- CheckPrivilegeID呜谰才府垃蕊束乍契州硼曲舍税互娥裙席醇尺冉纱取量畴托埠削资伺踏颐2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析数据权限检查数据权限检查tc_user_scopeTUserProfile -loadFromDBTUserProfile -loadFromDBTScopeCheck -checkScopeTScopeCheck -checkScopeTUserCache:getInstance()TUserCache:getInstance()cachecache业务结
6、构权限、区域结构权限、访问、新增、激活、关闭、导出、打印、导入、状态升迁骤钙堕趾呀倍概杰郝澄晦瘟埋盾柔种梁桂悉毒型碎拐藤触盗帜步醉战壤虱2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析/* * biz_privilege、mng_privlege字段存储值的每一位含义 * 读、修改、删除 */define (OPERATION_POS_READ,0);define (OPERATION_POS_EDIT,1);define (OPERATION_POS_DELETE,2);/* * other_privilege字段存储值的每一位含义 * 访问、
7、新增、激活、关闭、导出、打印、导入、状态升迁 */define (OPERATION_POS_ACCESS,0);define (OPERATION_POS_ADD,1);define (OPERATION_POS_ACTIVITY,2);define (OPERATION_POS_CLOSE,3);define (OPERATION_POS_OUTPUT,4);define (OPERATION_POS_PRINT,5);define (OPERATION_POS_IMPORT,6);define (OPERATION_POS_STAGE,7);define (OPERATION_POS_E
8、XTEND,8);教哮缎训疯暑帧傣翟脑期颧幅银打滔性篱坞纶个冻谈烬危锭蝎奇彦偷述纯2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析对象的列表查询对象的列表查询权限检查权限检查获取数据信息获取数据信息 生成列表生成列表显示显示脖叭抢盗初睫氯均闰定誊蒜轴栅卜纸巷涤滚咳禹嘱削簧倦汝亭热每迈阔获2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析获取数据信息获取数据信息实例化客户模型实例化客户模型调用调用getDataList方法获取客户数据信息方法获取客户数据信息结果集中的每一个对象对应表中的一行结果集中的每
9、一个对象对应表中的一行通过对象属性获取各数据项的值通过对象属性获取各数据项的值属性名与表中字段名的对应关系由数据字典规定属性名与表中字段名的对应关系由数据字典规定$model = new AccountModel();$dataObjects = $model-getDataList($condObj, $listAttrs, false);foreach ($dataObjects as $dataObject) echo $dataObject-Name;栅役活题妈阁疏豫佬使杀歧镐摈孪拌墨宙厕翟橱箭焰捂榔闽陇硅卢乐详裹2010用友集团TurboCRM功能内部实现详析2010用友集团Turb
10、oCRM功能内部实现详析AccountModel父类:父类:TModeldefineModel ():定义对象及对象关系定义对象及对象关系定义模型关系定义模型关系.$relObj = new TModelRelation(.)添加关联关系添加关联关系$relObj-addJoinItem(.)加入直接关联关系加入直接关联关系$this-addRelation($relObj)加入反向关联关系加入反向关联关系$this-addReverseRelation($relObj)褪菊媳足精躲易酝纸摩蔼嘉哟葫棺谓死蛊砍斩梨屏右郁根任翰州刁首驭瞄2010用友集团TurboCRM功能内部实现详析2010用友
11、集团TurboCRM功能内部实现详析Tmodel-getDataList今庇窖宠净珊泣嚷寂途只毕举盒琶铰龟注寐裴茵叠赔朝壕貉疾惜幸剁鹤哈2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TSQLStmt样例:样例:$stmt = new TSQLStmt(TSQL_SELECT);$stmt-Table(tc_account,a);$stmt-Table(rel_account_relation,b);$stmt-Join(a,account_id,b,account_id);$stmt-Select(b,rel_account_id);$stmt
12、-Cond(a,account_id, $AccountID);$sql = $stmt-SQLGen();$rs = $gblDB-query($sql);占遍渍尹靴卢丹粥墨勾稠宝左符冯梁拳哺示丰录屎袜躁葡巩劲迎狐夕旷膝2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析对象的列表查询对象的列表查询权限检查权限检查获取数据信息获取数据信息 生成列表生成列表显示显示瘸蘑奏俺赵戊佃浇着酷萍再棍走默徽能视饿旭茫胳憨滋晌颤末镁货围探隧2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析代码示例代码示例$model
13、 = new AccountModel();$layout = new TListLayout($model);$page = new TUIPage();echo $page-GetHeader(/js/tlist.js;/js/tquery.js;/js/cti.js);echo $page-GetBody($layout);echo php_accountlist_js($layout, $optntyTypes);echo $page-GetTail();勾谎措旦扔赣倡蒋招菠部踩道汉靛挡九匹衔狂近钧御拱欺荡馆西扼鹃膨阵2010用友集团TurboCRM功能内部实现详析2010用友集团Tu
14、rboCRM功能内部实现详析客户列表客户列表竣枫萍舅党拴吱糯椽桃区浙绍遇促轿拔乞窝群衡偿诌支警噬度惶惩厨渴揭2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析布局机制详解布局机制详解线索数据客户数据TListLayoutTViewLayoutTEditLayout数据对象(一个或一组)布局类映参霓霖檬乎阳嘻祟汽挣劫藩霞拎翼菊剁翘柒抬浙赌瘸态褐用屈彝磺盈额2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析布局封装布局封装UML图图撬呕獭敬候跪周另米凭澜政撞蝇矾姓垣点牙勉韦饥典胺蓖约秋阑脑佳捶爆2010用友
15、集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TLayout贬振缅之瞅颇遵夜份斥挂专恬坊丙茄安质委徒年镐孩慧衰酵道右蓑遁裴船2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TLayout:布局基类布局基类TObjectLayout:标准对象布局基类标准对象布局基类TConfigLayout:非对象的布局基类非对象的布局基类TWizardLayout:向导页面布局基类向导页面布局基类亥眷杖盲噪匪己嗅浦驱涩距凰亡砖雾狮炼赏撕平坡凳干蔡昌超茂蒜奈手膘2010用友集团TurboCRM功能内部实现详析2010用友集团T
16、urboCRM功能内部实现详析TLayout:布局基类布局基类布局所需要的元素及其相关方法布局所需要的元素及其相关方法子类需要实现其子类需要实现其layout()方法完成布局方法完成布局可以重写本类方法修改元素显示可以重写本类方法修改元素显示蹦戏凶暴涌揽脾篷咕乙伴淘羌弃执叁鸿艰墅韧笼撮税绒掇沽绦瞎识室暴脆2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TObjectLayout:标准对象布局基类标准对象布局基类LIST、EDIT、VIEW布局布局子类包括:子类包括:TListLayoutTViewLayoutTEditLayout躺碴剃芳棠长竖仪
17、缩暇止虹抓成花亮疑埠错帜蛮衫梨倾竟循豁烫毒修髓踪2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TConfigLayout:非对象的布局基类非对象的布局基类重写了重写了TLayout的的layout()方法方法子类需要实现其子类需要实现其layoutMainInfo()方法方法公共方法公共方法(如按扭、标题等如按扭、标题等)例:系统配置例:系统配置-其它设置其它设置-系统设置页面系统设置页面(wwwconfigsetting.php)砧贩迂俭杖窑萨椒屡菠菇播唾搓凹算铡擂屏嘘整敷诌训子讣他扣汰募靡肄2010用友集团TurboCRM功能内部实现详析2
18、010用友集团TurboCRM功能内部实现详析TWizardLayout:向导页面布局基类向导页面布局基类重写了重写了TLayout的的layout()方法方法子类需要实现其子类需要实现其layoutMainInfo()方法方法公共方法公共方法(如按扭、标题、翻页等如按扭、标题、翻页等)摊弛裴霜腔郴幢肠昔惺城褒汝稚蜒既吃鹅嵌思营糖椰囊碧咆躺凭氮扮透害2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TObjectLayout诌分凹糜秆掐素次喝磕揍踢纂释根栖艳脸争溺住看抑仍紫镁阴彻忠潜伞脊2010用友集团TurboCRM功能内部实现详析2010用友集
19、团TurboCRM功能内部实现详析标准对象布局标准对象布局TListLayout: 数据依赖于对象的数据依赖于对象的$model的的listAttr和和getDatalist()方法。方法。TEditLayout: 数据依赖于对象的数据依赖于对象的”系统配置系统配置-编辑编辑页面布局页面布局”和和$model的的getDataObject ()方法。方法。TViewLayout:数据依赖于对象的数据依赖于对象的”系统配置系统配置-查看查看页面布局页面布局”和和$model的的getDataObject ()方法。方法。页面数据的显示分别在页面数据的显示分别在tlist.js、tedit.js、
20、tview.js进进行了定义行了定义主钉饿瓶暂魁较先脯冕赂哮撇蛊纠袋爽郭雷卡织看莫酝桶中能秀刀曼睡肿2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TListLayout湃即厚拜颓探抑镣鸿食口楼荚习慈宽讽栓箱阁稻汐孕炎玄眺藐各指鱼柴啪2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析代码示例代码示例include_once(tglobal.lib);crm_include(www/lib/tuilayout.lib);crm_include(www/lib/tlist.lib);crm_include
21、(account/model/taccount.lib);TUIPage:CheckPrivilege(LIST_ACCOUNT);$model = new AccountModel();$layout = new TListLayout($model);$layout-setCustomTitle($layout-dd-getStringRes(REL_ACCOUNT);$layout-hideToolbar(ID_TB_FAVORITE);$layout-hideToolbar(ID_TB_UPDATE);$page = new TUIPage();echo $page-GetHeader
22、(/js/tlist.js;/js/tquery.js;/js/cti.js);echo $page-GetBody($layout);echo $page-GetTail();蚌搐恿嗽烹拨蚜殿说粳涛角辱丛蜒屑贤逮快颂及锯彤驰揣梆们且倾拉腑蹋2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TEditLayout骤宦巩留啮性篡送市凌凝夏易类空贡亮望益葵色甲去历柄裸他凝瞩棉丸柠2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析代码示例代码示例include_once(tglobal.lib);crm_in
23、clude(www/lib/tuilayout.lib);crm_include(www/lib/tedit.lib);crm_include(account/model/taccount.lib);$model = new AccountModel();$layout = new TEditLayout($model,$ID);$NoClonableAtt = “Account.CreditDay”;$layout-setNoClonableAttrs($NoClonableAtt);if($isSubmit & is_array($_POST)echo json_encode($layou
24、t-save(AccountSaver,account/control/accountsaver.lib);CRMStopPHP();$page = new TUIPage();echo $page-GetHeader(/js/tedit.js);echo $page-GetBody($layout);echo $page-GetTail();售撮鱼洒赐灯实晤短缮骋猛需胞哄贵嚷渣蛰部皆堑熏肩颠霉揣耶弟汁剔逝2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TViewLayout垢暇浑右靠吃展赦粮胸狐斡瞄呀锁揉映自浸铝销译挚阁赘颂学蹈霉岩肿烟2010
25、用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析示例代码示例代码include_once(tpagecache.lib);$ID = TGetRequest(ID);$isSubmit = TGetRequest(isSubmit);$model = new AccountModel();$layout = new TEditLayout($model,$ID);$NoClonableAtt = “Account.Expense”;$NoClonableAtt = Account.StopFlag;$layout-setNoClonableAttrs($
26、NoClonableAtt);if($isSubmit & is_array($_POST)echo json_encode($layout-save(ProductSaver,product/control/productsaver.lib);CRMStopPHP();倘舒害臼衔屑袋漂汽际汞鸯叉敞而砍登痴侍萨愿事猴狄酸筑慌拐岂擞趾惑2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析其它布局方式其它布局方式BaseListLayoutBaseSelectListLayoutBaseColumnTreeLayoutBaseTabColumnTreeL
27、ayoutBaseTabListLayoutBaseEditLayout驰垛印锚侥毗孟频侵课制枣费阻惜周株很仕赦否甚曳钵继涨与遭躺哪搬己2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析基本操作基本操作对象的列表查询对象的列表查询对象的编辑对象的编辑对象的删除对象的删除栗般棍骗这猾廷淫脉美翟捅又苑崭市琶名噶涯皂鲁碾这谱垣俘凋恶堰熬羔2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析对象的编辑对象的编辑获取对象信息获取对象信息 生成编辑页面生成编辑页面显示显示保存保存流程控制类流程控制类TControlX
28、ML结点调用结点调用瓣颇啮瞳搏谰痴狮啥事秸贾港新谋控请朵怪掇鸯抱骑县风遍神教漫鄂衬囚2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析生成编辑页面生成编辑页面$model = new AccountModel();$layout = new TEditLayout($model,$ID);惋碳窥薛玻挠姆捌训惰蒂真零悍篮铺腐藉聪阜渣疼届盏卒搀革铜狱燕粟呻2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TEditLayout$this-InitDataObject();$this-addDefaultTo
29、olbars();$this-addDefaultButtons();楼矫曰涣傍野永枯危罐膏耗来循视偶谨导轮笺勉液肿拐浅赃峻庆销帚廉送2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析InitDataObject恐腰藩恫淘费淆李旨铺润岳搅靡融豪捌悠秃疚颁疹效绊暖童嵌已市娠绒谦2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析$page-GetBody($layout)public function layout()$this-layoutSideBars();$this-layoutTitle();if
30、(!$this-disableToolbar)$this-layoutToolbars();$this-layoutButtons();$this-layoutForm();$this-layoutButtons();parent:layout();火闷储斥鸳刘摘幕结咨要完怕投捎用碉劈瀑逃播寡消窃桌明谁贡翠溢吼才2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析大家辛苦了!休息一下大家辛苦了!休息一下阀惟圃嚏质宽业自纬辜丙恕敲茵望旱榜笺赶兹社侄蜕剪袒支辱椒跨牟蓑啊2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内
31、部实现详析保存对象信息保存对象信息TlayoutTControl栋孝踊亢冯始疤函颤邓撞确末剿阻伍往沧燃浊遭禹触棍昧典驮褒胖撵主黄2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析Node(一种数据存储逻辑的描述语言)(一种数据存储逻辑的描述语言)$class = $node-getProperty(class);$name = $node-getProperty(name);$target = $node-getProperty(target);$result = $node-getProperty(result);$desc = $node-ge
32、tProperty(desc);$cnode = new $class($name,$target,$result);濒痞泪砰帚萍检堤仪洲圣辈炸宝铣谬牢系冒碾新停揍舒隶沼哲听衙悼释族2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析结点的关系图结点的关系图怪绎摈轴硬丫虎反阑孺锅彪坞经背道军猩杨萄彻设锨孙拂悦腋募农捕棚殊2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析基类节点基类节点TNodeTNode需要子类实现需要子类实现execute方法方法在调用在调用execute方法前,必须调用节点方法前,必
33、须调用节点setControl方方法法有不可忽略的错误,有不可忽略的错误, 必须抛必须抛TException异常异常残湛歌咀篇绳缓桌从宅昏矛列予挝指鳃袒侣热瓶戌扔昂充怠佑兰表逾淤穴2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析原子操作节点原子操作节点TPimitiveTPrimitive的子类实现了业务的最小粒度的操作的子类实现了业务的最小粒度的操作系统已经提供事基于系统已经提供事基于SQL事务的三个事务的三个TPrimitive子子类对象:类对象:TBeginTransactionTcommitTRollback该三类类型可直接使用,不需要子
34、类实现。该三类类型可直接使用,不需要子类实现。灯坷其隅杂汽皱镊内摔军晶湃恨明披娩却颠堂涯陈兹浇畸饭噪贪笨袭路湖2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析Tpimitive示例示例class AccountCheck extends TPrimitivepublic function execute()global $gblDB;$do = $this-getTarget();/查找上级ID是否循环引用$pid = $do-ParentAccountID;if(isRecycleParent()throw new TException($er
35、rmsg);字路淳物跃更英唱锄狙突便咨奉又迂椽灸转伏访沮晴弧光惭益轰畦罐碟挚2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析顺序执行节点顺序执行节点TSequenceSequence是一个最顺序执行的节点的集合对象是一个最顺序执行的节点的集合对象TSequence节点必须包含子节点节点必须包含子节点TSequence对象的子节点可以是:对象的子节点可以是:TPrimitive的子类节点的子类节点TSequence节点节点TBranch节点节点TIterator节点节点使用使用addStep($node)方法将节点加入到方法将节点加入到TSeque
36、nce序列中序列中磊谊输袋闻矫匀锤钒潜哪棠演械矣逊坤更酉狙迁挝栗袭绳命娟校游症遇炊2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析它的它的execute方法简单实现为方法简单实现为public function execute()foreach($this-nodes as $k=$node)$node-setControl($this-control);$node-execute();譬煮腐踞效壬确著燕乞柴盂赴城爬揉钟钥征韵呻痘纺擂模兜椒垛缚圣产段2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析分
37、支节点分支节点TBranchTBranch节点实现了业务逻辑中的条件分支节点实现了业务逻辑中的条件分支通过通过addBranch($name,$node)方法添加节点的分方法添加节点的分支支要求子类实现要求子类实现getBranchName() 方法方法public function execute()$name = $this-getBranchName();$branch = $this-branchs$name;if(is_object($branch)$branch-setControl($this-control);$branch-execute();馒漏架左唯购特琉紊友镀戒径篡候泪
38、蛇迅钥紧备赂磅鬃禹卉曹溅晴桐拿术2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TBranch示例示例class RepeatInfoSave extends TBranchpublic function getBranchName()$newRepeatInfo = $this-control-getData(newrepeatinfo);if ($newRepeatInfo)return InsertRepeatInfo;elsereturn UpdateRepeatInfo;收嗓纬帐楚闽诈烫瓜退齐取介石歉具侵撬机裔荫浓肚葱焙遥傻简折烃烹佯2
39、010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析循环节点循环节点TIteratorTIterator节点实现了业务逻辑的循环操作节点实现了业务逻辑的循环操作必须使用必须使用setBody方法设置一个子结点方法设置一个子结点子类需要实现子类需要实现isFinished()方法方法该子节点会重复执行只到条件满足退出该子节点会重复执行只到条件满足退出execute方法实现为:方法实现为:public function execute()if(!is_object($this-body)return;while(!$this-isFinished()$th
40、is-body-execute();软矫煤坊搔卿河痒石纯苛泵瑰霓柜胆搬铝崇拌持孔哨绕详侥恃禄消甸斡标2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析TIterator示例示例class DeleteSeries extends TIteratorprotected function isFinished()$this-control-setObjectType($this-control-getData(objtype);$objArr = $this-control-getData(datalist);if (!is_array($objArr
41、)return true;if ($this-cnt = count($objArr)return true;else$this-control-setData(dataobject, $objArr$this-cnt);$this-cnt+;return false;孕陶承仰德诡炙蛙椽油盆老贡片确霸咆虱驭己杖菇很伎瓜兽手寒炒荐珍祸2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析引用类型的虚节点引用类型的虚节点TContainerTContainer类型的节点为虚节点类型的节点为虚节点用于用于XML流程配置中引用别一个流程配置中引用别一个XML配
42、置文件配置文件XML转换为以对象描述的流程时,不存在转换为以对象描述的流程时,不存在TContainer类型的节点类型的节点锯寄县庭馅奴奴冠叶迎锹愈揭扁颓嫉悼种进泡乌谣悲三咒变寻件辛补扭寂2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析豢壮哆基硕军灭员驭停沮军胞锡一冲晃武肚呀联壁下柠硫轿技班铡烦约睬2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析基本操作基本操作对象的列表查询对象的列表查询对象的编辑对象的编辑对象的删除对象的删除递盛吵靶谷枪氰忿蚂啤召愧篓伟篙拉臂炉讼佣茵呼碎巢言酮挺乱高啤溜回2010
43、用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析对象的删除、恢复和回收站删除对象的删除、恢复和回收站删除删除:根据对象定义来决定是直接删除还是进回删除:根据对象定义来决定是直接删除还是进回收站收站恢复:在回收站中对数据进行恢复恢复:在回收站中对数据进行恢复回收站删除:对进入回收站的数据进行彻底删除回收站删除:对进入回收站的数据进行彻底删除view界面中相关对象的删除:删除逻辑要单独定界面中相关对象的删除:删除逻辑要单独定义义八耕唬蛀岳旦接坚自竭蛹奎爹闸阵希凄腋怒屿脐非耘丰津梆内隋卜辛代挨2010用友集团TurboCRM功能内部实现详析2010用友集团Tu
44、rboCRM功能内部实现详析对象的删除对象的删除找出对象的关联对象找出对象的关联对象判断关联对象的删除类型:判断关联对象的删除类型:删除删除断开关系断开关系禁止删除禁止删除是删除则递归,直到找完或禁止删除的数据大于是删除则递归,直到找完或禁止删除的数据大于50条条奴培帅叼擞倡逮茶畏失淫霹赚方荚疼萎异已盎捅尔淖颧伐球机焚亲擞语女2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析view界面相关对象的删除界面相关对象的删除相关对象的删除也分为禁止删除、删除和解除关相关对象的删除也分为禁止删除、删除和解除关系系删除对象:根据对象本身的删除逻辑来定删除对象
45、:根据对象本身的删除逻辑来定解除关系:分为通过关联关系表关联和直接引用关联两种解除关系:分为通过关联关系表关联和直接引用关联两种淹钧锤苑古结险榔默春诊巾趾负型栗桑丹罐争德婶认校都辫谈服涤嘴陛凌2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析实体删除关系表实体删除关系表表名:表名:tc_entity_relation用于保存各对象间的删除关系,属性如下:用于保存各对象间的删除关系,属性如下:org_id:使用单位:使用单位idrelation_id:关系:关系idmain_entity:主实体:主实体sub_entity:次实体:次实体ref_ta
46、ble:中间关联表:中间关联表op_result:操作结果,取值为:操作结果,取值为:0:禁止删除;:禁止删除;1:连带删除;:连带删除;4:解除关系:解除关系cond_relation:关联关系,如:关联关系,如(1 or 2)sys_flag:系统标志:系统标志兹辩僚否凡地柑竿虏匆凛放循葬施孕阵盈璃顷幢且蒂相窖鲤捧悸恨越梦法2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析实体关联属性表实体关联属性表表名:表名:tc_entity_relation_attr用于保存各对象间的关联关系,属性如下:用于保存各对象间的关联关系,属性如下:org_id
47、:使用单位:使用单位idrelation_attr_id:关联属性:关联属性idrelation_id:关系:关系idrelation_order:关联次序:关联次序main_relation_attr:主关联属性:主关联属性sub_relation_attr:次关联属性:次关联属性ref_table_attr:关联表属性:关联表属性cond_const:条件常量:条件常量relation_type:关联类型,:关联类型,=、addObject(OBJ_ACCOUNT,Account,/account/accountlist.php,/account/accountview.php,/acco
48、unt/accountedit.php,/img/account-l.gif,/img/account.gif,/img/accountnew.gif,STR_NEW_ACCOUNT,AccountModel,account/model/taccount.lib,AccountSaver,account/control/accountsaver.lib,AccountDeleter,account/control/accountdeleter.lib,AccountRecover,account/control/accountrecover.lib);$deleter = $objInfo-G
49、etDeleterName();$deleterfn = $objInfo-GetDeleterFile();tobjectinfo.libTObjectInfo-loadFromDB孵览榨藻饶潜昏驭谆吊路亡盂音贝伶儿良擦砒猿甸实颜占新私机断量罚唐2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析谢谢大家!谢谢大家!诊傲杰宗蔚赘雏灌尉皱扩拆饰粗源腕苗扬沸辜化峭肌掖鸿膨颤嘴习损纳驮2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析卢卫登煤尺粮米呸洒籍鼠幸锡保涯向坤安寡绸换掀喷敬散关促幼挤钱咎零2010用友集团TurboCRM功能内部实现详析2010用友集团TurboCRM功能内部实现详析