用友U9-ERP軟件實施寶典5-UBF與客開_第1頁
用友U9-ERP軟件實施寶典5-UBF與客開_第2頁
用友U9-ERP軟件實施寶典5-UBF與客開_第3頁
用友U9-ERP軟件實施寶典5-UBF與客開_第4頁
用友U9-ERP軟件實施寶典5-UBF與客開_第5頁
已閱讀5頁,還剩331頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

UBFUBF與客開U9U9實施應用寶典—應用篇前言本書內(nèi)容U9開發(fā)平臺銜接起來,提高二次開發(fā)效率,進而使項目高滿意度交付成為一個關鍵議題。二次開發(fā)的角度講解分析進行簡單檔案單據(jù)開發(fā)及報表開發(fā),并輔以實例講解。本書案例均在U92.0SP2下編譯調試通過。U9的部署及常見問題和注意事項。適用于二PC配置,服務器部署請參考實施技術相關。Oql。U9二次開發(fā)命名進行了一些約定。UBF開發(fā)環(huán)境。BE實體建模,UI界面設計,參照設計,BP操作設計,列表開發(fā),單據(jù)裝配等基本操作。一些關鍵點。7章,打印個性化。如何將系統(tǒng)的打印模版進行個性化的調整,本章將解答這個疑惑。OBA模版。U9免業(yè)務風險和損失、提高企業(yè)員工的生產(chǎn)率、提高員工自助服務的能力。及時預警的功能在項閱讀本書的對象U9開發(fā)顧問U9二次開發(fā)顧問,不免都會有一番波折,導致的原因是多方面的,可能是環(huán)境部署的,可能是開發(fā)規(guī)范造成的,還可能是開發(fā)平臺的缺陷。本書總結環(huán)境部署的一些通用性問題及開發(fā)命名規(guī)范,對于剛入門的初級開發(fā)工程師,良好的編程習慣及過程規(guī)范是非常必要的。對有開發(fā)經(jīng)驗的顧問作為參考手冊,仍然具有較大參考價值,如相關引用的說明、模塊介API調用說明等。U9實施顧問感謝感謝以下同事為本書的編撰付出的辛勤勞動:王懷亮、郭玉平、李培圣、邢華鋒楊旭、楊占軍、趙英睿20109月目 錄第一章開發(fā)環(huán)境 1系統(tǒng)環(huán)境準備 1系統(tǒng)硬件 1系統(tǒng)軟件 1開發(fā)環(huán)境安裝 3安裝U9安裝服務器 3安裝U9應用服務器 4安裝管理控制臺 5配置U9Portal 6登錄管理控制臺 6站點服務器配置 7新建企業(yè) 9JOB引擎配置 12安裝UBF 13產(chǎn)品許可 15本機許可 15網(wǎng)絡許可 16數(shù)據(jù)庫的導入、導出 18數(shù)據(jù)庫的導出 18數(shù)據(jù)導入 20報表服務器配置 26安裝運行SqlServerReportingServices 26配置報表服務站點ReportServer 26部署自定義報表的DataCommand 27報表開發(fā)環(huán)境參數(shù)設置 27UBF環(huán)境設置 27UBF連接到數(shù)據(jù)庫 28報表開發(fā)環(huán)境 29連接報表元數(shù)據(jù)庫 31第二章UBF開發(fā)平臺 32UBF介紹 32應用框架 32應用開發(fā)流程 33詞匯表 35UBF開發(fā)環(huán)境參數(shù)設置 37UBF環(huán)境設置 37UBF連接到數(shù)據(jù)庫 39啟動服務 40OQL查詢語言 41OQL簡介 41簡單條件過濾 43復雜報表查詢 43OQL查詢風格 47用戶自定義函數(shù)與SQL標準函數(shù) 49臨時表 49全景體驗 51第三章二次開發(fā)命名規(guī)范 52命名通用規(guī)范 52命名方法概述 52使用規(guī)范 52U9標準產(chǎn)品發(fā)布對象對照表 52命名空間規(guī)范 543.2.1概述 54組成要素 54要素說明 55規(guī)則與約束 55舉例說明 55解決方案規(guī)范 553.3.1概述 553.3.2約束規(guī)則 563.3.3示例 56項目規(guī)范 563.4.1概述 56約束規(guī)則 56項目粒度劃分規(guī)則 563.4.4示例 56裝備件規(guī)范 573.5.1概述 573.5.2約束規(guī)則 573.5.3示例 57組件規(guī)范 583.6.1概述 583.6.2約束規(guī)則 583.6.3示例 59模型類型規(guī)范 613.7.1概述 613.7.2約束規(guī)則 613.7.3示例 62數(shù)據(jù)庫相關命名 63第四章單據(jù)實例開發(fā) 63需求設計 63功能概述: 64UML建模模型 64實體數(shù)據(jù): 64用戶界面 654.2 實現(xiàn) 66實體建模 66界面設計 82建立UIModel 85創(chuàng)建界面 89參照設計 1014.2.6建模 1264.2.7列表開發(fā) 131組裝發(fā)布 135UBF構造 135組裝工具使用 136打開組裝工具 138生成SG文件 139應用分組 140組件裝配 141頁面裝配 143菜單裝配 149數(shù)據(jù)發(fā)布 151執(zhí)行批處理文件 154腳本運行 155組件更新 155菜單授權 155本章小結 161第五章報表案例開發(fā) 1625.1 概述 1625.2 需求 1625.3 設計 164查找條件 164欄目說明 165算法說明 1655.4 實現(xiàn) 166新建報表模板 166新建報表目錄 167新建報表容器 167新建報表頁面 167新建DadaCommand 169編寫DadaCommand業(yè)務邏輯 173報表模板設計 186模板布局設計 188報表參數(shù)設計 191報表處理策略 194發(fā)布瀏覽 197發(fā)布報表模板 197部署DataCommand 201菜單授權 203效果預覽 204查詢界面 204效果界面 204本章小結 205第六章打印個性化 206個性化工具平臺(UBFStudio) 206啟動及登陸 206打印元數(shù)據(jù)庫 207設計器區(qū)域介紹 209菜單系統(tǒng) 216模版調整 219紙張調整 219區(qū)域調整 221布局調整 223增加顯示對象 229印數(shù)據(jù)擴展 232增加用戶自定義字段 233使用OQL表達式 235創(chuàng)建UIModel打印模版 237定義打印模板名稱及語言類型 238設定UIModel 238打印字段定義(數(shù)據(jù)查詢定義) 240定義布局類型 241設計標題 242完成打印向導 243打印模板發(fā)布 243SQL標準函數(shù)擴展 247操作步驟 247本章小結 248第七章個性化 251表單個性化 253卡片個性化 253Grid列表個性化 257功能區(qū)個性化 260添加自定義控件或列 261新增關聯(lián)控件 263設置默認值 266字段管控設置 269個性化權限管控 272菜單個性化 273菜單分組的隱藏顯示 275菜單分組中菜單項的隱藏顯示 275菜單分組順序 275查詢個性化 276查詢條件個性化設置 276欄目顯示名稱修改 277排序個性化設置 278查詢方案的保存/刪除 279列表個性化 280報表個性化 281報表查詢條件個性化設置 281報表排序個性化 282報表行分組/列分組個性化 283調整列寬 284第八章Office應用集成 286核心價值 286環(huán)境配置 286OBA客戶端安裝 286權限設置 287功能應用 289模板設計和共享應用 290U9數(shù)據(jù)導入導出 297U9數(shù)據(jù)查看 302U9數(shù)輸出和打印 302本章小結 303第九章預警 304周期性預警 305周期性預警設置 306調度方案 307管理提交 309通知管理 311實時預警 314實時預警設置 314請求監(jiān)控 315消息中心 317通知管理 318我的訂閱 319消息查詢 320消息通道 321本章小結 322客戶化開發(fā)篇U9實施應用寶典—應用篇UBFUBF與客開PAGEPAGE1PAGEPAGE10本章導讀本章主要講解U9二次開發(fā)環(huán)境的部署、許可、已經(jīng)服務器配置;系統(tǒng)環(huán)境準備系統(tǒng)硬件2G以上,CPU2.6G以上系統(tǒng)軟件1)操作系統(tǒng)Server2003+SP2IIS6.0IIS6.0的安裝位置在:/Windows/應用程序服務器/詳細信息/Internet信息服務(IIS)。IIS6.0。U9U9實施應用寶典—應用篇UBFUBF與客開點擊【確定】、【下一步】后,系統(tǒng)提示插入操作系統(tǒng)光盤,可以插入系統(tǒng)光盤,如果沒有系統(tǒng)光盤,可以定位到操作系統(tǒng)文件夾的i386framework2.0(VS2005,則已經(jīng)存在該補丁包)framework2.0SP1安裝.netframework3.02)其它軟件IE7.0AdobeReaderPDF(打印輸出用)版本管理工具(可選)如果需要使用UBFStudioV2.0UBFStudioV2.0MSVisualSourceSafeV6.0(或更高版本),以及IBMRationalClearCase2003數(shù)據(jù)庫SQLServer2008ReportingServices,建議完全安裝開發(fā)環(huán)境安裝U9安裝服務器務器”彈出下圖:向導式完成即可。U9應用服務器U9123456,點擊“下一步”,如下所示PC,我們建議選擇“測試環(huán)境”,建立連接后,如下UBFUBF與客開U9U9實施應用寶典—應用篇PAGEPAGE5PAGEPAGE6默認全選,點擊“安裝”,即可安裝管理控制臺彈出下圖:U9U9Portal登錄管理控制臺“U9-ERP2.0SP2U9Portal(123456)UBFUBF與客開U9U9實施應用寶典—應用篇PAGEPAGE11PAGEPAGE8站點服務器配置我們重點對數(shù)據(jù)庫服務器及報表服務器的配置進行講解,其他按默認配置即可。進入界面后,選擇“站點管理”,如下所示雙擊“數(shù)據(jù)庫服務器”,修改用戶名和密碼;雙擊“報表服務器”,如下所示刷新;獲取報表服務器信息;如有多個報表服務器版本,請選擇,如沒有則為默認ReportServerLibReportServerLib新建企業(yè)點擊“新增”錄入企業(yè)編碼,名稱,點擊“創(chuàng)建”選擇服務器錄入數(shù)據(jù)庫名稱選擇數(shù)據(jù)庫備份文件指定數(shù)據(jù)庫及庫日志文件存放路徑注意:Portal2、確認之后開始創(chuàng)建數(shù)據(jù)庫(OBA模塊,可以不配置文檔庫),如下所示JOB引擎配置進入控制臺界面后,選擇“JOBUBFUBF與客開U9U9實施應用寶典—應用篇PAGEPAGE13PAGEPAGE14001”,彈出如下點擊“確認”。UBFUAPUBFSPLASH.HTAUBFStutio”彈出如下:按向導完成即可,UBFPortalUBFUBF與客開U9實施應用寶典—應用篇PAGEPAGE15PAGEPAGE16產(chǎn)品許可本機許可管理人員,獲得許可文件后導入即可。在管理控制臺——許可證,獲取注冊請求信息,畫面如下所示:系統(tǒng)管理工具->許可管理->獲取注冊請求信息reqmacmac確保本軟件運行時,該網(wǎng)卡設備工作正常。申請流程請向機構負責人咨詢;得到許可文件(.txt),導入所申請的服務器即可網(wǎng)絡許可打開控制管理臺,選“站點管理”site”,修改許可服務器為有許可的服務器U9U9實施應用寶典—應用篇UBFUBF與客開PAGEPAGE18PAGEPAGE19IP數(shù)據(jù)庫的導入、導出U9程中需要一些數(shù)據(jù),所以直接導入一個有數(shù)據(jù)的數(shù)據(jù)庫對開發(fā)報表、代碼調試方便。數(shù)據(jù)庫的導出數(shù)據(jù)庫導出、導入工具是“用友數(shù)據(jù)管理工具”。位置:UFIDA\U9ClientV2\ClientSystemManage\UFIDA.U9.SystemManage.DataManagerClient.exe初始密碼:123456/數(shù)據(jù)管理”進入如下界面:單擊目標按鈕bak到現(xiàn)有備份集或者覆蓋所有現(xiàn)有備份集,單擊確認進行數(shù)據(jù)備份生成.BAK。數(shù)據(jù)導入數(shù)據(jù)庫的導入還原有兩種途徑:1、使用“用友數(shù)據(jù)管理工具”還原。使用“用友數(shù)據(jù)管理工具”還原,方法如下:企業(yè)數(shù)據(jù)維護下的數(shù)據(jù)還原,進入如下界面:bak的文件頁面選擇.mdf與.ldf 文件后,單擊確認進行數(shù)據(jù)庫恢復。2、使用“用友系統(tǒng)管理工具”還原。位置:\UFIDA\U9ClientV2\ClientSystemManage\UFIDA.U9.SystemManage.SystemManagerClient.exe登錄:初始密碼:123456單擊企業(yè)管理單擊右邊企業(yè)管理中的新增按鈕單擊“基本信息設置”數(shù)據(jù)庫――創(chuàng)建,打開創(chuàng)建界面:創(chuàng)建數(shù)據(jù)庫填寫信息:11)需要填寫創(chuàng)建的數(shù)據(jù)庫名稱,也可以點擊瀏覽按鈕選擇已存在的數(shù)據(jù)庫。22)數(shù)據(jù)庫導出的備份文件,單擊瀏覽選擇數(shù)據(jù)文件的存儲位置,\UFIDA\U9V2\Database\SQL2005_V2.BAKSQL2008_V2.bak33)該文件系統(tǒng)自動生成,可以修改文件存儲地址,文件目錄必須為已存在的,系統(tǒng)不會自動創(chuàng)建目錄。U9-XX011報表服務器配置SqlServerReportingServicesSqlServerReportingServices,因為自定義sqlserver的報表服務(SqlServerReportingServices)請先按安裝。ReportServerReportServerIIS。DataCommandDataCommand節(jié)中指定的報表服務庫目錄,如下圖:報表開發(fā)環(huán)境參數(shù)設置UBF環(huán)境設置UBF\UBFStudio\IDEConfig.xmlOptions節(jié)RuntimeForReportDesigner屬性為<OptionsRuntimeForReportDesigner="true">。<OptionsRuntimeForReportDesigner="true">,UBF<OptionsRuntimeForReportDesigner="false">,UBFUBF連接到數(shù)據(jù)庫因為開發(fā)中使用的報表模板文件、實體模型等相關信息都是存儲在數(shù)據(jù)庫中,做自定義報表開發(fā)的前提是把UBF據(jù)庫就是U9中的公司對應的數(shù)據(jù)庫。UBFStudioV2.0UBF\UBFStudio\Runtime\environment.xmlenvironment.xml下:<system><connectionString>packetsize=4096;userid=u9test;ConnectionTimeout=150;MaxPoolsize=1500;datasource=u9ubfdb;persistsecurityinfo=True;initialcatalog=u9test;password=u9test</connectionString></system>datasource=u9ubfdb:表示數(shù)據(jù)庫實例initialcatalog=u9test:表示數(shù)據(jù)庫名userid=u9test:表示數(shù)據(jù)庫的用戶名SQLSERVER請根據(jù)所使用數(shù)據(jù)庫的具體情況配置。報表開發(fā)環(huán)境運行登陸數(shù)據(jù)庫服務器登錄界面以及對應密碼。連接報表元數(shù)據(jù)庫第二章UBF本章導讀本章將介紹了UBF開發(fā)平臺的框架OQL進行深入介紹UBF介紹應用框架UBFDesigntimeRuntime以及一系列工具組成。UIFramewok應用開發(fā)流程(如下圖所示)。在上圖中,VSNetIDEC#代碼。UBFStudioORUBFStudio中的相應工具將模型代碼生成為C#的框架代碼,開發(fā)人員在此基礎上提供或者擴展模型的實現(xiàn),編寫業(yè)務邏輯;同時,設計完成的。模型可以發(fā)布到運行態(tài)元數(shù)據(jù)庫中。UBFStudioUIP詞匯表中文英文解釋產(chǎn)品包ApplicationPackage總賬等功能模塊。產(chǎn)品包可以由多個小的產(chǎn)品包構成。每個小產(chǎn)品包由多個服務組構成。方案ApplicationSolution的所有服務、業(yè)務實體和業(yè)務操作必須被部署在一個站點中,解決方案被作為操作的主文件,并對應一個服務組。服務組ServiceGroup服務組,但服務組中的所有組件必須被整體的安裝和卸載。地部署在一個站點內(nèi)。的職責邊界,服務組內(nèi)部操作間的調用通過服務引擎完成,服務組對外只暴露服務但服務不能調用服務。服務組對應設計期的解決方案。U9實施應用寶典—應用篇UBFUBF與客開PAGEPAGE36PAGEPAGE37業(yè)務實體組件BusinessEntityComponent是一個業(yè)務數(shù)據(jù)管理的組件,包含一組BusinessEntity。BusinessEntityDataEntityBusinessEntity,這些Entity(BusinessObject)持久化到數(shù)據(jù)庫中,或從數(shù)據(jù)庫中裝載數(shù)據(jù)。BusinessEntityDataBusinessEntityData,BusinessEntityDataBusinessEntity相同的屬性和數(shù)據(jù)成員,但它僅用于數(shù)據(jù)的傳輸。BusinessEntityBusinessEntityEntityData業(yè)務操作組件BusinessProcessComponent業(yè)務操作組件包含一組業(yè)務邏輯的實現(xiàn)類——BusinessProcess。業(yè)務操作組件由兩個程序集組成,一個是BusinessProcessBusinessProcessAgentBusinessProcessBusinessProcessAgentBusinessProcess用BusinessProcess的實現(xiàn)。服務組件ServiceComponent服務組件包含一組服務——Service。ServiceBusinessProcessService不能被任何BusinessProcessService數(shù)據(jù)庫組件UIComponent頁面、菜單、參照等幾種不同的類型,用于完成人機交互中的不同任務。組件AnalysisComponent數(shù)據(jù)分析組件包含數(shù)據(jù)立方體、維度、KPI、報表、打印幾種組件。件WorkflowComponent用于完成工作流的流程定義。DSLDomainSpecificLanguageUBFXMLDLLUBFUBFUBF(UfidaBusinessFramework)開發(fā)平臺:采用元數(shù)據(jù)驅動的、分布式的、面向服務的架構,它提供了統(tǒng)一的編程抽象模型,是一個適合應用軟件開發(fā)及部署的全角色平臺。Studio務分析模型。工具、報表設計工具、打印風格格式設計器、規(guī)則開發(fā)工具、商業(yè)智能元模型開發(fā)工具等,全部集成在集成開發(fā)環(huán)境中(IDE)VSSCCUBF))《UBF2.0(使用).doc》UBF開發(fā)環(huán)境參數(shù)設置UBF環(huán)境設置在使用UBF Studio前,需要正確配置模型代碼生成路徑和界面生成路徑到有效的目錄。從UBFStudioU9U9實施應用寶典—應用篇UBFUBF與客開PAGEPAGE50PAGEPAGE39界面中的控件解釋:名 稱控件類型說 明安裝路徑只讀文本框Studio系統(tǒng)引用庫路徑文件夾參照系統(tǒng)引用庫PubRef模型代碼生成路徑文件夾參照模型代碼的生成路徑,在模型設計完成后生成代碼時會用到測試用例生成路徑文件夾參照UBF界面生成路徑文件夾參照界面庫路徑文件夾參照應用組件運行庫路徑文件夾參照組件發(fā)布為運行態(tài)時保存的路徑,應用模型層級樹的設置文件也保存在該目錄下。發(fā)布站點地址文件夾參照站點發(fā)布和部署時使用的路徑。數(shù)據(jù)庫腳本生成路徑文件夾參照數(shù)據(jù)庫腳本生成的路徑應用服務器路徑文件夾參照應用服務器的路徑說明:配置對話框的配置信息均保存在安裝目錄下的\UFIDA\UBFV2\U9.VOB.Product.UBF\UBFStudio\IDEConfig.xml有效。UBF連接到數(shù)據(jù)庫因為開發(fā)中使用的報表模板文件、實體模型等相關信息都是存儲在數(shù)據(jù)庫中,做自定義報UBFU9UBFStudioV2.0UBF\UBFStudio\Runtime\environment.xmlenvironment.xml<?xmlversion="1.0"encoding="utf-8"?><environment><system><connectionString>packetsize=4096;userid=sa;ConnectionTimeout=150;MaxPoolsize=1500;datasource=uf200901069;persistsecurityinfo=True;initialcatalog=U9_2010;password=sa</connectionString></system><view><mappertype="UFSoft.UBF.View.Query.MetadataDomainMapping,UFSoft.UBF.Business.Adapter"/><creatortype="UFSoft.UBF.View.Query.Adapter.TranslatorCreator,UFSoft.UBF.Business.Adapter"/></view><Path><Metadatalib>d:\</Metadatalib></Path><path><ubfbin>Runtime</ubfbin><ubfstudio>c:\ubf20\visualstudio</ubfstudio><ubfresources>c:\ubf20\resources</ubfresources><approot>c:\u9app</approot><!--class|component|assembly--><MDLoadStrategy>assembly</MDLoadStrategy></path><resource><componentid="05dfd73d-046e-457f-b08b-d17a905b2d94"/><componentid="cf4531fe-2991-444f-a84b-9f69073f62e5"/></resource><traceiisTrace="true"sqlTrace="false"/></environment>datasource=u9ubfdb:表示數(shù)據(jù)庫的服務器名initialcatalog=u9test:表明數(shù)據(jù)庫名userid=u9test:表示數(shù)據(jù)庫的用戶名請根據(jù)所使用數(shù)據(jù)庫的具體情況配置。啟動服務Window如果是手動安裝,就啟動下面這兩個服務。1、Portal\SysManageServer\ServiceHostingConsole.exe2、Portal\ApplicationServer\ServiceHostingConsole.exe這兩個服務是UBF、PortalUBFPortal個服務已經(jīng)啟動。為方便可創(chuàng)建快捷方式到桌面。OQL查詢語言OQL簡介對象查詢語言OQL有兩種風格,即有兩種不同的使用場景:簡單條件過濾與復雜報表查C#風格一致,OQL是大小寫敏感的,因此所有的關鍵字都必須小寫。1)基本功能1、ObjectQueryLanguage提供了一種基于對象的查詢語言。2OPath語法風格的路徑表達式。3、支持屬于多個Entity的多列。4、OOOrderLine.Order.Customer.ContactName。5、支持聚合函數(shù),SQL99標準函數(shù)(Entity語義)。6、支持列間表達式計算。7Group&Order&As(列別名)8EntityView定義,可以在Query定義中使用已有的EntityView!9、支持名空間的使用,支持中文。10fromleftjoin,rightjoin,fulljoin,crossjoin。11select,from,where子句中支持子查詢。12OQL別名指代OPath,使OQL的表達更加簡潔。13、UDF(UserDefinedFunction)的直接支持。14、union,unionall。15、臨時表的支持。16、OQL風格指南17、對C風格a?b:cCaseWhen表達式的支持。18、對標準日期時間函數(shù)的支持。cast/convert類型轉換函數(shù)的支持。20Update&Delete語句。優(yōu)勢與比較安裝將$Dev\PubRef\Business\UFSoft.UBF.View.Query.dll添加到項目引用中,$Dev\PubRef\Business\UFSoft.UBF.Business.Adapter.dll,$Dev\PubRef\System下UFSoft.UBF.Util.Expression.dll,UFSoft.UBF.Util.dll,UFSoft.UBF.Util.SQLBuilder.dll,UFSoft.UBF.Util.Log.dll,Tools.dll需要拷貝到運行目錄。environment.xml/environment/view/creator,如$Dev/PubRef/Businessenvironment.xml所示:<view><creatortype="UFSoft.UBF.View.Query.Adapter.TranslatorCreator,UFSoft.UBF.Business.Adapter"/></view>簡單條件過濾簡單條件過濾在概念上是針對一個強類型的對象集合指定一個過濾條件,對集合中的每個對象應用此過濾條件進行篩選,結果是所有滿足條件的對象所構成的子集合。UBFBEBE.Finder.Find(xxx)返回對象集合。ObjectSpaceOPath(OPath啟發(fā)而來),表示查詢條件,使用時應當指定對應的主實體,即條件是在該主實體上過濾。OQL僅用在E.nde.ndAPI,)簡單條件"Customer.IDALFKI'",CustomerCustomer,ID是CustomerCustomerCustomers表,ID映射為CustomerID列。EntityJoin條件"Customer.Order.ShipNameQueryEngineOrderCustomer類的一個屬性,仍然沒有即報錯。最后一列總是屬性,ShipNameOrder實體的屬性。OPath風格指定條件"Customer.Order.ID>100andCustomer.Order.ID!=0",更復雜的路徑表達式:"Customer.Order.OrderLine.ProductIDisnotnull",注意isnotnullProductID列是否為空。Betweenand"Order.OrderLine.UnitPricebetween23and50",邏輯或條件+參數(shù)"OrderLine.UnitPrice14orOrderLine.Quantity@a",參數(shù)以@命名規(guī)則@是ADO.NETXPath中的元素屬性混淆。in"Product.OrderLine.Order.ShipNamein('a','b','CCCC')",like¬like"Product.OrderLine.Order.Employee.LastNamenotlike'D%'",復雜報表查詢兼容性注意問題SQL風格特性的引入,OQLselect關鍵字,否則無法解析。這是新增功能所引起的唯一不兼容的地方,實際上更有助于意識到OQL兩種風格:條件過濾和報表查詢的差異。基本語法(select[Column]{,[Column]}{fromjoinClause}{whereCondition}{groupbycolumns{havingCondition}}orderbycolumns)(union|unionall)(select…)使用實體類沒有別名時假設為當前類的屬性。@"selectdistinctAgefromPersonswhereName='Pat'",@"selectdistinctx.AgefromPersonsx where x..Name='Pat'",from子句from子句可用逗號分隔多個路徑表達式(OPath),innerjoin處理,crossjoin處理。@"selectc.AddressfromPersonsp,p.Childrenc",crossjoin,要對兩個集合作笛卡爾積。@"selectpfromPersonsp,Flowersf wherep.Name=f.Name",@"select*fromAuditLoglog,Paymentpayment",leftjoin左外連接@"select*fromItemitemleftjoinitem.Bidswhereitem.Descriptionlike'%gc%'",OPath表達,OQLCompilerSQLon條件。@"select*fromBidbidleftjoinbid.Itemleftjoinbid.Bidderwherebid.Amount>100",innerjoinjoininnerjoin,OPathleft,right,full,三種外連接,outer關鍵字是可選的,inner也是可選的,OQLCompilerSQLon條件。@"select* fromItemitemjoinitem.Bidsbidwhereitem.Descriptionlike'%gc%'andbid.Amount>100",@"select*fromItemifulljoini.Selleruwhereu.UserName='steve'",@"selectitem.IDfromItemitemrightjoinitem.Bidswherebid.Amount>100",@"selectitem.ID,item.Description,bid.AmountfromItemitemrightouterjoinitem.Bidsbidwherebid.Amount>100",@"select*fromCatascatinnerjoincat.Mateasmateleftouterjoincat.Kittensaskitten",@"select*fromCatascatcrossjoincat.Mate.Kittensaskittens",@"select*fromCatascatleftouterjoincat.Kittensaskittenonkitten.BodyWeight>10.0",CrossjoinOQLCompilerSQLon條件。@"select*fromUseruser,LogRecordlogwhereuser.UserName=log.UserName",Distinct關鍵字@"selectdistinctitem.DescriptionfromItemitem"。數(shù)據(jù)庫函數(shù)upper,任意這樣的數(shù)據(jù)庫函數(shù),用戶自定義函數(shù)可隨意使用@"selectitem.StartDate,item.EndDate,upper(item.Name)fromItemitem",CountCount(*)@"selectcount(*)fromItem",Count@"selectcount(item.SuccessfulBid)fromItemitem",Count(distinct…)@"selectcount(distinctitem.Description)fromItemitem",Min,Max@"selectmin(bid.Amount),max(bid.Amount)fromBidbidwherebid.Item.ID=1",@"selectmax(BodyWeight)asmax,min(BodyWeight)asmin,count(*)asnfromCatcat",Groupby@"selectbid.Item.ID,count(bid),avg(bid.Amount)fromBidbidwherebid.Item.SuccessfulBidisnullgroupbybid.Item.ID",@"selectuser.LastName,count(user) fromUseruser groupbyuser.LastNamehavinguser.LastNamelike'A%'",子查詢INPredicate中@"selects.SalaryfromStudentswheresin(selectsec.AssistantfromSectionssec)",EXISTSPredicate中@"selectscope1fromPersons,Citiescwhereexists(selectscope2fromChildrensaschild)",(correlatedsubquery)@"select*fromUseruwhere10<(selectcount(i)fromu.Itemsiwherei.SuccessfulBidisnotnull)",嵌套的標量子查詢(nestedscalarsubquery)@"select*fromBidbidwherebid.Amount+1>=(selectmax(b.Amount)fromBidb)",全稱子查詢@"select*fromItemitemwhere100>all(selectb.Amountfromitem.Bidsb)",存在子查詢@"select*fromItemitemwhere100<any(selectb.Amountfromitem.Bidsb)",@"select*fromItemitemwhere100=some(selectb.Amountfromitem.Bidsb)",@"select*fromDomesticCatascatwherecat.Name=some(selectname.NickNamefromNameasname)",@"select*fromCatascatwherenotexists(select*fromCatasmatewheremate.Mate=cat)",子查詢用在in謂詞中@"select*fromItemitemwhere100in(selectb.Amountfromitem.Bidsb)",@"select*fromDomesticCatascatwherecat.Namenotin(selectname.NickNamefromNameasname)"where條件中@"select*fromCatasfatcatwherefatcat.Weight>(selectavg(cat.Weight)fromDomesticCatcat)",select子句中@"selectcat.id,(selectmax(kit.weight)fromcat.kittenkit)fromCatascat",from子句中作為”derivedclass”@"select*fromCataleftjoin(selectp.NamerfromPlayerpwhere3>count(p.Scores))bonc.Name=b.Namewherec.Age>3",dateadd/datediff/datepart/datename中關鍵字的支持現(xiàn)在可以支持在dateadd/datediff/datepart/datename四個函數(shù)調用中用T-SQL風格的關鍵字day/year/month,etc,但是這不是一種標準和同一的風格,建議用字符串即單引號的方式.函數(shù)名大小寫均可。@"selectdateadd(day,3,'20061031')fromProducts"@"selectdateadd('day',3,'20061031')fromProducts";'20061031',getdate())fromProducts";@"selectdatediff(dd,'20061031',getdate())fromProducts";@"selectdatepart(month,'20061031')fromProducts";@"selectdatepart('month',getdate())fromProducts";@"selectdatename(Hour,getdate())fromProducts";@"selectgetdate()fromProducts";@"selectgetutcdate()fromProducts";@"selectday(getdate())fromProducts";@"selectmonth(getdate())fromProducts";@"selectyear(getdate())fromProducts";對cast類型轉換函數(shù)的支持OQLcast必須以下述純函數(shù)風格調用@"selectcast('abc',varchar(5))fromProducts";convert函數(shù)使用沒有特殊限制@"selectCONVERT(bigint,convert(varbinary(20),5.1))fromProducts";字符串函數(shù)注意字符串函數(shù)中,leftrightleftjoinrightjoinleftright用作字符串函數(shù)名時不能用小寫,全大寫或大小寫混合均可。@"selectLeft('abc',2)fromProducts";@"selectRIGHT('abc',2)fromProducts";Update&Delete語句的支持@"updateUFIDA::U9::CBO::PL::PriceList::PriceListpsetp.ID=10232wherep.ID<0";@"updateUFIDA::U9::CBO::PL::PriceList::PriceListsetID=10232whereID<0";@"deletefromUFIDA::U9::CBO::PL::PriceList::PriceListpwherep.IDisnulland1=2";@"deletefromUFIDA::U9::CBO::PL::PriceList::PriceListwhereIDisnulland1=2"注意1、UpdateDelete語句只能用來操縱報表編程中的臨時表,其它情形下行為不可預料。2、Deletefrom關鍵字是必選,這與SQLServerOraclefrom可省的習慣不同,但與SQL99標準兼容。3、OQLupdate/delete可使用表別名,SQL不支持。OQL查詢風格如下所示:select2asApplyDocType,3asDocTag,billhead.idasDocDataTag,billhead.DocNo+billline.LineNumasDataNo,billhead.ReceivalDateasDataDate,0asPriorityGrade,0asDocOrderNo,billhead.ReceivalCurrencyasDocCurrency,billhead.RCToFCExchRateasDocExchangeRate,0asCanEnjoyDiscount,asSettlementMethod,billhead.Department.NameasDepartment,Transactor,billhead.ReceiverasReceiver,billhead.Project.NameasProject,nullasItembillheadinnerjoinbillhead.ReceivalBillLinebilllinewherebillhead.Organization=1002006051600036001andbillhead.HasSubReceive=0='C01'andbillhead.ReceivalCurrency=1105400andbillhead.ID=25809101使用別名風格從本質上更體現(xiàn)了ObjectQuery的本質語義,即OQL其實是在查詢集合,billhead,billline可以理解成foreach的循環(huán)變量,理解這種風格會使我們U9的應用開發(fā)人C3.0VisualStudio2008C3.0的語言查詢功能。join的,用別名形式,形如UFIDA::U9::AR::Receival::ReceivalBillHeadainnerjoina.ReceivalBillLinebfrom.B.B.C,可寫為:fromAaleftjoina.Bbleftjoinb.Cc,select子句,where子句,導航表達式的級數(shù)沒有限制。+相對于主實體開始的導航表達式如下所示:select2asApplyDocType,asDocTag,idasDocDataTag,DocNo+ReceivalBillLine.LineNumasDataNo,ReceivalDateasDataDate,0asPriorityGrade,0asDocOrderNo,RCToFCExchRateasDocExchangeRate,0asCanEnjoyDiscount,asSettlementMethod,Department.NameasDepartment,ReceiverasReceiver,Project.NameasProject,nullasItemwhereOrganization=1002006051600036001andHasSubReceive=0andCustomer.CustomerCode='C01'andReceivalCurrency=1105400andID=25809101joinOQL的標準形式。SQL風格的類名.屬性名是不支持的。SQL的習慣和特征。用戶自定義函數(shù)與SQL標準函數(shù)SQL標準函數(shù)不用任何特殊處理,直接在OQL語句中當函數(shù)使用,只是對應的參數(shù)用對xml文件(udf.xml)中注冊:<?xmlversion="1.0"?><udf-binding><udffunction="hello"/><udffunction="puke"owner="sys"/></udf-binding>hello定義如下:createfunctionhello()returnsnvarchar(40)asbeginreturn'HelloFaint!'endownerOQLdbo這樣:"selectIDasIDhelloDocType.IDasDocTypefromUFIDA::U9::CBO::PL::PriceList::PriceList"將被翻譯為:@"selectA1.[ID]as[ID],dbo.hello(),A2.[ID]as[DocType]fromCBO_PriceListasAinnerjoin[Base_Doc]asA1on(A.ID=A1.ID) leftjoin[Base_DocType]asA2on(A1.[DocType]=A2.[ID])"臨時表View,a.k.a.NamedOQL來實現(xiàn),將API來體現(xiàn),在語法上與EntityView的使用沒有區(qū)別。以下是一個通過BE封裝的,在報表DataCommand中臨時集合使用例子。注意EntityViewQueryusing語句。usingSystem;usingSystem.Data;usingUFSoft.UBF.Report.Entity;usingUFSoft.UBF.Report;usingUFSoft.UBF.Report.Interface;usingUFSoft.UBF.Sys.Database;usingUFSoft.UBF.Business;usingUFSoft.UBF.View.Query;{///<summary>///OQLReportCommand的摘要說明。///</summary>publicclassOQLReportCommand:BaseReportDataCommand{privateEntityViewQueryq=newEntityViewQuery();publicOQLReportCommand(){////TODO:在此處添加構造函數(shù)邏輯//}publicoverrideIDataReaderExecuteDataReader(){(集合)Schema,用來創(chuàng)建//臨時集合對象。ObjectQueryquery=q.CreateQuery("select*fromAssociation::A_Ass1to1");//query對象查詢?yōu)閟chema創(chuàng)建臨時表。//這相當于執(zhí)行select*into#aaaViewfromA_Ass1to1.using(IDataReaderreader=q.ExecuteReader("aaaView",query)){//TODOwhatyoulike.}DataSetresult=q.ExecuteDataSet(query);{//TODOWhatyouwant.}//相當于執(zhí)行select*from#aaaView.aaaView是前面定義的臨時集合對象。IDataReaderreader2=q.ExecuteReader(q.CreateQuery("select*fromaaaView"));returnreader2;}}}publicintExecuteNonQuery(stringTempVariable,ObjectQueryquery,paramsUFSoft.UBF.PL.OqlParamoqlParameters)Queryint,表示受影響的紀錄數(shù)。ds,注意這個dsEntityViewQuery方newEntityViewQueryq=newEntityViewQuery();inti=q.ExecuteNonQuery("aaaView",q.CreateQuery("select*fromAssociation::A_Ass1to1"),null);Assert.IsTrue(i>0);EntityViewQueryq=newEntityViewQuery();DataSetds0=q.ExecuteDataSet(q.CreateQuery("select*fromAssociation::A_Ass1to1whereid>@ttt"),newOqlParam(1));ds0.Tables[0].Rows[1][4]);row[4]="yel";q.UpdateDataSet(ds0);ds0=q.ExecuteDataSet(q.CreateQuery("select*fromAssociation::A_Ass1to1whereid>@ttt"),newOqlParam(1));ds0.Tables[0].Rows[1][4]);全景體驗最后,來一次大規(guī)模的全景體驗:@"selecto.id,sum(price.amount),count(item)fromOrderasojoino.lineItemsasitemjoinductasproduct,Catalogascatalogjoincatalog.pricesaspricewhereo.paid=falseando.customer=@customerandduct=productandcatalog.effectiveDate<sysdateandcatalog.effectiveDate>=all(selectcat.effectiveDatefromCatalogascatwherecat.effectiveDate<sysdate)groupbyohavingsum(price.amount@minAmountorderbysum(price.amount)desc"。本章導讀本章主要介紹U9二次開發(fā)通用命名規(guī)范命名通用規(guī)范命名方法概述itemInfo;ItemInfo;btnSave,txtName;使用規(guī)范PascalCamelvoidGetInfoByCode(stringstrCode)2)類或者函數(shù)中聲明的常量,變量3)私有類成員變量UIU9標準產(chǎn)品發(fā)布對象對照表ID代碼節(jié)點層次名稱30000101CBO2基礎設置30020201GL230030202AR2應收管理30040203AP2應付管理UBFUBF與客開U9實施應用寶典—應用篇PAGEPAGE53PAGEPAGE5430050204NM2票據(jù)管理30060205TI2稅務發(fā)票30070206CM2現(xiàn)金銀行30080207CFP2現(xiàn)金流監(jiān)控30090208FA2固定資產(chǎn)30100209ER2費用報銷30150503SD2銷售與分銷30160504PM2采購管理30170505INV2庫存管理30210601BOM2工程數(shù)據(jù)30230603CRP2細能力30240604ECN2工程變更30250605MO2生產(chǎn)管理30270607SFC2車間管理30280608MRP2需求計劃30300610MOOS2可視化排程30320901CA2成本會計30330902IC2料品成本30340302PA2薪資管理30350303BEN2福利保險30410301HM2人事管理30511001CP2客戶門戶30521002VP2供應商門戶30610701QC2質量管理30711201CS230810508DM2渠道管理31011101SM2系統(tǒng)管理32010210GC2全球合并32020211RET2關系企業(yè)交易32030212FN2資金結算33010213TB2全面預算34021301PMM2項目計劃控制34031302CBS2項目成本命名空間規(guī)范概述使用層次模型組織類,其優(yōu)點是可以防止對象命名上的沖突。組成要素公司名.產(chǎn)品線.客戶化.行業(yè).一級模塊.二級模塊UFIDA.U9.Cust.行業(yè).一級模塊.二級模塊要素說明UFIDA產(chǎn)品線:U9客戶化:Cust行業(yè): CBO-公共TY -糖業(yè)JG YC-煙草YY-醫(yī)藥FZ-服裝PM -項目Note:行業(yè)的劃分和縮寫命名待進一步確認規(guī)則與約束公司名(UFIDA)、產(chǎn)品線(U9)、客戶化(Cust)是固定不變的;U9一級模塊、二級模塊可根據(jù)具體的項目情況自行定義,但要用縮寫、命名要有含義;舉例說明加多寶營銷管控平臺:UFIDA.U9.Cust.PM.:UFIDA.U9.Cust.TY.解決方案規(guī)范概述(SG)的基本單元。U9U9實施應用寶典—應用篇UBFUBF與客開PAGEPAGE100PAGEPAGE57約束規(guī)則“Cust_”+二級名稱和前臺(UI)AppUI示例件后綴名)Cust_Order.ubfsln項目規(guī)范概述一個解決方案下可有多個項目,模型項目組主要包括實體項目、操作項目、服務項目、UI項目、報表項目、查詢項目。約束規(guī)則(BE、BP、SV、UI、Rpt)項目粒度劃分規(guī)則BEBE務組下的實體。BP、SV示例如紅框所示:裝備件規(guī)范概述UFIDA.U9.Cust.OrderBE,那么編UFIDA.U9.Cust.OrderBE.dll。約束規(guī)則“UFIDA.U9.Cust.”+項目名。示例UFIDA.U9.Cust.OrderBEUFIDA.U9.Cust.OrderDocTypeUI如果涉及客開模塊較多,可以在項目名中加入服務組,如UFIDA.U9.Cust.SCM.OrderDocTypeUI。組件規(guī)范概述UBFUIFromRef(參照)組件報表模板項目:報表模板組件約束規(guī)則BE組件主實體名稱+“BE”BP組件“BP”結尾即可SV組件“SV”結尾即可UIModel組件與實體組件綁定的UIModel:主實體名稱+“UIModel”UIModel:以“UIModel”結尾即可UIForm組件與實體組件綁定的UIForm:主實體名稱+“UIForm”“UIForm”結尾即可參照組件參照實體名稱+業(yè)務含義+“Ref”“業(yè)務含義”可以是:1)Find;該參照用于相應工具欄“查找”按鈕事件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論