X+(xPlus)部署指南
1. 關於“X+”
“X+”是一套集開發環境與執行環境於一體的輕量級5S(Simply)軟體平臺,旨在將各種應用的個性化定製、部署及使用等簡單化,適用於網際網路+、大資料、雲端計算、BI、O2O、CRM、OA、ERP、知識庫、企業資訊化、呼叫中心、智慧城市、數字工廠、智慧車間等應用軟體的開發和個性化定製,同時它還是跨平臺、安全、高效並支援應用專屬定製的SOA軟體應用執行平臺,很好的解決了應用多樣化、個性化、差異化問題,其應用介面、資料關係、業務邏輯均可按照使用者的需求線上修改,定製的應用無需調整即可相容電腦APP、手機APP、Web瀏覽器等方式訪問。穩定好用、符合使用者習慣、跨平臺使用者體驗相同、易個性化定製。
平臺以軟體開發和應用設計相分離的核心思想,以簡化軟體應用的設計開發及個性化需求定製為目標,提供高效穩定的跨平臺軟體應用的快速個性化定製平臺,依託該平臺:軟體應用設計無需專業的軟體開發人員即可完成,並可隨時隨地修改調整如應用邏輯、顯示介面等等,既大大降低軟體應用的開發難度,還縮短應用上線週期,也大幅減少開發成本,其極大的靈活性極大的方便應用最大限度的貼合業務/客戶需求。
平臺以C/S架構為主(提供PC、手機客戶端)、B/S架構為輔(提供相容的Web Service),提供涵蓋但不限於資料採集、分析處理、執行的多媒體資訊通訊功能,方便各類資訊透過PC、手機、平板電腦及各類軟硬體(如感測器)資訊輸入採集,傳送至伺服器透過演算法倉庫進行處理後進行顯示或驅動相應執行元件輸出或驅動硬體執行。
平臺特點:
1. 業務執行平臺,即可以承載大量不同行業不用型別的多使用者差異化業務應用(不同於一個平臺只能提供單一應用);
2. 定製靈活簡單,超強個性化能力,無需軟體開發人員參與便能快速按需定製應用,應用設計類似於WORD、PPT之類文件編輯儲存釋出,同時節約應用開放成本和開發週期達90%;
3. 跨平臺一次定製,多平臺裝置相容,即所定製的應用同時支援客戶端、瀏覽器,無需單獨為手機/平板電腦等裝置單獨定製APP;
4. 相容性強,經測試可以在目前所有PC、智慧終端上執行良好,無使用者人群限制,最大限度保證使用者便捷;(Windows2000以上任何版本,Android2.3以上(含64位),Web:IE8及以上及其他瀏覽器)
5. 該平臺同時融合了多媒體通訊,並且開放簡單易用的類COM第三方軟硬體介面,方便各類硬體如感測器、馬達等以及軟體融入系統;
6. 穩定高效,響應速度快,即使WEB訪問其高執行效率及獨特的響應機制給使用者客戶端的使用者體驗;
整個平臺核心採用C++開發,保證了系統得穩定高效。
2. 平臺組成
1、 平臺標準規範:BizXML,定義“X+”的介面、資料關係、業務邏輯等,“X+”系統的服務端、客戶端、Web服務引擎等遵循該規範並按照該規範處理顯示頁面執行業務邏輯等;
2、 C/S服務端:“X+”伺服器軟體,處理客戶端的登入及各種請求,配合客戶端處理應用邏輯、與資料庫通訊,並透過介面與第三方軟硬體通訊、呼叫AI等引擎及各種演算法等;
3、 C/S客戶端:Windows客戶端、Android客戶端等,處理使用者登入,根據“X+”應用規定顯示介面及處理相應的業務邏輯,透過介面與第三方軟硬體通訊等;
4、 B/S引擎:“X+”Web服務引擎cgi,提供web方式使用“X+”應用,解析應用的BizXML指令碼,處理使用者透過瀏覽器訪問及各種請求,處理應用邏輯、與資料庫通訊,並透過介面與第三方軟硬體通訊、呼叫AI等引擎及各種演算法等;
5、 類Com介面,開放給第三方軟硬體、演算法等,實現諸如感測器、馬達、AI介面引擎、物聯網裝置等互動;
6、 表格邏輯xLogic:基於Table的業務邏輯,方便應用邏輯設計,簡化邏輯的設計與執行,“X+”的服務端、客戶端、Web服務引擎均支援;
7、 BizTool自動化工具,根據資料庫表結構自動生成結構化SQL語句、關聯頁面控制元件生成應用程式碼BizXML,可實現0程式碼應用設計,並提供邏輯除錯等;
8、 xLogic邏輯設計測試工具xLogicDesiner,提供視覺化表格邏輯的編輯設計除錯等。
3. 應用設計規範
“X+”的介面、資料關係、業務邏輯等遵循BizXML標準,請參考
4. 應用介面示例
1) 電腦客戶端:
2) 手機客戶端
3) 電腦瀏覽器訪問
4) 手機瀏覽器訪問
5. 平臺部署準備工作
軟體下載
伺服器軟體:
3UCS Server(Window2000及以上,含Win10)安裝程式裡打包了X+伺服器軟體,3UCS命名其為智慧業務平臺,對應的執行程式為i3ubi.exe,配置檔案為i3ubi.ini,傻瓜式安裝即可,安裝完成後需自行完成資料庫等引數的配置。
下載地址:
軟體應用資源包:
WebService的支援採用的是CGI方式,亦打包在3UCS Server安裝程式裡,需Apache之類HTTP Server配合提供服務。
下載地址:
客戶端
PC客戶端(Window2000及以上,含Win10),提供X+客戶機及電話/影片等功能(vista、win7、win2008server語音功能需打補丁sp1<windows6.1-KB976932-***>)。
下載地址:
[3UCS XOne]
[3UCS NISU]
Android客戶端(Android2.3及以上,含64位)
下載地址:
iOS客戶端:應該在2020年釋出請關注下載頁面:
6. 伺服器軟體安裝
(工作於C/S(客戶機/伺服器)模式)
3UCS命名其為智慧業務平臺,對應的執行程式為i3ubi.exe,配置檔案為i3ubi.ini,傻瓜式安裝即可,安裝完成後需自行完成資料庫等引數的配置。
管理介面可: ,管理初始帳號:3ucs,無密碼,主要是配置資料庫部分,其他的不用管。
7. Web Service安裝
提供X+對web瀏覽器的支援,採用CGI方式,需Apache等支援,經測試主流瀏覽器訪問均正常(IE8及以上、firefox……
參見安裝目錄下help/install(of BizXML for web).htm
(Apache下載地址: )
8. X+使用者登入與鑑權
使用者登入時系統依照下述順序逐一鑑權至成功,一旦成功即返回忽略後續鑑權方式:
1、i3ubi配置的[SQL]使用者鑑權
2、i3ubi配置的[AltAuthSql]使用者鑑權
3、xrulelayout.xml(layout目錄,使用xLogic檢視編輯修改)基於domain的使用者鑑權及Anoymous頁面
自帶應用與賬號登入【為安全起見,請及時修改這些賬號的初始密碼】
伺服器安裝完成後在3UCS Server安裝目錄下的Layout/demo資料夾會有預設應用“Example5.xml”,使用賬號“6178”密碼“6178”登入預設使用的就是該應用。
同時可能還預設安裝了“layout\demo\btsqlite.xml”、“layout\demo\btmssql.xml”、 “layout\demo\btmysql.xml”三個應用,預設配置的賬號分別是“6179”、“6176”、“6177”,密碼均為“123456”,SQLite資料庫應該預設安裝成功,如果您需要測試MSSQL、MySQL(MySQL還需要安裝ODBC驅動,下載地址 ),則需要您自行安裝資料庫並配置好資料庫連線,這三個資料庫版本都帶有BizTool自動化工具,您可以使用他們來生成您想要的應用頁面。
下列圖例分別為6178、6179、6177、6176成功登入後顯示的介面:
需要注意的是應用的根檔案(如“btmysql.xml”)需要您配置資料庫相關引數,例如:
<DbDetails>
<SubDriver>MySQL</SubDriver>
<Host>localhost</Host>
<database>mylayout</database>
<characterset>utf8</characterset>
<sqlMode>NO_BACKSLASH_ESCAPES</sqlMode>
<User>i3u</User>
<password>i3u</password>
<config>……</config>
<purview>……</purview>
</DbDetails>
9. X+應用的部署(快速篇)
新增應用:將新的應用解壓至某個資料夾,例如將應用“test”的檔案解壓至安裝目錄下“layout/test”,應用的根檔案為“test.xml”,那麼我們可以在預設應用的使用者管理裡新增賬號“6170”,對應的應用(窗體佈局)為“layout/test/test.xml”,,使用6170賬號登入便呈現的是“test”。
您也可以使用者鑑權全部交由您自己的應用來完成,這時您需要注意:
1) 使用xLogic(xLogicDesigner)開啟3UCS Server安裝目錄下“layout/xrulelayout.xml”編輯並編譯規則儲存為原檔案,下圖示將所有未新增的使用者的應用設定為layout/ucin/mylayout.xml:
2) 如需鑑權需在前述<DbDetails>……<config>……</config></DbDetails>配置類似語句(需返回“password”: select u.user_password as Password,u.user_code,r.role_layout as layout,r.case_owner,u.bizdep,u.bizrole,u.active,r.role_purview as purview from userlogin as u left join bizrole as r on u.bizrole=r.role_id where user_name='%{UserName}'
3) 使用應用的使用者不應該出現在前述“使用者管理”裡。
【 注:本處為快速簡單部署,實際專案部署應該是單應用或單型別資料庫,可按照專業部署指南來實施。】
10. BizXML自動化工具
自動根據資料庫結構生成BizXML應用程式碼
參考:
11. 開發者模式
3UCS XOne客戶端提供了xPlus的“開發者模式”,開發者可以在該模式啟用後檢視控制元件應用程式碼、控制元件屬性、參變數及事件觸發序列等,也可以線上修改屬性來調整修改UI或業務邏輯邏輯等。
開啟“開發者模式”需在服務端設定,i3ubi.ini有兩個引數需配置“Secret”,“Developer”,也可以透過web方式修改()。
保密:secret,預設為true,即客戶端不能檢視應用程式碼,也不可以開啟開發者模式修改除錯應用
開發者:developer,是否開啟或何種方式開啟開發者模式,預設關閉,值為“1”開啟程式碼檢視,值為字串(密碼MD5值,可以透過XOne的“Get MD5”選單生成)則輸入授權碼與該值匹配才可以開啟開發者模式(可編輯),該可以是純密碼(授權碼),亦可以是登入名+密碼,也可以是登陸使用者的sessionId(每個使用者每次登入的sessionId都不一樣,可在服務端log日誌查到)。
參考:
12. X+Logic表格邏輯規則引擎
x+Logic介紹及 Designer視覺化編輯/設計工具
參考:
13. X+之NOSQL支援
3UCS NoSQL
NoSQL是基於google的LevelDB二次開發的時序資料庫,並提供SQL語法支援。
ID為記錄插入的時間ms(毫秒)值,score為ID的分鐘值即Value(ID)/6000。
iot資料庫擁有key“topic”,immsg資料庫擁有key“recvfrom”“sendto”
查詢語句類似於MySQL語句,預設倒序查詢,select [columns] from [table] where [where] order by order limit [limitstr] key [keystart] score [score]
limit的offset可略去即limit 0,100;limit 100;limit ,100都合法,都是取前100條記錄
score可以指定score_start,score_end;例如score 0,100000;score 10000;score ,1000000均合法,另外可以使用時間值來設定score,例如score 1 hour ago 表示查詢一小時前的;score ,1 hour ago表示查詢現在至一小時前的記錄;score 2021-05-01表示查詢2021-05-01之前的記錄
示例:
select * from iot;
select * from iot where topic='xxx';
select * from iot limit 0,100 score ,4 week ago
select %{dev_data[columns]} from iot where topic='%{dev_data[dev_type]}/%{dev_data[dev_id]}/%{dev_data[data_id]}/%{dev_data[data_param]}' limit 0,100 score ,4 week ago
select * from iot limit 100 score now();
select * from iot where topic='%{mqtt_topic}' limit 0,100 score now(),2021-05-05 20:10
select * from iot where topic='devices/desoutter01/sys/61/detail' and key='%{YU5A4A554012100410003818643410}'
14. X+與IOT
3UCS IOT
IOT 支援包括但不侷限於MQTT(包括MQTTSN)、Modbus、Open Protocol、PLCS12、OPC、OPC UA、Serial Port、MTConnect、SNMP、PROFINET、NC-LINK等協議,並提供介面方便動態增加其他未知協議。
MQTT埠預設配置為TCP/UDP:998(MQTT/MQTTSN);web socket:996;
[MQTT](3UCS xPlus配置檔案i3ubi.ini之MQTT節)
# MQTT section (tcp ports)
mqtt_iface = eth0
mqtt_port = 998
mqtt_tls_port = 997
mqtt_ws_port = 996
mqtt_ws_tls_port = 995
# MQTT-SN section (udp port)
mqttsn_iface = eth0
mqttsn_port = 996
其它協議如Modbus、Open Protocol、PLCS12等都在daq.conf檔案配置,採用的xml格式。示例如下:
<daq clientid="test">
<device id="desoutter01">
<acqer proto="openprotocol" devaddr="1" ip="192.168.1.100" port="5056" timeout="500">
<item id="1" name="keepalive" cycle="10" funcode="9999"/>
<item id="2" name="psetdo" cycle="5" acquire="false" funcode="18"/>
<item id="3" name="psetbatchsize" cycle="5" acquire="false" funcode="19"/>
<item id="4" name="distool" cycle="5" acquire="false" funcode="42"/>
<item id="5" name="entool" cycle="5" acquire="false" funcode="43"/>
<item id="6" name="vin" cycle="5" acquire="false" funcode="50"/>
</acqer>
</device>
<device id="posco01">
<acqer proto="modbus" devaddr="1" ip="192.168.1.12" port="502">
<item id="1" name="rs" cycle="1" funcode="2" startaddr="1" count="1"/>
<item id="2" name="tightenok" cycle="5" funcode="5" startaddr="1" count="1"/>
<item id="3" name="reset" cycle="1" funcode="5" startaddr="7" count="1"/>
<item id="4" name="jobs0" cycle="1" funcode="5" startaddr="5" count="1"/>
<item id="5" name="jobs1" cycle="1" funcode="5" startaddr="6" count="1"/>
<item id="6" name="jobs2" cycle="1" funcode="5" startaddr="4" count="1"/>
<item id="7" name="start" cycle="1" funcode="5" startaddr="3" count="1" delay="50"/>
</acqer>
</device>
<device id="disp01">
<acqer proto="modbus" devaddr="1" ip="192.168.0.250" port="502">
<item id="1" name="med_pos1" cycle="5" funcode="6" startaddr="0" count="1"/>
<item id="2" name="med_pos2" cycle="5" funcode="6" startaddr="2" count="1"/>
<item id="3" name="med_pos3" cycle="5" funcode="6" startaddr="4" count="1"/>
<item id="4" name="med_pos4" cycle="5" funcode="6" startaddr="6" count="1"/>
<item id="5" name="med_pos5" cycle="5" funcode="6" startaddr="8" count="1"/>
<item id="6" name="med_cnts" cycle="5" funcode="6" startaddr="10" count="1"/>
<item id="7" name="ind_shangdai" cycle="5" funcode="6" startaddr="11" count="1"/>
<item id="8" name="ind_fengdai" cycle="5" funcode="6" startaddr="12" count="1"/>
<item id="9" name="ind_startstop" cycle="5" funcode="6" startaddr="13" count="1"/>
<item id="10" name="getweight" cycle="5" funcode="3" startaddr="30" count="1" />
<item id="11" name="return_finish" cycle="5" funcode="1" startaddr="31" count="1"/>
</acqer>
</device>
<device id="cab01">
<acqer proto="modbus" devaddr="2" ip="192.168.0.7" port="502" subproto="rtu">
<item id="1" name="light1" cycle="5" funcode="6" startaddr="1" count="1"/>
<item id="2" name="light2" cycle="5" funcode="6" startaddr="2" count="1"/>
<item id="3" name="light3" cycle="5" funcode="6" startaddr="3" count="1"/>
<item id="4" name="light4" cycle="5" funcode="6" startaddr="4" count="1"/>
<item id="5" name="light5" cycle="5" funcode="6" startaddr="5" count="1"/>
<item id="6" name="light6" cycle="5" funcode="6" startaddr="6" count="1"/>
<item id="7" name="light7" cycle="5" funcode="6" startaddr="7" count="1"/>
<item id="8" name="light8" cycle="5" funcode="6" startaddr="8" count="1"/>
<item id="9" name="light9" cycle="5" funcode="6" startaddr="9" count="1"/>
<item id="10" name="light10" cycle="5" funcode="6" startaddr="10" count="1"/>
<item id="11" name="light11" cycle="5" funcode="6" startaddr="11" count="1"/>
<item id="12" name="light12" cycle="5" funcode="6" startaddr="12" count="1"/>
<item id="13" name="light13" cycle="5" funcode="6" startaddr="13" count="1"/>
<item id="14" name="light14" cycle="5" funcode="6" startaddr="14" count="1"/>
<item id="15" name="light15" cycle="5" funcode="6" startaddr="15" count="1"/>
<item id="16" name="light16" cycle="5" funcode="6" startaddr="16" count="1"/>
<item id="17" name="light17" cycle="5" funcode="6" startaddr="17" count="1"/>
<item id="18" name="light18" cycle="5" funcode="6" startaddr="18" count="1"/>
<item id="19" name="light19" cycle="5" funcode="6" startaddr="19" count="1"/>
<item id="20" name="light20" cycle="5" funcode="6" startaddr="20" count="1"/>
<item id="21" name="light21" cycle="5" funcode="6" startaddr="21" count="1"/>
<item id="22" name="light22" cycle="5" funcode="6" startaddr="22" count="1"/>
<item id="23" name="light3" cycle="5" funcode="6" startaddr="23" count="1"/>
<item id="24" name="light24" cycle="5" funcode="6" startaddr="24" count="1"/>
<item id="25" name="light25" cycle="5" funcode="6" startaddr="25" count="1"/>
<item id="26" name="light26" cycle="5" funcode="6" startaddr="26" count="1"/>
<item id="101" name="lights" cycle="60" funcode="3" startaddr="1" count="26" valtype="string"/>
</acqer>
</device>
<device id="PLC01">
<acqer proto="plcs12" devaddr="1" ip="192.168.1.238" port="8200">
<item id="1" name="cpux238" valtype="string" cycle="30" funcode="0" cmd="45"/>
<item id="2" name="formcd" valtype="string" cycle="3600" funcode="0" cmd="35"/>
<item id="3" name="prodmg" valtype="string" cycle="3600" funcode="0" cmd="37"/>
<item id="4" name="prodset" valtype="string" cycle="3600" funcode="0" cmd="47"/>
</acqer>
</device>
</daq>
引數說明 device id為device識別id,也在MQTT對映中topic標識裝置,
acqer對應於裝置不同協議的資料採集與更新,其protocol為使用的協議,如modbus、open protocol等,devaddr不同協議或廠家不一樣,比如modbus中其表示slaveid,可有些廠裝潢置用來區分目標地址,實現產品內部不同的功能;subproto用來增強協議功能,比如modbus在使用TCP轉RTU是仍然使用tcp協議,此時需置subproto="rtu"來告訴系統使用的是modbus rtu而不是modbus tcp; cyclebase 用來調整cycle週期基數,預設值為1000ms,如需求中希望cycle小於1秒,可以將其設定為100ms或其他(eg:cyclebase="100" );timeout為socket receiv timeout,預設值為100ms,可根據需要設定(eg:timeout="500", 設為500ms)
item為給採集項或控制項,不同協議引數意義不相同,delay主要用於modbus的IO輸入輸出場景,某些IO需要delay才能正常響應,(eg:delay="50")
這些協議與MQTT互通,其topic為devices/{device id}/{item name}/{param}/{extparam},支援MQTT的方法如Subscribe/Publish。
例如:topic “devices/desoutter01/psetdo”,“devices/desoutter01/sys/7408”,“subtopic:devices/desoutter01/sys/1”,“devices/desoutter01/sys/14”,“devices/desoutter01/sys/60”“devices/desoutter01/sys/7402”,“devices/desoutter01/sys/7408”,“devices/desoutter01/sys/15”,”devices/desoutter01/sys/61”,“devices/desoutter01/sys/7410/detail”,“devices/desoutter01/acqer_//csvpath”,
“devices/posco01/rs”,“devices/posco01/sys/conn”等均有效
關於更改acqer配置,可以使用publish,topic類似於“devices/desoutter01/acqer_/{proto}/csvpath”,即第三個引數為“acqer_”指明更新的引數為acqer的配置引數,{proto}為需要配置acqer對應的協議,為空時表示該device的首個acqer,當裝置配有多個acqer協議時更改非第一個acqer時應指明協議,例如“devices/desoutter01/acqer_/openprotocol/csvpath”,“devices/posco01/acqer_/modbus/ip”等。
15. X+應用的部署(專業篇)
X+的配置分系統級與應用級,前述(快速篇)是應用級的部署,主要是開發測試階段及小型應用部署。
系統級的配置就會涉及到X+平臺的配置了,主要的配置檔案是i3ubi.ini(3UCS Server安裝目錄)
授權查詢語句(authQuery,使用者登入及相關許可權控制,傳入客戶機引數“UserName”、“ServerName”,至少返回“password”、“layout”值,若密碼鑑權失敗或未返回“layout”值,將呼叫“匿名訪問頁面查詢語句”查詢layout引數,若仍無該引數將使用安裝目錄中“help\i3u.xml” 做為使用者應用佈局,返回的引數值將存續於使用者整個登入期,除非被覆蓋或更新,當使用者指令碼(BizXML)中存在“config”配置時,其各引數仍然有效,但與BizXML的config同名引數將被覆蓋為新值;登入密碼驗證在authQuery中有效,需返回“password”引數值,而對使用者指令碼一旦BizXML出現layout引數將優先取用最後出現的“layout”值。)(此處的資料庫配置、使用者名稱、密碼應與軟交換的使用者鑑權配置一直,否則PC版客戶端NISU可能無法正常登陸)
匿名訪問頁面查詢語句(anoymousQuery,傳入客戶機引數“ServerName”,返回“layout”值,即應用佈局。)
使用者註冊語句(registerQuery,傳入“UserName”、“passwd”,“ServerName”引數,返回行數大於0表示使用者名稱存在。)
使用者名稱是否存在語句(registerCheckUser,傳入“UserName”、“ServerName”引數)
許可權查詢語句(purviewQuery模組訪問許可權控制,需返回module與purview值,當使用者指令碼(BizXML)中存在purview配置時他將在對應的使用者隱藏(即對當前使用者無效)。Module的purview值為真時對應模組將開放給該使用者訪問。)
預設存貯語句(檔案)
即時訊息儲存(StoreIMQuery) 即時訊息的儲存與離線轉發
未讀訊息查詢(unreadImMsg)
未讀訊息更新(unreadImUpdate)
authQuery=select u.user_password as Password,'base' as contactdb,u.user_code,1 as id_corp,r.role_layout as layout,r.case_owner,u.bizdep,u.bizrole,u.active,r.role_purview as purview from userlogin as u left join bizrole as r on u.bizrole=r.role_id where user_name='%{UserName}'
purviewquery=select m.module,m.purview from modules as m left join userlogin as u on u.bizrole=m.role_id where user_name='%{UserName}'
StoreIMQuery=insert into chatmsg values(NULL,'%{sendto}','%{recvfrom}','%{msg}',UNIX_TIMESTAMP(),'%{isread}','%{id_corp}')
unreadImMsg=select idmsg,sendto,msg,tRecved,recvfrom from chatmsg where sendto='%{sendto}' and IsRead=0
unreadImUpdate=update chatmsg set isread=1 where idmsg=%{idmsg}
registerQuery=insert userlogin (user_name,user_password) values('%{UserName}','%{passwd}')
registerCheckUser=select * from userlogin where user_name='%{UserName}'
替換應用:將新的應用的資料庫及資料安裝完成,配置“i3ubi.ini” 或 、“3ugk.ini” 或 ,確保兩者賬號、密碼一致(若使用到3UCS呼叫叫心、會議等,為了整個系統資料一致性,也應配置閘道器、會議、多媒體交換雲、排隊機的相關資料庫配置),將新應用“test1”的檔案解壓至安裝目錄下“layout/test1”,應用的根檔案為“test1.xml”,在資料庫使用者表裡新增賬號例如“6178”對應的應用為“layout/test1/test1.xml”,重啟3UCS服務後“6178”登入後呈現的應用便是“test1.xml”。
需特別說明的是若使用了3UCS其他元件,如呼叫中心、會議什麼的,而“X+”應用又跟這些資料相關,請直接以替換應用的方式來保證資料的一致性。
在這兒需特別提醒的是“授權查詢語句(authQuery)”會返回Layout(例如“a.xml”)作為使用者的應用(窗體佈局),可當返回的佈局裡資料庫配置裡的“config”配置裡也返回了Layout(例如“b.xml”),那麼該使用者的應用將變更為“b.xml”,相關細節參考BizXML規範“ ”。
工作路徑的設定,x+的工作路徑有兩個,一個是rootpath(檔案類存放目錄),一個是bizxmlpath(layout[xml程式碼]存放目錄),預設均為安裝目錄(eg:“****/3ucs/server/”),當設定了bizxmlpath而為設定rootpath時rootpath跟隨bizxmlpath,當二者均有設定而rootpath路徑為指定磁碟機代號其路徑將被認為是bizxmlpath子路經(即相對於bizxmlpath)
bizxmlPath should config to root file of bizxml script files, eg: your bizxml files `index.xml` is put in `D:/Program Files/3UCS/Server/layout/ucin`, configure it like this `bizxmlPath=D:/Program Files/3UCS/Server`, and will refer your bizxml root file like this `layout/ucin/index.xml`。
具體配置細節可參考“3UCS 安裝部署說明”(Server\help\3ucs_User_Manual.htm)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70020543/viewspace-2908722/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL MHA部署 Part 5 MHA部署指南MySql
- Mastodon 生產部署指南AST
- ForefrontSecurityForExchange部署指南
- HTTPS 部署簡要指南HTTP
- 【Invoke AI】安裝部署指南AI
- 漏洞管理平臺『洞察』部署指南
- OpenFaaS的Kubernetes 部署指南
- Helm Chart 部署 Redis 的完美指南Redis
- ZooKeeper管理員指南——部署與管理
- OA Framework 配置、開發、部署指南Framework
- VSAN 7 安裝部署指南(一)
- ZooKeeper管理員指南——部署與管理ZooKeeper
- KubeSphere 部署 Kafka 叢集實戰指南Kafka
- 結合“xPlus”探討軟體架構的創新與變革架構
- Kubernetes部署之終極指南 - semaphoreci
- Kafka高可用叢集部署與配置指南Kafka
- Java Web伺服器部署指南(windows版)JavaWeb伺服器Windows
- Apache SeaTunnel 及 Web 功能部署指南(小白版)ApacheWeb
- Django 靜態檔案管理與部署指南Django
- Jenkins 使用指南 之 團隊部署篇Jenkins
- Kafka 部署指南-好久沒有更新部落格了Kafka
- 大資料平臺生產環境部署指南大資料
- DolphinScheduler分散式叢集部署指南(小白版)分散式
- 踩坑指南:入門OpenTenBase之部署篇
- Kubernetes 部署 - DevOps CI/CD詳細指南dev
- 高校外包公司自動化部署生存指南
- 從零開始:TensorFlow機器學習模型快速部署指南機器學習模型
- 海豚排程任務型別Apache SeaTunnel部署指南型別Apache
- KubeSphere 部署向量資料庫 Milvus 實戰指南資料庫
- SIA-GateWay之API閘道器安裝部署指南GatewayAPI
- ONF釋出安全部署SDN控制器指南
- github actions 入門指南及部落格自動部署實踐Github
- 7. MySQL Galera Cluster全解析 Part 7 Galera Cluster部署指南MySql
- 基於Ansible實現Apache Doris快速部署運維指南Apache運維
- Apache SeaTunnel k8s 叢集模式 Zeta 引擎部署指南ApacheK8S模式
- 關於商業部署機器學習,這有一篇詳盡指南機器學習
- 【nuxtjs指南】nuxt js 利用nginx反向代理如何優雅的部署UXJSNginx
- Cobbler部署指南之安裝虛擬化Xen系統篇薦