TW202147101A - 動態整合應用程式的方法以及應用該方法的軟體系統與機器 - Google Patents

動態整合應用程式的方法以及應用該方法的軟體系統與機器 Download PDF

Info

Publication number
TW202147101A
TW202147101A TW110120418A TW110120418A TW202147101A TW 202147101 A TW202147101 A TW 202147101A TW 110120418 A TW110120418 A TW 110120418A TW 110120418 A TW110120418 A TW 110120418A TW 202147101 A TW202147101 A TW 202147101A
Authority
TW
Taiwan
Prior art keywords
application
executable
volatile
software
content
Prior art date
Application number
TW110120418A
Other languages
English (en)
Inventor
林俊孝
Original Assignee
林俊孝
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 林俊孝 filed Critical 林俊孝
Publication of TW202147101A publication Critical patent/TW202147101A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本發明係一種動態整合應用程式的方法,包括:於一軟體系統中提供一安裝模組,於該安裝模組收到由一自動化配置引擎所發出的一動態安裝請求時,將一可執行對象安裝至該軟體系統;及/或於該軟體系統中提供一導入模組,於該導入模組收到由一應用程式所發出的一可執行狀態時,將與該可執行狀態綁定的一可操作對象儲存於一管理模組;其中,當該可執行對象或該可執行狀態被執行或觸發時,發出一相對應的執行請求,並通過一啟動模組動態載入運行一相對應的揮發性應用程式來完成該執行請求。

Description

動態整合應用程式的方法以及應用該方法的軟體系統與機器
本發明是關於一種動態整合(dynamically integrating)應用程式的方法及運用該方法之軟體系統與機器,尤其是一種讓一軟體系統能夠在沒有先行安裝或引入一揮發性應用程式(volatile application program)的情況下,即可於該軟體系統中,動態安裝該揮發性應用程式、動態載入運行該揮發性應用程式,以及動態導入該揮發性應用程式的作業流程,並且能夠動態生成一超級應用(super app)及/或一物聯網控制中心的操作環境的有效方法及運用該方法之軟體系統與機器。
自從計算機科學發展以來,不論是軟體平台、操作系統,或者是任一種可被程式擴充的軟體系統,軟體開發人員已經習慣透過應用程式介面(API)和軟體開發套件(SDK)來進行各式各樣的系統整合。在普遍熟知的做法中,軟體開發人員必須遵循著應用程式介面和軟體開發套件所定義的規則,完成各種動態連結類別庫(dynamic-link library)、軟體元件(software component),或者是應用程式(App)的開發,並進而將其安裝或引入至一軟體系統中,使該軟體系統能夠在執行時期將其載入於由該軟體系統所產生的操作環境中執行,透過這個方式,讓該軟體系統能夠在不更動原始程式的條件下,將該類別庫、軟體元件,或者是該應用程式所提供的運算服務,擴充至該軟體系統中,以實現系統整合。
資訊科技產業的發展,從產品型態上做區分,應用生態主要是由兩種不同類型的軟體公司所推動,其一是以提供操作系統(operating system)及/或軟體平台(software platform)為主要業務的系統供應商,其二則是以提供應用程式(App)為主要業務的服務提供商。
「系統供應商」提供的操作系統及/或軟體平台就像是一個入口(portal),讓用戶能夠經由該入口對不同的資料和工具進行管理與操作。Android操作系統為例,手機供應商在手機上預先安裝Android操作系統後,銷售給用戶使用。手機開機後,會在螢幕上投影(project)出一個由Android操作系統所提供的操作環境,讓用戶可以經由該操作環境的介面,管理和操作儲存於內存或記憶卡中的檔案,以及管理和操作安裝於該操作環境中的應用程式;WeChat是另外一個典型的例子,首先,它是從一個提供即時通訊服務的應用程式(App)開始發展,藉著即時通訊服務的普遍性需求,深入每一用戶的日常生活後,開始引入小程序(mini program),朝向軟體平台的方向發展,成為一超級應用(super app)。WeChat執行的時候,會在螢幕上投影出一操作環境,用戶可以透過該操作環境來管理和操作即時通訊服務裡的資料,也可以管理和操作引入於該操作環境的小程序。其中,小程序(mini program)本身也是一應用程式,將一小程序引入該用戶的WeChat操作環境的行為,也可以被視為是一種安裝的行為。
「服務提供商」所提供的應用程式是作為一種工具,每一種應用程式都是用來協助用戶對特定領域的運算服務進行存取和操作。對於用戶來說,每一個應用程式在執行時期,也都同樣會在螢幕上,提供著一相對應的操作環境,和操作系統和軟體平台之間的區別,是在於操作系統和軟體平台所提供的操作環境是一通用性質的環境;而應用程式所提供的操作環境是一侷限性質的環境。對於操作系統和軟體平台來說,其主要的設計目標是協助用戶在同一個操作環境裡,管理、存取、驅動,和操作多種不同的資源,而其中的資源包括多種不同的資料和多種不同的應用程式(工具)。而對於應用程式來說,其主要的設計目標是用來提供一特定用途的運算服務及/或作業流程,以滿足用戶的該特定需求。
在應用生態的推動過程中,系統供應商和服務提供商之間通常是合作的關係。系統供應商在操作系統和軟體平台上,提供各式各樣的應用程式介面和軟體開發套件,讓服務提供商可以快速地開發完成各式各樣特定用途的應用程式,而各行各業的服務提供商大量的開發各種不同領域和用途的應用程式,也就使得操作系統和軟體平台的功能,得以經由應用程式的安裝而被大量的擴充,用戶也得以在操作系統及/或軟體平台所提供的同一操作環境裡,管理和操作大量不同資料和工具以提供工作效率,藉此形成一個應用生態的發展循環。
應用生態的蓬勃發展,對於系統供應商、服務提供商,以及用戶來說是三贏的結果,然而,現行的系統整合方式卻有著許多的限制,仍存在著許多技術上的挑戰需要被克服:
一、系統供應商為保護用戶不被惡意的應用程式攻擊,由服務提供商提供的應用程式,必須在用戶的同意下,得到用戶的授權後,才可以安裝。主要的原因是惡意的應用程式在安裝之後,可以長期存在該操作系統及/或軟體平台中運行,成為洩漏用戶數據的常駐程式,因此,這一個限制主要是因應資訊安全的考量,但是該限制卻讓服務提供商無法實現為用戶提供自動化配置(auto-provision)應用程式的服務能力。現實生活中,在許多不同的情況下,當服務提供商發佈一個應用程式的時候,資訊安全的考量可以忽略不計,舉例來說,某一服務提供商為其全球員工開發一差勤管理系統,在該差勤管理系統完成部署後,對於該服務提供商的資訊部門來說,該差勤管理系統的普及率和被使用率的重要性,將遠高於資訊安全的考量,在技術可行的情況下,該服務提供商將會希望在部署完成的當下,就能夠在其全球員工辦公用的桌上型電腦、手機,或筆電的操作環境中,動態安裝該差勤管理系統並且為其完成自動化配置,也就是能夠在每一員工所使用的操作環境裡,自動加入一個能夠用來執行該差勤管理系統的可執行對象(executable object),並且能夠將每一員工在執行該差勤管理系統時,所需要的應用程式狀態(application state)主動配置於該可執行對象中,讓每一員工得以在操作介面上,直接開啟該可執行對象就能夠執行該差勤管理系統,而並非只能夠採用傳統的作法,由資訊部門發出一封容易遭人忽略的郵件至每一員工的電子郵件信箱;其中,該郵件是用於通知員工該差勤管理系統已上線,並請員工被動進行安裝的通知郵件。
可執行對象(executable object)指的是可以被安裝至一操作系統及/或軟體平台中的一可執行實體(executable entity) ;其中,該可執行對象是根據一應用程式單元的數據模型所生成,當該可執行對象被安裝至該操作系統及/或該軟體平台後,將成為相容於該操作系統及/或該軟體平台的一可執行實體,該操作系統及/或該軟體平台可以有效地識別出該可執行實體是一應用程式(App),並且對其提供行程管理(process management)、記憶體管理(memory management)、存儲管理(storage management),以及任一針對應用程式(App)資源所設計的權限管理機制。
以運作模式做區分,應用程式可以分成兩種不同的型態,其一可被視為是一非揮發性應用程式(non-volatile application program),其二則是揮發性的應用程式(volatile application program)。
非揮發性應用程式的運作模式,是將該應用程式的可執行程式區塊完整的儲存於該操作系統及/或該軟體平台所對應的存儲空間裡,當該操作系統及/或該軟體平台需要執行該應用程式時,會從本身所對應的該存儲空間中,直接載入該應用程式的可執行程式區塊(即為非揮發性應用程式的啟動程式)至一系統行程(OS process)中執行,執行完畢後,該應用程式的可執行程式區塊仍將繼續儲存於該存儲空間中;其中,非揮發性應用程式是以原生應用程式(native application)做為代表,而其啟動程式即為它的相關可執行程式區塊。
揮發性應用程式的運作模式,是將該應用程式的可執行程式區塊儲存於一外部機器中,該外部機器與運行該操作系統及/或該軟體平台的機器是不同的機器,當該操作系統及/或該軟體平台需要執行該應用程式時,是從該外部機器裡動態載入該應用程式的可執行程式區塊(即為揮發性應用程式的啟動程式)至一系統行程(OS process)中執行,執行完畢後,該應用程式的可執行程式區塊將直接隨著系統行程的結束而被消除,於一較佳實施例中,該應用程式的可執行程式區塊的部份內容可以被緩存於一快取記憶體(Cache)中,以備下次執行時能夠用來提升動態載入的效率;其中,揮發性應用程式是以Web前端應用程式、漸進式網頁應用程式(Progressive Web Application),以及即時應用(Instant App)做為代表,而其啟動程式即為它的相關可執行程式區塊。
對於操作系統及/或軟體平台來說,揮發性應用程式的安全性遠高於非揮發性應用程式。主要原因在於揮發性應用程式並不需要儲存完整的可執行程式區塊於該操作系統及/或該軟體平台的存儲空間裡,因此不容易在系統背景中偷偷地運行。然而,雖然揮發性應用程式在本質上降低了資訊安全的疑慮,但是由於揮發性應用程式的可執行程式區塊,主要是部署在外部機器裡,無法安裝在每一員工的操作環境,因此,使得揮發性應用程式的自動化配置工作,難以有效地實現。
其中,包括Web前端應用程式、漸進式網頁應用程式(Progressive Web Application),以及即時應用(Instant App)都是本文所述「揮發性應用程式」的實施態樣。
對於Web前端應用程式來說,任何一種操作系統及/或軟體平台的一操作環境,都可以透過瀏覽器或WebView將一Web前端應用程式動態載入運行,但是,服務提供商無法在該操作環境中,為該Web前端應用程式動態安裝一可執行對象供用戶操作。
又,即時應用(Instant App)是以原生應用程式的技術架構所開發的一種揮發性應用程式,其中,Android即時應用(Android Instant App)是即時應用的一種實施態樣。每一個Android即時應用都對應著的一網路地址,服務提供商將該網路地址分享至一用戶的Android操作環境後,該用戶點擊該網路地址,該Android即時應用就可以被動態載入運行於該Android操作環境之中,但是和Web前端應用程式一樣,服務提供商無法在該Android操作環境裡,為該Android即時應用動態安裝一可執行對象供用戶操作;其中,Android即時應用的相關實施方式可以參考 “https://heartbeat.fritz.ai/create-an-instant-app-using-android-app-bundle-e36d321dcd56”。
另外,漸進式網頁應用程式(Progressive Web App)是揮發性應用程式的另一實施態樣,其本身也是一種Web前端應用程式。在操作系統和瀏覽器的共同支持下,一漸進式網頁應用程式可以在用戶的同意下,讓用戶經由瀏覽器或線上應用程式商店安裝至操作系統的一操作環境中,並於該操作環境裡提供一可執行對象供用戶操作。但是漸進式網頁應用程式的現行架構,其動態安裝只能被動地仰賴第三方軟體來執行,其中的一個方式是在用戶於一操作系統的操作環境裡,透過一瀏覽器(第三方軟體)動態載入運行一漸進式網頁應用程式後,由該瀏覽器為該漸進式網頁應用程式提供一可執行對象,並安裝至該操作系統的操作環境裡,而另外一個方式是用戶透過一線上應用程式商店,搜尋該漸進式網頁應用程式後,由該線上應用程式商店下載該漸進式網頁應用程式的一可執行對象後,安裝至該操作系統的操作環境裡,在用戶沒有透過瀏覽器或線上應用程式商店來開啟或搜尋該漸進式網頁應用程式的條件下,服務提供商無法透過任何方法,主動地將該漸進式網頁應用程式動態安裝至該操作系統,爲該漸進式網頁應用程式提供一可執行對象至該操作系統的操作環境裡,更進一步地,也無法有效地將定制化的應用程式狀態主動配置於該可執行對象;其中,漸進式網頁應用程式的相關實施方式可以參考 “https://vaadin.com/learn/tutorials/learn-pwa/turn-website-into-a-pwa”。
缺乏自動化的動態安裝方法,讓服務提供商在揮發性應用程式的發佈上,難以自主控制,更進一步地,也令揮發性應用程式的自動化配置無法實施。
在應用生態的技術領域裡,目前尚未有一種動態安裝揮發性應用程式的方法與運用該方法之軟體系統,即可用於自動化配置一揮發性應用程式於一操作系統及/或軟體平台中的有效方法與運用該方法之軟體系統,故仍極待開發。
二、系統供應商的操作環境和服務提供商的應用程式之間,在大多數作業流程的系統整合上,只能夠各自單獨的發展。應用程式的作業流程無法被動態導入至操作系統及/或軟體平台的操作環境中,而操作系統及/或軟體平台的操作環境也無法被有效地實作成一個應用狀態引擎的驅動環境,導致每一個服務提供商都必須在其所提供的應用程式裡,為相同或類似的作業流程重複開發許多具有相同或均等的管理工具;同時,這也令每一個用戶都必須被迫地在不同的應用程式裡,操作相同或均等的作業流程;更進一步地,這也令數據的收集工作,難以有效的實施,其中,最主要原因就在於即便用戶操作的是相同或均等的作業流程,其所產生的數據卻是分散在不同的應用程式裡,無法集中於一個統一的操作環境。
舉例而言,網際網路發展以來,網路通話的大量需求,刺激大量網路通訊軟體的發展,許多的服務提供商都發展著各自的網路通訊軟體,但是對於每一個通話服務來說,至少就存在著一個基本卻又共通的作業流程,那就是當收到一語音通話的來電時,首先,用戶可以對該語音通話進行接聽,而當該語音通話結束時,用戶可以利用該語音通話的通話記錄,向該語音通話的發話方進行回撥,對於熟知本技藝的人士可知,為了實現該作業流程,每一個網路通訊軟體都需具備著「能夠接聽來電」、「能夠產生通話記錄」,以及「能夠經由通話記錄進行回撥」的設計,並且各自也都必須設計一個用以儲存、管理,和操作通話記錄的管理工具,才能實現該作業流程。然而,在這個情況下,用戶就經常需要進入各個不同的網路通訊軟體中,找尋對應的通話記錄來進行回撥,即便該些網路通訊軟體是安裝於同一手機操作環境裡;其中,網路通訊軟體也是一種應用程式的實施態樣。
現代智慧型手機操作系統的操作環境中,都內建著一個用於儲存、管理,和操作通話記錄的管理工具,並且在該管理工具的操作介面中,也都已經為每一個通話記錄的操作介面,提供了回撥的設計。但是,由於手機的操作環境和應用程式之間,針對作業流程的系統整合是分離的,因此,就導致該管理工具只能夠管理電信網絡或SIP網絡所產生的通話記錄,不能夠讓各個第三方通話服務的作業流程,都直接導入於該管理工具之中,特別是當該第三方通話服務本身是一揮發性應用程式,或該第三方通話服務並沒有針對回撥功能和該操作環境進行過任何形式的整合,又甚至是該第三方通話服務根本是以一定制化的通訊協定所完成時,在沒有進行任何形式的整合、通訊協定不相容,及/或該第三方通訊服務是一個揮發性應用程式的情況下,該第三方通話服務的作業流程,無法被動態導入於該手機的操作環境之中。
在應用生態的技術領域裡,目前尚未有一種動態導入作業流程的方法與運用該方法之軟體系統,即可用於讓一應用程式的作業流程動態導入於一操作系統及/或軟體平台中,並且讓該操作系統及/或軟體平台成為一應用狀態引擎的驅動環境之有效方法與運用該方法之軟體系統,故仍極待開發。
以上所介紹的是應用生態的各項技術挑戰,而這些技術挑戰,也同時影響著不同技術領域的發展。以物聯網為例,物聯網的技術發展在市場的推波助瀾下,不同的企業、組織,和機構都分別制定了許多不同的標準,但是唯一欠缺的,就是沒有一個標準是真正統一的標準,導致物聯網的整體應用生態,須仰賴大量的系統整合才能夠完成!不同性質的連網設備有不同的軟體控制器,即使是相同性質的連網設備,也會因設備提供商的不同而讓軟體控制器的技術架構有所不同,部份的軟體控制器是以原生應用程式的技術架構開發而成,也有部份的軟體控制器則是以Web前端應用程式的型態提供給用戶使用,讓用戶能夠用來管理和監控相對應的連網設備,標準的不統一、連網設備的不同、設備提供商的不同,應用程式技術架構的不同,導致軟體控制器有著許多不同的型態,都為系統整合的工作帶來挑戰,以至於物聯網發展至今,始終無法讓用戶在同一操作系統及/或軟體平台上,為周遭複雜環境裡由不同廠商提供,技術架構不同的物聯網設備,完成軟體控制器的配置工作。
當用戶身處於某一環境時,如果該環境裡裝置的所有連網設備都是由同一設備提供商設計而成,一般來說,該用戶可以透過該設備提供商的管理平台,快速地為周遭環境裡的連網設備完成配置,但是,如果該環境裡的連網設備是由不同的設備提供商設計,且是透過不同的技術標準完成整合,該用戶就必須在其手機或者是電腦中,分別採用不同設備提供商所提供的管理平台,才能夠完成所有的配置工作,即使是相同性質的連網設備,也將因為設備提供商的不同,而讓連網設備的管理、監控,及/或作業流程的驅動,分散在不同的管理平台之中。
物聯網的設備提供商無法在系統供應商所提供的操作系統及/或軟體平台裡,為軟體控制器提供有效的動態安裝及/或自動化配置服務,相同性質的作業流程也無法動態導入於一相同的操作環境裡,這是物聯網應用生態在發展超級應用(super app)及/或物聯網控制中心時的重大挑戰。
綜合以上的說明可知,在應用生態的技術領域裡,除了為系統供應商、服務提供商,以及用戶持續建構完善的應用程式介面和軟體開發套件是一發展方向之外,更為重要的是目前尚未有一種動態整合應用程式的方法與運用該方法之軟體系統,讓該軟體系統能夠在沒有先行安裝或引入一揮發性應用程式的情況下,即可於該軟體系統中,動態安裝該揮發性應用程式、動態載入運行該揮發性應用程式,以及動態導入該揮發性應用程式的作業流程,並且能夠動態生成一超級應用(super app)及/或一物聯網控制中心的操作環境,故仍極待開發。
本發明的目的在於提供一種動態整合應用程式的方法與運用該方法之軟體系統與機器。讓一軟體系統及/或機器能夠在沒有先行安裝或引入一揮發性應用程式的情況下,即可於該軟體系統及/或該機器中,動態安裝該揮發性應用程式、動態載入運行該揮發性應用程式,以及動態導入該揮發性應用程式的作業流程,並且能夠動態生成一超級應用(super app)及/或一物聯網控制中心的操作環境。
一方面,本發明提供一種在軟體系統中動態安裝揮發性應用程式的方法。首先,於一軟體系統中提供一安裝模組,於該安裝模組接收由一自動化配置引擎(auto-provisioning engine)發出的一動態安裝請求時,啟動一引入流程,在該引入流程的運作過程中,將供一用戶執行的一可執行對象安裝至該軟體系統;其中,該可執行對象與一揮發性應用程式之間具有一綁定關係,且該綁定關係是通過將該揮發性應用程式的一元資料(metadata)及/或該元資料的存取連結綁定至該可執行對象所完成;以及。然後,於該軟體系統中收到該用戶對該可執行對象的一執行請求時,動態載入運行該揮發性應用程式;其中,該揮發性應用程式的啟動程式的位置是由該元資料的至少一內容所確定(定位)。
於一較佳實施例中,該揮發性應用程式是一Web系統、原生應用程式,或者是任一種可被動態載入運行的軟體服務;其中,該揮發性應用程式的動態載入運行,是經由動態載入和執行該揮發性應用程式的啟動程式所完成。
於一較佳實施例中,該元資料的至少一內容包含一網路地址,且該網路地址的內容包含該揮發性應用程式的啟動程式的位置;及/或該揮發性應用程式的元資料的至少一內容包含至少一代碼,該至少一代碼是用於確定(定位)出該揮發性應用程式的啟動程式的位置。
於一較佳實施例中,該動態安裝請求的內容包含該可執行對象、該可執行對象的存取連結、該元資料,及/或該元資料的存取連結;其中,該可執行對象的存取連結和該元資料的存取連結是統一資源標誌符(Uniform Resource Identifier)或一應用程式介面(Application Programming Interface)的實例。
於一較佳實施例中,該可執行對象是一預先產生的可執行對象,或者該可執行對象是在該軟體系統及該安裝模組的執行時期(run time)裡動態產生的可執行對象。
於一較佳實施例中,該動態安裝請求是由該自動化配置引擎(auto-provisioning engine)發出,用於驅動該安裝模組將該可執行對象安裝至該軟體系統,為該揮發性應用程式完成自動化配置(auto-provision)的工作;其中,該自動化配置引擎是一網路服務、一偵測程式、一應用程式,或者是一被投影的工作空間;其中,該網路服務是和該軟體系統運行於不同機器上的外部網路服務,該偵測程式是被執行於該軟體系統中的軟體模組,該應用程式是被動態載入運行於該軟體系統的揮發性應用程式,該被投影的工作空間是被動態載入運行於該軟體系統的可投影的工作空間。
於一較佳實施例中,與該可執行對象關聯的一綁定內容是該元資料的原始內容、該元資料的部份內容,或者是重整該元資料的原始內容後所得到的內容;其中,該綁定關係是通過將該綁定內容及/或該綁定內容的存取連結綁定至該可執行對象來完成,在該綁定關係裡,該綁定內容是用於代表該元資料的資料參照。
於一較佳實施例中,該可執行對象是根據一應用程式單元的數據模型所生成,當該可執行對象被安裝至該軟體系統後,將成為相容於該軟體系統的一可執行實體(executable entity);其中,該可執行實體在該軟體系統的執行時期裡,被顯示於操作介面上供用戶開啟,於該用戶開啟該可執行實體時,觸發該執行請求以動態載入運行該可執行實體所對應的該揮發性應用程式。
於一較佳實施例中,該執行請求的內容包含該綁定內容及/或該綁定內容的存取連結,該揮發性應用程式是由一啟動模組依據該執行請求的內容來動態載入運行;其中,該啟動模組是一獨立運行的應用程式或是可動態載入運行一異質系統的一軟體元件。
於一較佳實施例中,當該揮發性應用程式與該軟體系統的作業環境不相容時,該揮發性應用程式是透過一轉化器(Adapter)進行驅動,由該轉化器提供與該軟體系統的作業環境相容的介面實作;其中,該轉化器是由該可執行對象、該啟動模組、該軟體系統,及/或該啟動模組觸發執行的另一軟體模組所提供。
於一較佳實施例中,於該揮發性應用程式被動態載入運行時,以參數形式傳入一狀態設定至該揮發性應用程式,該揮發性應用程式是依據該狀態設定於執行時期調整內部的應用程式狀態(application state);其中,該狀態設定是一系統環境組態、應用程式組態,及/或是定制化的應用程式狀態。
另一方面,本發明提供一種在軟體系統中動態導入作業流程的方法,其包括:於一軟體系統中提供一啟動模組,於該啟動模組接收一執行請求時,依據該執行請求的內容來執行一應用程式;其中,該應用程式是安裝於該軟體系統的一原生應用程式,或者該應用程式是需要被動態載入運行的一揮發性應用程式;於該軟體系統中提供一導入模組,於該導入模組收到該應用程式於所發出的一可執行狀態(Executable State)時,啟動一動態導入流程,在該動態導入流程的運作過程中,將供一用戶操作的一可操作對象儲存至一管理模組,並且為該可執行狀態和該可操作對象的一可執行事件建立一綁定關係;以及於該可執行事件被該用戶觸發時,用於執行該可執行狀態的另一執行請求將被發出,並動態載入運行一相對應的揮發性應用程式,以執行該可執行狀態。
於一較佳實施例中,當該應用程式是一揮發性應用程式時,該揮發性應用程式的元資料的至少一內容包含一網路地址,且該網路地址的內容包含該揮發性應用程式的啟動程式的位置;及/或當該應用程式是一揮發性應用程式時,該揮發性應用程式的元資料的至少一內容包含至少一代碼,該至少一代碼是用於確定(定位)出該揮發性應用程式的啟動程式的位置。
於一較佳實施例中,當該執行請求的發出是因應一可執行對象的開啟時,則該應用程式是一揮發性應用程式。
於一較佳實施例中,當該執行請求的發出是因應一可執行狀態的執行時,則該應用程式是一揮發性應用程式;其中,該執行請求的內容是依據該可執行狀態的內容所產生,該可執行狀態的內容包含一綁定內容及/或該綁定內容的存取連結;該綁定內容是該揮發性應用程式的一元資料(metadata)的原始內容、該元資料的部份內容,或者是重整該元資料的原始內容後所得到的內容;該啟動模組是透過該執行請求的內容來確定(定位)出該揮發性應用程式的啟動程式的位置,並且依據該啟動程式的位置來動態載入運行該揮發性應用程式。
於一較佳實施例中,該可操作對象是根據一資訊單元的數據模型所生成,當該可操作對象被儲存至該管理模組後,將成為相容於該軟體系統或該軟體系統中至少一軟體模組的一可操作實體(operable entity);其中,該可操作實體將在該軟體系統或該至少一軟體模組的執行時期裡,被顯示於一操作介面上供用戶操作,於該用戶觸發與該可執行狀態綁定的該可執行事件時,動態載入運行該相對應的揮發性應用程式;其中,該導入模組是透過至少一可執行狀態的導入來完成一作業流程的動態導入。
於一較佳實施例中,該可執行狀態和該可執行事件之間的綁定關係,是通過將該可執行狀態的至少一內容綁定至該可操作對象或該可執行事件來完成;於該可執行事件被觸發時,依據該可執行狀態的內容來產生並發出該另一執行請求,進而動態載入運行該相對應的揮發性應用程式以執行該可執行狀態;其中,該可執行事件是依據該可執行狀態的至少一資訊而被動態加入於該可操作實體中。
於一較佳實施例中,於該相對應的揮發性應用程式被動態載入運行時,以參數形式傳入一狀態設定至該相對應的揮發性應用程式,該相對應的揮發性應用程式是依據該狀態設定於執行時期調整內部的應用程式狀態(application state);其中該狀態設定是一系統環境組態、應用程式組態,及/或是定製化的應用程式狀態。
本案之另一實施概念,係關於一種軟體系統,其透過動態整合應用程式的方法,而使多個不同信息源的揮發性應用程式及其各自所支持的不同作業流程可被動態安裝和動態導入於其中,該軟體系統包括:一安裝模組,於該安裝模組收到由一自動化配置引擎(auto-provisioning engine)所發出的一動態安裝請求時,將一可執行對象安裝至該軟體系統;及/或一導入模組,於該導入模組收到由一應用程式所發出的一可執行狀態時,將與該可執行狀態綁定的一可操作對象儲存於一管理模組;其中,當該可執行對象或該可執行狀態被執行或觸發時,發出一相對應的執行請求,並通過一啟動模組動態載入運行一相對應的揮發性應用程式來完成該執行請求。
於一較佳實施例中,該軟體系統是通過該安裝模組,將來自多個不同信息源的揮發性應用程式動態安裝於其中;其中,所述揮發性應用程式的動態安裝是透過至少一可執行對象的安裝來完成。
於一較佳實施例中,該軟體系統是通過該導入模組,將至少一應用程式所支持的不同作業流程動態導入於其中;其中,所述的不同作業流程的動態導入是透過至少一可執行狀態的導入來完成。
本案之另一實施概念,係關於一種動態整合應用程式的機器,包括:一自動化配置引擎(auto-provisioning engine),用於偵測一網路裡的至少一連網設備,並將相對應於該至少一連網設備的至少一可執行對象配置至一軟體系統;其中,該軟體系統將該至少一可執行對象顯示於一操作介面(user interface),以供該用戶進行操作,於該用戶在該操作介面上開啟相對應於一連網設備的一可執行對象時,動態載入運行綁定於該可執行對象的一揮發性應用程式,透過該揮發性應用程式管理、操作、監視,及/或控制該連網設備所提供的服務;及/或一導入模組,用於接收由一應用程式所發出的一可執行狀態,並將與該可執行狀態綁定的一可操作對象儲存於一管理模組;其中,該導入模組是用於為至少一應用程式完成作業流程的動態導入。
於一較佳實施例中,該連網設備是一物聯網設備、一商用軟體裝置(commercial software appliance),及/或是任一種具有提供資訊服務能力的硬體設備或軟體裝置(software appliance)。
於一較佳實施例中,該連網設備和該可執行對象之間具有一綁定關係,且該綁定關係是通過將該連網設備的元資料(metadata)之至少一內容綁定至該可執行對象所完成;其中,該連網設備的元資料之至少一內容包括該連網設備的產品名稱、品牌名稱、網域名稱(Domain Name),及/或IP地址(IP Address)。
於一較佳實施例中,該揮發性應用程式和該可執行對象之間具有一綁定關係,且該綁定關係是通過將該揮發性應用程式的元資料(metadata)之至少一內容綁定至該可執行對象所完成;其中,該揮發性應用程式的元資料之至少一內容包括該揮發性應用程式的APP名稱、APP圖示、功能描述、啟動程式的位置、網路域名,及/或提供者資訊。
於一較佳實施例中,該揮發性應用程式是該連網設備的一軟體控制器;其中,所述該揮發性應用程式的動態安裝是透過該可執行對象的安裝來完成。
於一較佳實施例中,所述作業流程的動態導入是透過至少一可執行狀態的導入來完成。
於一較佳實施例中,該機器是一用戶設備,且該軟體系統運行於該用戶設備。
於一較佳實施例中,該揮發性應用程式是該連網設備的一軟體控制器,於該軟體控制器被動態載入運行於該用戶設備後,其對該連網設備的至少一控制指令是從該用戶設備直接傳送至該連網設備。
於一較佳實施例中,該機器是一服務器,該軟體系統運行於一用戶設備,且該軟體系統具備連接至該服務器並對該服務器發送指令或請求的能力。
於一較佳實施例中,該揮發性應用程式是該連網設備的一軟體控制器,於該軟體控制器被動態載入運行於該用戶設備後,其對該連網設備的至少一控制指令是傳送至該服務器後,由該服務器以相容於該連網設備的通訊協定轉發至該連網設備,或者該至少一控制指令是從該用戶設備直接傳送至該連網設備。
本發明的上述目的和優點,在本技術領域普通技術人員於考量隨後的詳細說明及附圖後,將會更加清楚。
本發明得藉由以下描述,包括以下的術語彙編以及結論性實例,而更充分地理解。為簡潔起見,本說明書中引用之出版物,包括專利的公開內容,係併入本文以供參考。
以下本發明的實施例是非限制性的,並且僅代表本發明之各種態樣及特徵。就最受限制的技術意義而言,本文所述的「揮發性應用程式」也是一應用程式,其可包括一Web前端應用程式、漸進式網頁應用程式(Progressive Web Application)、即時應用(Instant App),或者是任一種可被動態載入運行的軟體服務。又,本文所述的「軟體系統」可包括一軟體平台、操作系統,或者是任一種可被程式擴充的軟體系統。又,本文所述的「軟體模組」可包括一類別庫、物件實體、軟體元件、軟體代理程式、應用程式,或者是任一種可被內建、安裝、引入、生成、擴充及/或動態載入運行至本文所述「軟體系統」中運行的程式區塊。另,本文所述的「揮發性應用程式的元資料」可包括採用一標記式語言及/或依據一結構化協議所生成的一物件實體,且該標記式語言及/或該結構化協議的運用是用於描述一揮發性應用程式的至少一屬性,其中包括該揮發性應用程式的APP名稱、APP圖示、功能描述、啟動程式的位置、網路域名(Domain Name),及/或提供者資訊等屬性;其中,該物件實體包括一HTTP Header、JSON物件實體、XML物件實體,或者是XML檔案。惟,揮發性應用程式、軟體系統、軟體模組,及揮發性應用程式的元資料的實施態樣,皆不以上述為限。
又,本文所述的「連網設備」可包括一物聯網設備、商用軟體裝置(commercial software appliance)、虛擬機器(virtual appliance),及/或是任一種具有提供資訊服務能力的硬體設備或軟體裝置(software appliance);其中,物聯網設備之定義可參考:“https://www.arm.com/glossary/iot-devices”,軟體裝置之定義可參考:“https://en.wikipedia.org/wiki/Software_appliance”。另,本文所述的「揮發性應用程式」指的是可以經由一網路地址而被動態載入運行的一軟體服務,它可以是一個未與外部系統整合而能夠獨立運行的軟體服務,也可以是一個用來管理、操作、監視及/或控制一連網設備、網路通訊系統或工作流管理系統的服務的軟體服務,但並不以上述為限;其中,該軟體服務是部署、儲存,或發佈於一外部伺服器裡,該外部伺服器可以是一Web伺服器、雲端儲存伺服器、線上應用程式商店伺服器或者是任一種具連網能力的計算機設備、物聯網設備或軟體裝置;其中,該外部伺服器和本文所述「軟體系統」及「軟體模組」所在的機器是不同的計算機設備。該揮發性應用程式被動態安裝和動態載入以前,該揮發性應用程式的啟動程式並不需要被先行安裝或引入到運行本文所述「軟體系統」及「軟體模組」的機器裡,當需要執行該揮發性應用程式的服務時,是經由該網路地址從該外部伺服器裡動態載入運行該揮發性應用程式後,始可操作該揮發性應用程式的服務;其中,為提升動態載入的效率,該揮發性應用程式可以被儲存於一快取(Cache)裡,在往後的動態載入過程中,可以從該快取的儲存媒介裡,動態載入該揮發性應用程式以提升效率,快取(Cache)之設計可參考:“https://en.wikipedia.org/wiki/Cache_(computing)”;其中,該揮發性應用程式的啟動程式即為其可執行程式區塊,本文所述的「動態載入運行一揮發性應用程式」,所指的即為「動態載入該揮發性應用程式的可執行程式區塊,並予以啟動以執行該揮發性應用程式」。
另,本文所述的「可執行對象」指的是可以被安裝至一軟體系統中的一可執行實體(executable entity);其中,該可執行對象是根據一個由該軟體系統所支持的應用程式單元的數據模型而生成,該可執行對象被安裝至該軟體系統後,將成為相容於該軟體系統的一可執行實體。該軟體系統可以依據該應用程式單元的數據模型,對該可執行實體的資源類別作出有效地識別,藉此,能夠將其識別為一應用程式(App)並為其提供相應的管理機制,舉例來說:為其提供包括行程管理(process management)、記憶體管理(memory management)、存儲管理(storage management),及/或任一種針對應用程式(App)所設計的資源管理機制;其中,該可執行實體在該軟體系統的執行時期裡,是以一應用程式(App)的型態被顯示於一操作介面上供用戶開啟,於該用戶開啟該可執行實體時,該可執行實體所對應的一揮發性應用程式將被動態載入運行;其中,當該揮發性應用程式與該軟體系統的操作環境不相容時,該可執行實體於被執行時,可以透過一轉化器(Adapter)來對該揮發性應用程式進行驅動;其中,該應用程式單元的數據模型是一個通用的數據模型,包括連網設備的控制器(controller)、網路通訊活動的入口(portal)、雲端服務的客戶端軟體(client),或任一種提供運算服務的軟體應用程式(application software)皆可適用;其中,該可執行對象是一個可以被安裝於該軟體系統的App組態檔、App組態物件,或者是App啟動器,而該可執行實體是該軟體系統在載入該可執行對象後,依據該可執行對象的內容,產生於操作介面上的一可執行物件。惟,可執行對象的實施態樣,不以上述為限。
另,本文所述的「可操作對象」指的是可以被儲存至一管理模組中的一可操作實體(operable entity);其中,該管理模組是一軟體系統中的一軟體模組,且該可操作對象是根據一個由該管理模組所支持的資訊單元的數據模型而生成,該可操作對象被儲存至該管理模組後,將成為相容於該軟體系統或該軟體系統中至少一軟體模組的一可操作實體;其中,該可操作實體在該軟體系統或該軟體系統中至少一軟體模組的執行時期裡,可以被顯示於一操作介面上供用戶操作,當該可操作對象中的一可執行事件被用戶觸發時,與該可執行事件綁定的一可執行狀態將會被驅動,並進而使得該可執行狀態所對應的一揮發性應用程式被動態載入運行;其中,當該揮發性應用程式與該軟體系統的操作環境不相容時,該可執行狀態於被執行時,可以透過一轉化器(Adapter)對該揮發性應用程式進行驅動;其中,該資訊單元可以是一網路通訊活動的通話記錄、一連網設備的監控記錄、一雲端服務的活動預約,或任一種用以保存作業流程狀態的資訊單元;其中,該可執行狀態是以一Event組態檔或Event組態物件的形式,與該可操作對象進行綁定;其中,該可操作對象是一個可以被儲存於該管理模組的資訊單元,而該可操作實體是該軟體系統或該軟體系統中至少一軟體模組在載入該可操作對象後,依據該可操作對象的內容,產生於操作介面上的一可操作物件。惟,可操作對象的實施態樣,不以上述為限。
本文的「系統行程(OS process)」指的是操作系統(Operating System)用於載入、驅動、啟動,及/或執行一程式時所建立的行程(Process);其中,系統行程(OS process)之相關技術可以參考:“https://en.wikipedia.org/wiki/Process_(computing)”。
請參閱圖1,其是一揮發性應用程式的元資料示意圖。以部署於一外部機器的一揮發性應用程式A1為例,依據一結構化協議,該揮發性應用程式A1的基本屬性可以被組合並生成為一元資料D1;其中,該結構化協議是用XML標記式語言所定義的一資料結構,該元資料D1是基於該資料結構而生成的一XML物件實體;其中,該結構化協議為「揮發性應用程式」定義了五個基本屬性,包括:通訊協定<protocol>、網域<domain>、存取點<access_point>、提供商<provider>,以及該揮發性應用程式A1的一啟動程式A2的位置<location>。如圖1所示,該揮發性應用程式A1的通訊協定是“https”,網域是“a.b.c”,存取點是“/app”,而該啟動程式A2的位置是“https://a.b.c/app”。該元資料D1的作用,是讓任一軟體模組收到該元資料D1的內容時,可以依據該結構化協議的規範來讀取其內容,並且能夠根據其內容,確定(定位)出可用於動態載入運行該揮發性應用程式A1的網路地址,於本例中即為網路地址U1 “https://a.b.c/app”,亦即該啟動程式A2在網際網路中的位置。
特別說明的是,上述以XML資料結構作為元資料的結構化協議之方法,僅為本案所採用之非限制性的實施例,為元資料內容定義資料結構的方法並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
當一軟體模組收到某一揮發性應用程式的元資料內容時,可以採取如下幾種不同的方式來確定(定位)出可用於動態載入運行該揮發性應用程式的網路地址:
一、如果該元資料內容中包含<location>屬性,由於<location>屬性的內容本身就指向了可用於動態載入運行該揮發性應用程式的網路地址,因此,直接根據該<location>屬性的內容即可確定(定位)出該網路地址U1。
二、如果該元資料內容中,並未填入<location>屬性,該軟體模組可以依據該元資料的<protocol>、<domain>,以及<access_point>屬性的內容,組合出可用於動態載入運行該揮發性應用程式的網路地址;其中,包括<protocol>、<domain>,以及<access_point>都是可用於組合出該網路地址的代碼,以圖1裡的元資料D1為例,透過圖1所示的組合方式,可確定(定位)出可用於動態載入運行該揮發性應用程式A1的該網路地址U1,亦即,<protocol>內容是該網路地址U1中的通訊協定之組成5001;<domain>的內容是該網路地址U1中的網域之組成5002;<access_point>的內容是該網路地址U1中的資源存取點之組成5003,惟組合方式不以本案實施例為限,本案採用之實施例為非限制性的實施例,熟悉本技藝人士可應需求而做均等的變更設計。
三、如果該元資料內容中,只有包含識別碼<id>、提供商<provider>,以及存取點<access_point>等屬性內容,則將至少有一內容會是可以用於作為查詢參數的至少一代碼,即該至少一代碼的組合可被用於進行一查詢,經由該查詢來確定(定位)出可用於動態載入運行該揮發性應用程式的網路地址。以圖1為例,在一個提供全球公用的網路服務器裡,提供著一個用於註冊揮發性應用程式的註冊服務S1(register service),該註冊服務S1是用於讓不同的服務提供商可以將其所提供的揮發性應用程式的網路地址,註冊於該註冊服務S1中;其中,當一個服務提供商註冊一揮發性應用程式時,至少需要提供包括該服務提供商的名稱、該揮發性應用程式的存取點名稱,以及用於動態載入運行該揮發性應用程式的網路地址等資料,註冊完成後,將會由該註冊服務S1為該揮發性應用程式提供一識別碼<id>;其中,該註冊服務S1提供一API,任一軟體模組都可以透過該API對該註冊服務S1進行查詢,於查詢時,只需要傳入該識別碼<id>,及/或該服務提供商的名稱和該揮發性應用程式的存取點名稱,待查詢完成後,該註冊服務S1將回傳該揮發性應用程式的網路地址予發出該查詢請求的軟體模組;其中,該註冊服務S1是由一HTTP Server或者是任一種可供資源註冊的Server實作而成。在註冊服務S1的支持下,識別碼<id>,及/或服務提供商的名稱<provider>和揮發性應用程式的存取點名稱<access_point>也就成為了可以用於向該註冊服務S1進行查詢的代碼,因此當該軟體模組從元資料D1內容中,讀取到識別碼<id>,及/或提供商<provider>和存取點<access_point>的屬性內容後,就可以透過對該註冊服務S1的查詢,來確定(定位)出可用於動態載入運行該揮發性應用程式A1的網路地址U1。
四、如果該元資料內容中所包含的是該註冊服務S1提供的一REST URL,該REST URL是用於回傳該網路地址U1的應用程式介面(Application Programming Interface),如此即表示該軟體模組可以藉由向該REST URL發出HTTP GET請求,從該註冊服務S1的響應中獲取到可用於動態載入運行該揮發性應用程式A1的網路地址U1;其中,對於熟悉軟體技藝之人士可知,REST URL是一種統一資源標誌符(Unified Resrouce Identifier)的實例,也可以視為是用於做資源讀取的REST API。
特別說明的是,上述依據元資料的內容來確定(定位)出揮發性應用程式的網路地址之方法僅為本案所採用之非限制性的實施例,依據元資料的內容來確定(定位)出揮發性應用程式的網路地址方法並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
承上,於一較佳實施例中,一揮發性應用程式的一服務提供商,可以將該揮發性應用程式的元資料,儲存至一HTTP Server所連結的檔案系統或資料庫系統中,並由該HTTP Server以URI(Uniform Resource Identifier)的形式為該元資料提供一存取連結,當一軟體程式對該存取連結發出HTTP GET請求時,該HTTP Server將會以該元資料的內容作為回應的資料;如此一來,任一軟體程式就都可以經由該存取連結來讀取該元資料。以圖1為例,當該揮發性應用程式A1的服務提供商,在將該揮發性應用程式A1的網路地址註冊於該註冊服務S1時,也可以同時將該揮發性應用程式A1的該元資料D1,註冊於該註冊服務S1中,並且由該註冊服務S1為該元資料D1提供用於讀取該元資料D1的一存取連結 “https://volatile.apps/A3695”;其中,該存取連結中的“volatile.apps”是該註冊服務S1的網域,“A3695”是該註冊服務S1為該揮發性應用程式A1所提供的識別碼;有了該存取連結,該揮發性應用程式A1的服務提供商在發佈及/或傳輸該元資料D1的時候,就不需要直接地發佈及/或傳輸該元資料D1的完整內容,只需要發佈及/或傳輸該存取連結,任一軟體模組收到該存取連結時,即可透過該存取連結來從該註冊服務S1裡讀取該揮發性應用程式A1的該元資料D1之完整內容。
特別說明的是,上述將一揮發性應用程式的元資料以一存取連結進行發佈或傳輸之方法,僅為本案所採用之非限制性的實施例,存取連結的實作方式並不以上述為限,將一資料以一資源的形式發佈於網際網路,並且透過一URI(統一資源標誌符)及/或API(應用程式介面,例如:REST API、Web Service等)來為該資源的存取機制提供實作的技術方法已十分普及,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
不同種類的軟體系統,因應其技術架構的不同,而有不同的方法來動態載入運行一揮發性應用程式。舉例來說,一個採用Web前端技術來實作其操作環境的Web軟體平台,於其操作環境裡,可以透過HTML5的內置框架(iFrame)來動態載入和運行一個由外部網域所發佈的揮發性應用程式(例如:Web前端應用程式及/或漸進式網頁應用程式);而一個採用Android應用程式技術來實作其操作環境的軟體平台,於其操作環境裡,則可透過WebView、瀏覽器或即時應用(Instant App)的驅動程式,來完成對Web前端應用程式、漸進式網頁應用程式或Android即時應用的動態載入及運行的工作。不同種類的軟體系統對使用者介面(User Interface)、應用程式介面(Application Programming Interface)及/或應用二進位介面(Application Binary Interface)的支持都或有異同之處;因此,一般來說,服務提供商通常會為一個軟體服務,提供不同兼容版本的揮發性應用程式,以令該軟體服務可以在所有不同種類的軟體系統裡動態載入運行。
承上,於一較佳實施例中。以圖1為例,該揮發性應用程式A1的服務提供商,可以針對不同種類的瀏覽器、軟體平台或操作系統,在網路上不同的機器及/或不同的網域裡,為該揮發性應用程式A1所屬的軟體服務,提供各種兼容版本的揮發性應用程式,每一版本都由各自的網路地址所指向。在這個情況下,該揮發性應用程式A1的服務提供商透過該元資料D1發佈的用於動態載入運行該揮發性應用程式A1的網路地址,可以是指向一代理伺服器的一網路地址。當該揮發性應用程式A1所屬的軟體服務,需要被動態載入於一軟體系統時,該軟體系統將觸發一瀏覽器、WebView,或即時應用的驅動程式,來向該代理伺服器提交對該網路地址的一存取請求(例如:一個夾帶著該軟體系統相關資訊的HTTP GET請求),以載入該網路地址所指向的可執行程式區塊(揮發性應用程式的啟動程式),該代理伺服器收到該存取請求時,即可根據該存取請求裡所夾帶的資訊(例如:該軟體系統的相關資訊),來決定是否應該要重新定向到另一網路地址(例如:指向最兼容的揮發性應用程式的網路地址),使最兼容的揮發性應用程式得以被動態載入和運行;其中,如果該網路地址指向的揮發性應用程式已經是最兼容的版本,那麼,該網路地址可以不需要被重新定向。
承上,於另一較佳實施例中,因應負載均衡的需求,該揮發性應用程式A1的啟動程式A2,也可以發佈在網路上不同的機器裡,也就是在不同的機器裡,都發佈著同一版本的可執行程式區塊,並由不同的網路地址所指向。首先,依據該元資料D1的內容所確定(定位)出來的網路地址,可以是先行指向一個代理伺服器,然後由該代理伺服器依據其所掌握的負載資訊,來決定應該要重新定向到哪一個網路地址(另一網路地址),使得該揮發性應用程式A1的啟動程式A2得以從另一網路地址被動態載入運行,由負載較低的機器提供相應的服務;其中,如果該網路地址已經是由負載不高的機器來提供服務,那麼,該網路地址可以不需要被重新定向。
承上,於另一較佳實施例中,不論是依據該元資料D1所確定(定位)出來的網路地址或者是由代理伺服器重新定向後的另一網路地址,為了讓該揮發性應用程式A1的動態載入效率更高,該揮發性應用程式A1的啟動程式A2在動態載入的過程中,都可以被儲存於作為一個快取(Cache)的儲存媒介裡,並讓該外取(Cache)與用於動態載入該啟動程式A2的該網路地址及/或該另一網路地址相互對應,使得之後的動態載入工作中,可以從該快取(Cache)裡,對該揮發性應用程式A1的啟動程式A2進行動態載入,來提升動態載入的效率。其中,為揮發性應用程式提升動態載入效率的各種快取(Cache)方法(包括:Local Cache、Remote Cache,及/或 Distributed Cache),可以參考 “https://medium.com/capital-one-tech/caches-are-key-to-scaling-da2749adc6c9”。
特別說明的是,上述為揮發性應用程式的網路地址進行重新定向和提升動態載入效率的方法,僅為本案所採用之非限制性的實施例,為揮發性應用程式的網路地址進行重新定向和提供動態載入效率的方法,並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
請參閱圖2,其是動態載入運行一揮發性應用程式的運作概念示意圖。動態載入運行一揮發性應用程式的基本運作流程,所指的是一機器M1(第一機器M1)裡的軟體系統,從另一機器M2(第二機器M2)載入該揮發性應用程式的一啟動程式,並且,進而在該機器M1上的一系統行程(OS process)P1中,啟動和運行該揮發性應用程式所提供的服務,運行完畢後,該揮發性應用程式的啟動程式將直接隨著該系統行程P1的結束而被消除。於一較佳實施例中,該啟動程式的部份內容可以被緩存於一快取記憶體(Cache)中,以備下次動態載入運行該揮發性應用程式時,能夠用來提升動態載入的效率;其中,該啟動程式可以是一Web前端應用程式及/或漸進式網頁應用程式的相關可執行程式區塊、Instant App的相關可執行程式區塊,或者是任一種可用以啟動該揮發性應用程式的軟體服務的程式區塊。
承上,如圖2所示,L1是用於動態載入運行揮發性應用程式的軟體模組,其中包括瀏覽器、WebView、HTML5內置框架(iFrame)及即時應用的驅動程式都是本發明中對軟體模組L1所提供的實施態樣,惟可用於動態載入運行揮發性應用程式的軟體模組不以此限,熟知本技藝人士可依據實際需求而進行任何均等的變更設計。
用於動態載入運行揮發性應用程式的軟體模組L2是透過一連線50041,50042,從第二機器M2動態載入一揮發性應用程式的啟動程式至第一機器M1後,接著對該揮發性應用程式的啟動程式進行一驅動5005,以啟動運行該揮發性應用程式。
以下舉例各種於一軟體系統中動態載入運行一揮發性應用程式(包括Web前端應用程式和即時應用)的方法。
第一種方法係Web系統的動態載入方法,以Web前端應用程式為例,Web前端應用程式是以HTML/CSS/Javascript技術開發而成。於一Web伺服器裡部署一Web前端應用程式,該Web前端應用程式是一揮發性應用程式,其相關可執行程式區塊即為該揮發性應用程式的啟動程式(例如: 多媒體資源、HTML、CSS及/或Javascript等程式碼),將該Web前端應用程式的網路地址設置為「https://a.b.c/app」後,該網路地址就成為了該Web前端應用程式的動態載入位置,接著,即可在任何一個能夠驅動一HTML5內置框架(iFrame)、WebView,或瀏覽器的軟體系統裡,透過HTML5內置框架、WebView,或瀏覽器,將該網路地址「https://a.b.c/app」所對應的該Web前端應用程式動態載入運行;其中,HTML5內置框架、WebView及瀏覽器是用於動態載入運行該Web前端應用程式的軟體模組L1之實施態樣,在HTML5內置框架、WebView和瀏覽器的實作裡,都具有驅動一HTML/CSS/Javascript軟體引擎的功能,於同一軟體系統(例如:終端操作系統)裡,彼此甚至可以共享同一HTML/CSS/Javascript軟體引擎。
其中,HTML5內置框架是在HTML/CSS/Javascript軟體引擎本身的執行環境中,通過Web技術所生成的物件實體;瀏覽器則是以一獨立應用程式的形式,安裝至一終端操作系統裡;而WebView則是以一軟體元件的形式,嵌入於一原生應用程式的人機操作介面裡,為該原生應用程式提供動態載入運行Web前端應用程式的能力。對於終端操作系統和原生應用程式來說,瀏覽器和WebView都是一種轉化器(Adapter),在終端操作系統和原生應用程式的操作環境(或稱作業環境)裡,它們是能夠用來動態載入運行一異質系統(Web系統)的應用程式和軟體元件;其中,用於動態載入運行異質系統的轉化器(例如:瀏覽器或WebView),可以是由終端操作系統直接提供,內建於終端操作系統;或者是被整合至一可執行對象及/或一啟動模組中,由該可執行對象及/或該啟動模組本身來提供;又或者是一個隨插即用的轉化器,由使用者手動安裝至終端操作系統。Web前端應用程式與終端操作系統/原生應用程式的介面適配,以及本案對瀏覽器和WebView的採用,皆為本案對轉化器(Adapter)所提供之非限制性的實施例,但並不以此限。對於本文所述軟體系統、軟體平台及/或操作系統所提供的操作環境來說,轉化器(Adapter)的作用主要是用於將具有不相容介面實作的應用程式適配至該操作環境中,其作法是以該操作環境所設計或支持的介面實作來對不相容的介面實作進行包裹;使得具有不相容和相容介面實作的應用程式都可以在該操作環境上,以相同或均等的介面來進行管理、驅動、執行、及/或操作。其中對介面實作的轉化所指的是包括對使用者介面(User Interface)、應用程式介面(Application Programming Interface)、及/或應用二進位介面(Application Binary Interface)的適配,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
承上,作為一個軟體平台或操作系統的系統供應商,可以在其所提供的該軟體平台或該操作系統的操作環境中,以跨平台的Java程式語言開發一應用程式來做為揮發性應用程式的啟動模組,該啟動模組在該操作環境裡,可以實作一個用於資料傳輸對接的接口,讓該軟體平台或該操作系統裡的其他軟體模組、應用程式,或任一可執行的程式區塊,在需要對該Web前端應用程式進行動態載入運行時,都能夠對該接口進行一觸發,並傳入一執行請求至該啟動模組,令該啟動模組依據該執行請求的內容,將該Web前端應用程式動態載入運行於該軟體平台或操作系統的操作環境;其中,關於不同程式區塊之間的「觸發」和「資料傳輸對接」的各種實施方式,於稍後將提供進一步說明。
當該啟動模組收到該執行請求時,首先,該啟動模組需要先從該執行請求的內容,確定(定位)出可用於動態載入和運行該Web前端應用程式的該網路地址「https://a.b.c/app」;其中,如果該執行請求的內容本身已經內含了該網路地址,該啟動模組可以從該執行請求的內容中,直接取出該網路地址;又,如果該執行請求的內容是一組態,且該組態的內容包含著該Web前端應用程式的元資料,則該啟動模組可以參照圖1所示之方法,依據該Web前端應用程式的元資料來確定(定位)出該網路地址「https://a.b.c/app」;另,如果該執行請求的內容是一個指向該Web前端應用程式的元資料的存取連結,從該執行請求中取得該存取連結後,該啟動模組可以先透過該存取連結取得該Web前端應用程式的元資料後,再依據該Web前端應用程式的元資料來確定(定位)出該網路地址「https://a.b.c/app」。接著,在取得可用於動態載入運行該Web前端應用程式的該網路地址「https://a.b.c/app」後,該啟動模組即可透過呼叫java.awt.Desktop.browse(“https://a.b.c/app”)的方式,開啟一個瀏覽器,並將該網路地址傳入該瀏覽器,由該瀏覽器生成一沙盒環境(sandbox),將該Web前端應用程式動態載入運行於其中。
承上,於另一較佳實施例中,該啟動模組可以在本身的應用程式視窗裡嵌入一WebView,在收到該執行請求並且確定(定位)出該網路地址「https://a.b.c/app」後,即可將該網路地址傳入該WebView,由該WebView生成一沙盒環境(sandbox),將該Web前端應用程式動態載入運行於其中。
承上,於另一較佳實施例中,該啟動模組本身也可以直接以一軟體元件或一可執行的程式區塊的形式整合至一瀏覽器裡,然後,將該瀏覽器安裝至該軟體平台或該操作系統後,對於該軟體平台和該操作系統而言,該瀏覽器本身就成為一個揮發性應用程式的啟動模組,當該瀏覽器收到該執行請求,並確定(定位)出該網路地址「https://a.b.c/app」後,該瀏覽器本身即可直接生成一沙盒環境(sandbox),將該Web前端應用程式動態載入運行於其中。
第二種方法係原生應用程式的動態載入方法,以Android操作系統的即時應用(Instant App)為例,Android操作系統的Instant App是由Google推行的一項技術,該技術旨於為Android原生應用程式提供動態載入運行的能力,使Android即時應用也可以成為一揮發性應用程式。首先,服務提供商可以採用Android應用程式技術來開發一個Android原生應用程式,該Android原生應用程式的相關可執行程式區塊是準備用來做為一揮發性應用程式的啟動程式,將會以Android即時應用的形式對外發佈。接著,在開發完畢後,該服務提供商將該Android原生應用程式於線上應用程式商店上架時,該服務提供商可以為該相關可執行程式區塊設定一網路地址,用以做為其動態載入的位置,發佈完成後,該Android原生應用程式所提供的軟體服務,即成為一個可被動態載入運行的Android即時應用;其中,關於Android即時應用的介紹,可以參考 “https://developer.android.com/topic/instant-apps/index.html”。
承上,作為Android手機的系統供應商,同樣可以在其所提供的手機操作系統裡,以Java程式語言開發一啟動模組,該啟動模組在該手機操作系統的操作環境裡,同樣可以實作一個用於接收執行請求的接口,當該啟動模組收到一個對該Android即時應用進行動態載入運行的執行請求,並從該執行請求的內容裡,確定(定位)出可用於動態載入運行該Android即時應用的該網路地址後,可以直接透過執行命令列指令的方式來驅動adb tool,通過adb tool來啟動該網路地址,並藉此在該Android操作系統的操作環境裡,生成一沙盒環境(sandbox),並將該網路地址所對應的該Android即時應用動態載入運行於其中;其中,adb tool做為Android即時應用的驅動程式,於本例中其是用於動態載入運行該Android即時應用的軟體模組L1之實施態樣,驅動adb tool以啟動該Android即時應用的命令列指令,可以參考「adb shell am start -a android.intent.action.VIEW \ -d “該Android即時應用的動態載入位置”」,執行一命令列指令的方式可透過呼叫「java.lang.Runtime.getRunTime().exec(“該命令列指令”)」來完成。
特別說明的是,上述動態載入運行一揮發性應用程式的各項方法僅為本案所採用之非限制性的實施例,將來自外部機器的揮發性應用程式予以動態載入運行的方法並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
請參閱圖3,其是一啟動模組的基本運作流程示意圖。本文所述的「啟動模組」,在其動態載入運行一揮發性應用程式的基本運作流程裡,首先,發出一觸發T0至該啟動模組以提交一請求5006,該請求5006之目的在於傳入一執行請求,在該啟動模組通過一資料傳輸對接取得該執行請求的內容後,即可執行一運算5007,該運算5007依據該執行請求的內容,確定(定位)出可用於動態載入運行該揮發性應用程式的一網路地址,接著,由該啟動模組透過另一觸發T1以提交另一請求5008,該另一請求5008之目的在於將該網路地址傳送至另一軟體模組或一軟體引擎,驅動該另一軟體模組或該軟體引擎,動態載入運行該揮發性應用程式於其中;其中,所述「觸發」和「資料傳輸對接」的方法,於稍後將提供進一步說明。
該啟動模組是透過實作一個資料傳輸對接的接口來接收該觸發T0的通知以及該執行請求的內容,該觸發T0和該執行請求可以是由不同的來源所發出,茲介紹幾種不同的發出來源如下:
一、該執行請求可以是因應某一可操作對象的一可執行事件被一用戶觸發而發出;其中,該可操作對象是以一可操作實體的形式被顯示在一操作介面上供該用戶操作,當用戶在操作該可操作實體時,觸發了綁定於該可操作對象中的一可執行事件後,負責處理該可執行事件的一程式區塊,即可透過該啟動模組所提供的該接口,發出該觸發T0和傳入該執行請求至該啟動模組,驅動該啟動模組依據該執行請求的內容,動態載入運行該執行請求所對應的揮發性應用程式。
二、該執行請求也可以是因應某一可執行對象被一用戶開啟而被發出;其中,該可執行對象是以一可執行實體的形式被顯示於一操作介面上供該用戶開啟,當該用戶在開啟該可執行實體時,負責處理該開啟事件的一程式區塊,即可透過該啟動模組所提供的該接口,發出該觸發T0和傳入該執行請求至該啟動模組,驅動該啟動模組依據該執行請求的內容,動態載入運行該執行請求所對應的揮發性應用程式。
三、該執行請求也可以是因應一用戶於該啟動模組本身所提供的操作介面上,輸入或點擊某一個揮發性應用程式的網路地址所發出;其中,該啟動模組可以是一視窗應用程式,且該啟動模組於其所顯示的操作介面上,提供一文字輸入元件或顯示一網路地址列表,供該用戶進行操作,讓該用戶可以輸入或選擇該網路地址來進行開啟,然後,該啟動模組就可以將該網路地址包裹成該執行請求後,發送該執行請求至本身負責接收執行請求的一程式區塊裡執行,驅動該程式區塊依據該執行請求的內容,動態載入運行該網路地址所對應的揮發性應用程式。
承上,於一較佳實施例中,該啟動模組用於動態載入運行該揮發性應用程式的該網路地址,是經由該執行請求而傳入至該啟動模組;其中,如果該執行請求的至少一內容裡已經內含該網路地址,則該啟動模組可以直接從該執行請求中,讀取該網路地址;如果該執行請求的至少一內容是該揮發性應用程式的元資料的至少一內容,則該啟動模組可以參考如圖1所示的各項方式,依據該至少一內容來確定(定位)出可用於動態載入運行該揮發性應用程式的該網路地址;或者,如果該執行請求中內含的是該揮發性應用程式的元資料的一存取連結,則該啟動模組可以透過該存取連結取得該揮發性應用程式的元資料後,再依據該元資料的內容來確定(定位)出該揮發性應用程式的該網路地址。
承上,於一較佳實施例中,由於該啟動模組的作業流程是相當固定的,因此,如果該執行請求的資料結構是一標準的結構,而且用於接收該執行請求的該觸發T0,以及用於驅動該另一軟體模組或軟體引擎的該另一觸發T1,都可以透過標準介面來完成,那麼該啟動模組可以是一個能夠動態載入運行所有揮發性應用程式的通用性啟動模組,並由系統供應商直接內建於其所提供的軟體平台或操作系統之中,又或者該啟動模組可以是經由一程式產生器(Code Generator)為每一個揮發性應用程式自動化產生而來。
特別說明的是,上述依據發出執行請求、解析執行請求,以及確定(定位)揮發性應用程式的網路地址的各項方法,僅為本案所採用之非限制性的實施例,但並不以此限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
請參閱圖4,其是一啟動模組的實施概念示意圖,其中,圖4中的觸發T01,T02,T03和圖3中的觸發T0是同一或均等的觸發,請求50061,50062,50063和圖3中的請求5006是同一或均等的請求,另外,圖4中的觸發T11,T12,T13和圖3中的觸發T1是同一或均等的觸發,請求50081,50082,50083和圖3中的請求5008是同一或均等的請求。本文所述的「啟動模組」可以有許多不同的實作方式,以下舉例各種用於實作一個啟動模組的方法:
一、該啟動模組本身是獨立運行於一軟體平台或操作系統裡的一應用程式,該應用程式經由一觸發T01而收到一執行請求後,該應用程式可以透過另一觸發T11來啟動另一軟體模組,將該執行請求所指向的一揮發性應用程式,動態載入運行於該另一軟體模組;其中,該另一軟體模組可以是一瀏覽器、WebView,或者是一即時應用(Instant App)的驅動程式;其中,如果該另一軟體模組是一瀏覽器或一即時應用(Instant App)的驅動程式,則該另一軟體模組是獨立於該啟動模組之外的另一應用程式;如果該另一軟體模組是一WebView,則該另一軟體模組可以嵌入於該啟動模組之中,與該啟動模組同屬一應用程式。
二、該啟動模組本身是獨立運行於一軟體平台或操作系統裡的一瀏覽器,該瀏覽器經由一觸發T02而收到一執行請求後,該瀏覽器可以透過另一觸發T12來驅動本身所提供的一軟體引擎,將該執行請求所指向的一揮發性應用程式,動態載入運行於該軟體引擎,其中,該軟體引擎是一HTML/CSS/Javascript軟體引擎。
三、該啟動模組本身是可動態載入運行一異質系統的一軟體元件(例如:WebView),嵌入於一操作系統的應用程式之中,該軟體元件經由一觸發T03而收到一執行請求後,該軟體元件是透過另一觸發T13來驅動本身所提供的一軟體引擎,將該執行請求所指向的一揮發性應用程式,動態載入運行於該軟體引擎。
除了以上各種實作方式之外,該啟動模組本身也可以是一個Web軟體系統中的軟體模組,該軟體模組收到一執行請求後,該軟體元件可以透過開啟一HTML5內置框架(iFrame),將該執行請求所指向的一揮發性應用程式,動態載入運行於該HTML5內置框架之中。
特別說明的是,上述實作一啟動模組的各項方法僅為本案所採用之非限制性的實施例,啟動模組的實作方法並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
於圖3和圖4中,「觸發T0,T1,T01,T11,T02,T12,T03,T13」的執行,都代表的是一程式區塊對另一程式區塊的驅動,向該另一程式區塊提交一請求(例如:「請求50061,50062, 50063」分別是「觸發T01,T02,T03」所提交的請求,目的在於傳入一執行請求;「請求50081,50082, 50083」則分別是「觸發T11,T12,T13」所提交的請求,目的在於動態載入運行一揮發性應用程式);其中,「觸發T0,T01,T02,T03」是因應一可執行對象被用戶開啟或者是一可操作對象的一可執行事件被用戶操作後所發出,用以傳送一執行請求至一啟動模組,並驅動該啟動模組對該執行請求提供服務;另外,「觸發T1,T11,T12,T13」則是因應該啟動模組收到該執行請求後所發出,用以驅動另一軟體模組或一軟體引擎動態載入運行一揮發性應用程式。
本文於圖3、圖4,以及本文各實施例說明中所述的「觸發」,都是指一程式區塊對另一程式區塊的驅動。該程式區塊透過該觸發來驅動該另一程式區塊進行一資料傳輸對接、執行一指令,及/或其組合。「觸發」的具體實作可以透過許多不同方法或者透過該不同方法的組合來完成,於此僅介紹其中幾種方法如下:
一、直接引入「該另一程式區塊的程式碼」於「該程式區塊的程式碼」中,該程式區塊對該另一程式區塊的觸發,是透過在該程式區塊裡直接執行該另一程式區塊來完成,亦即,該觸發是在同一系統行程(OS process)中執行,且該程式區塊和該另一程式區塊是屬於同一軟體模組的程式區塊。
二、將對該另一程式區塊的驅動包裹於一函式,該程式區塊對該另一程式區塊的觸發,是由該程式區塊以同步化的函式呼叫方式,執行「該另一程式區塊」所完成,其中,該函式可以和該程式區塊在同一系統行程(OS process)中執行,或者該函式和該程式區塊是在不同的系統行程(OS process)或不同的機器裡執行,舉例來說:當該函式和該程式區塊是在不同系統行程(OS process)或不同機器裡執行時,該函式是提供遠端程序呼叫Remote Procedure Call的介面,供該程式區塊呼叫。
三、該程式區塊對該另一程式區塊的觸發,是透過非同步的事件驅動方式來完成,即由該程式區塊發出一事件來通知該事件的一監聽程式,並由該監聽程式執行「該另一程式區塊」,其中,該監聽程式可以和該程式區塊在同一系統行程(OS process)中執行,或者該監聽程式和該程式區塊是在不同系統行程(OS process)或不同機器裡執行,舉例來說:該監聽程式和該程式區塊是在不同系統行程(OS process)或不同機器裡執行時,可以透過行程間通訊interprocess communication,或一網路連線socket connection來接收該事件,並於收到該事件後,執行該另一程式區塊。
特別說明的是,上述由一程式區塊觸發另一程式區塊的方法並不以上述為限,各種可執行的程式區塊之間對函式呼叫和事件交互的整合方法已十分普及,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
另外,本文於各項實施例說明中所述的「資料傳輸對接」,都是指將一資料從一軟體系統、軟體模組,及/或程式區塊傳輸至另一軟體系統、另一軟體模組,及/或另一程式區塊的具體實現方式。一程式區塊在對另一程式區塊進行一觸發時,經常需要同時進行資料傳輸對接來進行資料的傳遞,使該另一程式區塊能夠獲得足夠用於執行的資料。舉例來說:當一程式區塊對該啟動模組進行一觸發,驅動該啟動模組為一執行請求提供服務時,該程式區塊必須能夠經由該觸發將該執行請求傳送至該啟動模組;而當該啟動模組對該另一軟體模組或該軟體引擎進行一觸發,驅動該另一軟體模組或該軟體引擎動態載入運行一揮發性應用程式時,該啟動模組也必須能夠經由該觸發將可用於動態載入運行該揮發性應用程式的網路地址,傳送至該另一軟體模組或該軟體引擎。
承上,資料傳輸對接有許多不同的方法,在此僅針對某一程式區塊在觸發另一程式區塊時,該二程式區塊之間的資料傳輸對接,介紹其中幾種方法如下:
一、如果該另一程式區塊是被包裹於一函式裡,該程式區塊是透過呼叫該函式來觸發該另一程式區塊執行一工作,則該程式區塊可以透過傳入參數於該函式的方式,將執行該工作所需的資料傳送至該另一程式區塊。
二、如果該另一程式區塊的程式碼是直接被引入於該程式區塊的程式碼中,該程式區塊是透過直接執行該另一程式區塊的程式碼來觸發該另一程式區塊執行一工作時,則該程式區塊可以將執行該工作所需的資料,直接存於一記憶體空間,該另一程式區塊可以直接在該記憶體空間裡,取得執行該工作時所需的資料。
三、由該程式區塊提供用於讀取資料的一函式,然後,透過事件(event)驅動的方式,觸發一事件(event)來通知該另一程式區塊執行一工作,接著,該另一程式區塊收到通知後,由該另一程式區塊呼叫該函式來接收執行該工作時所需的資料。
特別說明的是,以上各種方式均可在不同軟體系統、軟體模組,及/或程式區塊上實施。惟,不同軟體系統、軟體模組,及/或程式區塊之間在執行時期的資料傳輸對接方法並不以上述為限,各種不同的資料傳輸對接的技術已十分普及,普遍熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
請參閱圖5,其是一可執行對象和可操作對象的基本運作流程示意圖。本文所述的「可執行對象」指的是可以被安裝、引入,及/或自動化配置至一軟體系統中的一揮發性應用程式,如圖5所示的一可執行對象O1是一個名為“遙控器”的揮發性應用程式,該可執行對象O1是根據一應用程式單元的數據模型所生成,當該可執行對象O1被安裝、引入,及/或自動化配置至一軟體系統後,將成為相容於該軟體系統的一可執行實體I1(即為一遙控器App),並且在該軟體系統的執行時期裡,該可執行實體I1將被顯示於一操作介面上供一用戶開啟。如圖5所示,該操作介面是一App啟動介面(APP Launcher),於該App啟動介面(APP Launcher)上,該用戶可以經由一點擊50091來開啟該可執行實體I1,進而將該遙控器App的可執行程式區塊載入運行。首先,該點擊50091將促使該App啟動介面對遙控器App的啟動事件E1提交一觸發50101,收到該觸發50101後,負責處理該啟動事件E1的程式區塊,即可對動態載入運行揮發性應用程式的流程做出相對應的處理50111,該處理50111即為發出一個相對應的執行請求,以使得該可執行對象O1所對應的該揮發性應用程式動態載入運行,並由該揮發性應用程式為該用戶提供“遙控器”的軟體服務;其中,動態載入運行揮發性應用程式的流程之實作可參考如圖3及/或圖4之實施例,惟不以此為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
承上,於一較佳實施例中,該可執行對象O1可以有不同的實施態樣,於此僅介紹其中幾種如下:
一、該可執行對象O1本身是一個可以被安裝和啟動於該軟體系統的應用程式。舉例來說,該可執行對象O1是一Android App,其本身的圖示和名稱是依據該揮發性應用程式的App圖示和App名稱所設置,且該揮發性應用程式的元資料是以一組態或一存取連結的形式,被提供於該可執行對象O1的設定檔中。該軟體系統可以是一Android操作系統,當該可執行對象O1被安裝、引入,及/或自動化配置至該軟體系統後,該軟體系統會依據其圖示和名稱,產生相對應的可執行實體I1,並顯示於手機桌面上供用戶點擊。當用戶在手機桌面上,點擊該可執行對象O1所對應的該可執行實體I1時,首先,該軟體系統會將該可執行對象O1本身的可執行程式區塊(即該Android App的程式區塊)載入並予以執行,接著,該軟體系統可以透過一標準應用程式介面(例如:Android Activity應用程式介面),通知該可執行對象O1進行啟動,也就是說,在這個情況下,該可執行對象O1的該啟動事件E1,是由該可執行對象O1本身的一程式區塊負責處理,接著,該程式區塊的主要任務,是將設定於該可執行對象O1裡的內容(例如:該組態或該存取連結)封裝成一執行請求後,透過一資料傳輸對接傳入至一啟動模組,由該啟動模組對該執行請求進行處理,並進而將該揮發性應用程式動態載入至該軟體系統中運行。其中,Android Activity應用程式介面可以參考 “https://developer.android.com/reference/android/app/Activity”,該軟體系統對該可執行對象O1的onStart函式呼叫,可以視為是一啟動事件的觸發。其中,熟知本技藝人士可知,在該可執行對象O1(Android App)被安裝至該軟體系統時,不必將真正能夠提供“遙控器”服務的該揮發性應用程式下載至該軟體系統。
承上,於一較佳實施例中,由於該可執行對象O1的安裝和啟動流程可以是通用的流程,因此,該可執行對象O1可以透過一程式產生器(Code Generator)來自動產生,系統供應商或服務提供商可以將該程式產生器提供於該軟體系統中;其中,該程式產生器是本文所述「元資料轉換程式」的一種實施態樣。
承上,於一較佳實施例中,該程式產生器對該揮發性應用程式的元資料,具有解析的能力,能夠根據該元資料的資料結構,載入其中的各項資訊。在該程式產生器的運作流程中,當該程式產生器收到該揮發性應用程式的元資料、一App圖示的載入位置,以及一App名稱時,首先,可以在其所能存取的儲存空間裡,建立一資料夾,並且,於該資料夾中,分別建立用於存放AndroidManifest.xml、Java原始程式檔(Java source code file)、圖像資源(drawable resource),以及設定檔(values)等相關子資料夾,藉此針對該揮發性應用程式自動生成一Android App專案,其中,該程式產生器將用該Android App專案來產生一Android App,該Android App將用以做為該揮發性應用程式的可執行對象。自動生成該Android App專案後,該程式產生器可以下列步驟所述之方法來完成該Android App專案的實作:(1)從該App圖示的載入位置將該App圖示載入,並存入用於儲存圖像資源的子資料夾中。(2)在用於儲存設定檔的子資料中,產生一組態檔,並將該元資料的內容寫入該組態檔。(3)生成一個準備用於寫入一Android Activity程式碼的Java原始程式檔,並將其存入用於儲存Java原始程式檔的子資料夾中;其中,該Android Activity是用來作為該Android App的入口,當用戶於一手機桌面上點擊該Android App時,將由該Android Activity的一onStart函式,負責處理該Android App的啟動工作;其中,該Android Activity的Package名稱和Activity名稱,可以由該程式產生器本身提供和設置。(4)於該Java原始程式檔裡,寫入該Android Activity的程式碼的基本架構,對於Android App來說,每一個Android Activity的程式碼,都必須遵循著Android應用程式框架來完成實作,因此程式碼的基本架構都是一樣的,可以由該程式產生器自動產生。(5)於該onStart函式,自動寫入用於讀取該組態檔的程式碼,由於該組態檔的命名和位置都是由該程式產生器本身決定,且從一檔案讀取內容的程式碼基本是一樣的,因此,“用於讀取該組態檔的程式碼”可以由該程式產生器自動產生。(6)接著,於上一步驟產生的程式碼下方,自動寫入用於解析該組態檔的程式碼,由於該程式產生器對於該組態檔裡的元資料內容,具有解析的能力,對該元資料內容的資料結構有著充分的瞭解,且依據元資料內容的資料結構對元資料內容進行解析的程式碼基本上是固定的,因此,“用於解析該組態檔的程式碼”同樣可以透過該程式產生器自動產生。(7)接著,於上一步驟產生的程式碼下方,自動寫入可用於確定(定位)出一網路地址的程式碼,該網路地址是可用於動態載入運行該揮發性應用程式的網路地址。參考圖1及其相關實施例可知,依據元資料的內容來確定(定位)出該網路地址的相關程式碼基本上是固定的,因此,可透過該程式產生器自動產生。(8)接著,於上一步驟產生的程式碼下方,依據該揮發性應用程式的種類,自動寫入用於驅動一Web前端應用程式或Android即時應用的程式碼,以完成該Android Activity的實作。參考圖2及其相關實施例可知,用於驅動一Web前端應用程式或Android即時應用的程式碼,基本上是固定的,因此,可透過該程式產生器自動產生;其中,該揮發性應用程式的種類,可以設定於該元資料內容,或由該程式產生器本身所預先限定。(9)完成該Android Activity的實作後,自動生成一AndroidManifest.xml,並將各項資源,包括該Android Activity、App圖示、App名稱,以及該組態檔的相關資訊,自動設定至該AndroidManifest.xml的內容裡,以完成該Android App專案的建置;其中,該App圖示和App名稱,也可以是由該元資料內容所設定。(10)最後,完成該Android App專案的自動化建置後,該程式產生器即可對該Android App專案進行編譯,為該揮發性應用程式產生一Android App(可執行對象),並為該Android App產生一安裝檔,如果該程式產生器本身具有安裝Android App的權限,即可將該Android App(可執行對象)直接安裝於該手機操作系統之中。
承上,於另一較佳實施例中,在該程式產生器的運作流程中,當該程式產生器收到的是該揮發性應用程式的元資料的一存取連結、一App圖示的載入位置,和一App名稱時,首先,該程式產生器通過該存取連結取得該揮發性應用程式的元資料內容後,接著,同樣採用上述步驟,即可自動產生可供安裝的該Android App(可執行對象)。
承上,於另一較佳實施例中,在該程式產生器的運作流程中,如果一瀏覽器、WebView,或Android即時應用的驅動程式,對該揮發性應用程式的元資料內容,具有解析的能力,且提供了一個資料傳輸對接的接口,用來接收該組態檔的內容,在這個情況下,該程式產生器並不需要在該Android Activity的程式碼中,寫入用於解析該組態檔的程式碼,只需在執行完步驟(5)後,就可以直接寫入一程式碼來完成該Android Activity的實作,不需要執行步驟(6)、(7)、和(8);其中,該程式碼的作用是在於透過該接口,將該組態檔裡的內容直接傳入該瀏覽器、該WebView,或該Android即時應用的驅動程式,進而驅動該瀏覽器、該WebView,或該Android即時應用的驅動程式,對該組態檔的內容進行解析與處理,以將該揮發性應用程式動態載入運行於其中。
承上,於另一較佳實施例中,在該程式產生器的運作流程中,當該程式產生器收到該揮發性應用程式的元資料的一存取連結、一App圖示的載入位置,以及一App名稱時,該程式產生器於該組態檔的內容中,只需要將該存取連結設定於其中即可。在這個情況下,透過該接口將組態檔的內容傳入該瀏覽器、該WebView,或該Android即時應用的驅動程式時,該瀏覽器、該WebView,或該Android即時應用的驅動程式即可從該內容中,取得該存取連結。接著,該瀏覽器、該WebView,或該Android即時應用的驅動程式可以先行透過該存取連結取得該揮發性應用程式的元資料後,然後,對該元資料進行解析及確定(定位)出可用於動態載入運行該揮發性應用程式的網路地址,即可將該揮發性應用程式動態載入運行於其中。透過這個運作流程,包括該程式產生器以及該程式產生器所生成的Android App,都不需要對該揮發性應用程式的元資料進行任何形式的運算或處理,該程式產生器只需要在獲得該揮發性應用程式的元資料的存取連結後,即可為該揮發性應用程式自動產生一可執行對象。
承上,於另一較佳實施例中,由該程式產生器所生成的該Android App(即該可執行對象O1),本身即為一啟動模組。當該Android App被安裝至一Android操作系統(即該軟體系統)後,用戶可以在Android操作系統所提供的桌面上,透過點擊操作來啟動該Android App,當該Android App的啟動事件(即該onStart函式)被觸發時,該Android App即可產生一執行請求,並將本身組態檔中所包含的內容(揮發性應用程式的元資料或其存取連結)填入該執行請求中,即可透過一資料傳輸對接,傳入一瀏覽器、一Android即時應用的驅動程式,或者是嵌入於該Android Activity的一WebView,進而將該揮發性應用程式動態載入運行於該Android操作系統中;其中,如果該Android App與該Android操作系統的是由同一企業所提供,在可控的資安條件下,該Android操作系統,在啟動該Android App時,可以一併將該用戶的身份資料(或帳號資料)傳入該Android App,當該Android App在產生該執行請求時,就可以將該用戶的身份資料(或帳號資料)填入該執行請求中,於動態載入運行該揮發性應用程式時,直接登入該揮發性應用程式所提供的服務,並且使該揮發性應用程式於執行時期中,可以透過該用戶的身份資料(或帳號資料)來確定(定位)該用戶之存取權限。
二、該可執行對象O1本身是一個可以被該軟體系統所管理的一資料實體。舉例來說,該可執行對象O1可以是由該軟體系統所支持的一種App組態檔,該App組態檔中至少包括一App圖示、一App名稱,以及該揮發性應用程式的一元資料或該元資料的一存取連結。該軟體系統於啟動時,首先,可以讀取其儲存空間裡所有的App組態檔,然後,將各個App組態檔裡的App圖示和App名稱載入之後,在其操作介面上,就可以為各個App組態檔產生各自對應的可執行實體,透過這個方式,在操作介面上也就包含了該可執行對象O1所對應的該可執行實體I1,供用戶進行點擊。接著,當用戶於操作介面上,點擊該可執行實體I1後,該軟體系統可以直接讀取該執行對象O1所對應的App組態檔,將其內容(包含揮發性應用程式的元資料或其存取連結)封裝成一執行請求後,透過一資料傳輸對接將該執行請求傳入至一啟動模組,由該啟動模組對該執行請求進行處理,並進而將該揮發性應用程式動態載入至該軟體系統中運行。亦即,在這個情況下,該可執行對象O1的該啟動事件E1,可以是由該軟體系統本身的一程式區塊負責處理。其中,熟知本技藝人士可知,在該可執行對象O1(App組態檔)被安裝至該軟體系統時,不必將真正能夠提供“遙控器”服務的該揮發性應用程式下載至該軟體系統。
承上,於一較佳實施例中,該App圖示和該App名稱,也可以是由該元資料的內容所指定,該軟體系統是經由解析該元資料的內容後,將該App圖示和該App名稱載入並顯示操作介面上。如果該App組態檔的內容僅包含該元資料的該存取連結,則該軟體系統可以透過該存取連結取得該元資料的內容後,再經由解析該元資料的內容,來載入該App圖示和該App名稱。
承上,於一較佳實施例中,該可執行對象O1可以透過一App組態產生器來自動產生,在該App組態產生器收到一揮發性應用程式的元資料或其存取連結時,可以新建一個App組態檔,根據App組態檔的資料結構,將該元資料或該存取連結的內容,寫入該App組態檔裡,並將其儲存至該軟體系統中的該儲存空間,完成該App組態檔(可執行對象)的安裝工作;其中,該 App組態產生器是本文所述「元資料轉換程式」的一種實施態樣。
於上述實施例說明中,該程式產生器和該App組態產生器都是可以一軟體元件的形態,整合於任一軟體模組及/或應用程式之中,提供於該軟體系統。該揮發性應用程式的服務提供商,只要能夠將該揮發性應用程式的元資料,以一組態或存取連結的形式,傳入該軟體模組及/或應用程式,就能夠由該軟體模組及/或應用程式自動產生該揮發性應用程式的可執行對象(App組態檔或Android App),並將其自動安裝至該軟體系統。此外,該揮發性應用程式的服務提供商,可以將用戶的帳號資訊直接提供於該揮發性應用程式的元資料,並使每一位用戶有其各自專屬的一元資料,如此一來,當一用戶的元資料或其存取連結傳入一啟動模組來動態載入運行該揮發性應用程式時,該揮發性應用程式即可依據該帳號資訊完成登入的工作。依此,即完成了動態安裝及/或自動化配置的工作。
特別說明的是,上述可執行對象的各種實施態樣和程式產生器/App組態產生器的實作方式,僅為本案所採用之非限制性的實施例,但並不以此為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
另外,本文所述的「可操作對象」指的是可以被儲存至一管理模組中的一可操作實體(operable entity),如圖5所示的一可操作對象O2是一個通話記錄,而該操作對象O2是由一個負責管理通話記錄的管理工具所管理,該可操作對象O2是根據一資訊單元的數據模型所生成,當該可操作對象O2被儲存至該管理工具後,將成為相容於該管理工具的一可操作實體I2,並且在該管理工具的執行時期裡,該可操作實體I2將被顯示於一操作介面上供用戶操作。如圖5所示,該操作介面是一通話記錄列表,於該通話記錄列表裡,用戶可以經由一點擊50092來對該可操作實體I2所代表的該通話記錄進行回撥,該點擊50092將促使該操作介面對該通話記錄的可執行事件E2提交一觸發50102,收到該觸發50102後,負責處理該可執行事件E2的程式區塊,即可對動態載入揮發性應用程式的流程做出相對應的處理50112,該處理50112即為發出相對應的執行請求至一啟動模組,動態載入運行該可執行事件E2所對應的一揮發性應用程式,並由該揮發性應用程式來為該可執行事件E2提供“回撥”的應用程式服務;其中,動態載入運行揮發性應用程式的流程之實作可參考如圖3及/或圖4之實施例,惟不以此為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。另外,特別說明的是,任一可用以保存作業流程狀態的資訊單元,都可以是一可操作對象,可操作對象的實施態樣並不以上述為限。
承上,於一較佳實施例中,該可執行事件E2與一Event組態檔進行了綁定,該Event組態檔中至少包括一揮發性應用程式的元資料或者是指向該元資料的一存取連結。該管理工具在為該可操作對象O2產生可操作實體時,可以同時將該可操作對象O2的Event組態檔,從儲存空間裡全部載入,藉以掌握該可操作對象O2的每一可執行事件與Event組態檔的綁定關係。當用戶於通話記錄的操作介面上,點擊“回撥”時,該管理工具就可以正確地讀取該執行事件E2所對應的Event組態檔,進而將該Event組態檔所對應的揮發性應用程式動態載入運行。亦即,在這個情況下,該可執行事件E2的驅動,是由該管理工具的一程式區塊負責處理;其中,該Event組態檔是一可執行狀態的實施態樣;其中,熟知本技藝人士可知,在該可操作對象O2(通話記錄)被儲存至該管理工具時,不必下載該真正能夠提供“回撥”服務的揮發性應用程式。
承上,於一較佳實施例中,該Event組態檔可以透過一Event組態產生器來自動產生。在該Event組態產生器收到一揮發性應用程式的一可執行狀態時,首先,該Event組態產生器可以新建一個Event組態檔,然後,根據Event組態檔的資料結構,將該可執行狀態的內容寫入該Event組態檔裡。接著,將該Event組態檔和該可操作對象一起儲存至該管理工具的存儲空間,並於該可操作對象的實體內容裡,將至少一可執行事件與該Event組態檔進行綁定,舉例來說,於該可操作對象的實體內容裡,建立一個事件表格(event table),將每一個可執行事件所對應的Event組態檔,都記錄於該事件表格之中,如此,當該至少一可執行事件被觸發時,經由查詢該事件表格,即可正確地驅動該Event組態檔來完成用戶所需要的工作;其中,該Event組態產生器是本文所述「元資料轉換程式」的一種實施態樣。
於上述實施例說明中,該Event組態產生器可以一軟體元件的形態,整合於任一軟體模組及/或應用程式之中,提供於該軟體系統。該揮發性應用程式的服務提供商,只要能夠將該揮發性應用程式的可執行狀態,以一組態或存取連結的形式,傳入該軟體模組及/或應用程式,就能夠由該軟體模組及/或應用程式自動產生相對應的一Event組態檔,並將該Event組態檔綁定至一可操作對象後,儲存至一管理工具裡。透過這個方式,完成一個作業流程的動態導入工作。
特別說明的是,上述關於可操作對象的實施態樣和Event組態產生器的各項實作方法僅為本案所採用之非限制性的實施例,但並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
承上,如圖5所示,於一較佳實施例中,與該可操作對象的一可執行事件進行綁定的Event組態檔,其所代表的實際上是一揮發性應用程式的可執行狀態。如圖5所示,當用戶針對一通話記錄,點擊該回撥按鈕時,用戶的需求並不僅止於只是要動態載入運行能夠提供“回撥”服務的一揮發性應用程式,而是需要在點擊該回撥按鈕時,除了能夠動態載入運行該揮發性應用程式之外,還能夠直接對該通話記錄的另一方進行電話撥打的工作,進而完成回撥的工作。亦即,本實施例中,該Event組態檔所代表的其實是一通話作業流程的一可執行狀態,在該可執行狀態中,除了需要記錄著能夠提供通話服務的揮發性應用程式的元資料或其存取連結,也同時需要記錄著與該通話作業流程相關的一應用程式狀態(application state)。
舉例來說,該可執行事件E2所連結的該Event組態檔,其內容裡所包含的應用程式狀態(application state),將至少包括一通話ID以及可用於代表該用戶身份的一用戶ID。該應用程式狀態是一個可以由該啟動模組傳入至該揮發性應用程式的狀態設定,當該揮發性應用程式(通話服務)被動態載入運行後,在執行時期裡,就可以依據該狀態設定的內容,調整其本身內部的應用程式狀態後,執行回撥的工作。該揮發性應用程式透過該通話ID,查找參與該通話的另一位用戶之用戶ID,並對其發出一個新的撥號請求,為該用戶及該另一位用戶建立一個新的通話活動。
請參閱圖6,其是一揮發性應用程式的可執行狀態示意圖,其中,圖6中的揮發性應用程式A1和圖1中的揮發性應用程式A1是同一或均等的揮發性應用程式;圖6中的元資料D1和圖1中的元資料D1是同一或均等的元資料。該揮發性應用程式A1的可執行狀態D2,其本身也可以視為是該揮發性應用程式A1的元資料D1的另一種實施態樣,該可執行狀態D2本身的內容裡,除了包括該揮發性應用程式A1的元資料D1外,還包含了一應用程式狀態D3,該應用程式狀態D3是用於在動態載入運行該揮發性應用程式A1後,令該揮發性應用程式A1能夠依據其狀態設定,將本身內部的應用程式狀態,調整至最合乎用戶需求的可執行狀態。
承上,參考圖6的該可執行狀態D2,由於該揮發性應用程式A1的實施態樣有不同的種類,因此啟動模組可以有不同的方式,將該可執行狀態D2裡的該應用程式狀態D3,以參數形式傳入該揮發性應用程式A1裡,於此僅介紹其中幾種方法如下:
一、如果該揮發性應用程式A1是一Web前端應用程式,且該啟動模組是一以Android原生應用技術所開發而成,當該啟動模組收到針對該可執行狀態D2所觸發的一執行請求時,其中,該執行請求在被發出時,可以將該可執行狀態D2的全部內容,填入該執行請求中,該啟動模組收到後,就可以依據該執行請求裡所包含的該元資料D1內容,取得可用於動態載入運行該Web前端應用程式的該網路地址,即<location>所指向的「https://a.b.c/app」,並且,可以將該執行請求內所包含的該應用程式狀態D3,以URL Query Parameter的形式,加入該網路地址中「https://a.b.c/app?account=“U8796”&params=...」,接著,該啟動模組可以驅動一瀏覽器或一WebView開啟該網路地址,將該網路地址所指向的該Web前端應用程式(該揮發性應用程式)動態載入運行於其中,該Web前端應用程式被動態載入運行後,可對傳入於其中的該URL網路地址「https://a.b.c/app? account=“U8796”&params=...」進行解析,取得該URL網路地址裡所包含的狀態設定後,即可依據該狀態設定的內容,調整本身內部的應用程式狀態,為用戶執行相應的服務;其中,URL Query Parameter(URL Query String)可以參考:https://en.wikipedia.org/wiki/Query_string;其中,該啟動模組驅動該瀏覽器或該WebView對該網路地址的開啟,可視為是該啟動模組對該Web前端應用程式的一「觸發」方式,透過URL Query Parameter將狀態設定傳入該Web前端應用程式亦可視為是該啟動模組對該Web前端應用程式的一「資料傳輸對接」方式。
二、如果該揮發性應用程式A1是一Android即時應用(Instant App),且該啟動模組是一以Android原生應用技術所開發而成,當該啟動模組收到針對該可執行狀態D2所觸發的一執行請求時,其中,該執行請求在被發出時,可以將該可執行狀態D2的全部內容,填入該執行請求中,該啟動模組收到後,就可以依據該執行請求裡所包含的該元資料D1內容,取得可用於動態載入運行該即時應用的該網路地址,即<location>所指向的「https://a.b.c/app」,並且,可以將該執行請求內所包含的該應用程式狀態D3,以URL Query Parameter的形式,加入該網路地址中「https://a.b.c/app?account=“U8796”&params=...」,接著,該啟動模組可以通過adb tool啟動該網路地址,並藉此動態載入和運行該網路地址所對應的該Android即時應用。該Android即時應用在執行時期中,可以透過呼叫android.app.Activity.getIntent().getData().getQueryParameter(...)的方法,來取得嵌入於該網路地址中的URL Query Parameter,即為該狀態設定,並依據該狀態設定的內容,調整本身內部的應用程式狀態,為用戶提供相應的服務;其中,該啟動模組通過adb tool對該網路地址的啟動,可視為是該啟動模組對該Android即時應用的一「觸發」方式,透過URL Query Parameter將狀態設定傳入該Android即時應用亦可視為是該啟動模組對該Android即時應用的一「資料傳輸對接」方式。
承上,於一較佳實施例中,於動態載入運行該揮發性應用程式時,同樣可以採用URL Query Parameter的方法,以參數形式將該用戶的一身份資料(或帳號資料)提供至該揮發性應用程式,使該揮發性應用程式於執行時期中,可以透過該身份資料(或帳號資料)來確定(定位)該用戶之存取權限。
特別說明的是,上述將狀態設定傳入至一揮發性應用程式的各項方法僅為本案所採用之非限制性的實施例,將狀態設定傳入一被動態載入運行的揮發性應用程式之方法並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
請參閱圖7,其是一揮發性應用程式的元資料/可執行狀態與一可執行對象和一可操作對象的綁定示意圖,其中,圖7中的揮發性應用程式A1和圖6中的揮發性應用程式A1是同一或均等的揮發性應用程式;圖7中的元資料D1,D11和圖6中的元資料D1是同一或均等的元資料;圖7中的元資料D12和圖6中的元資料D1是均等的元資料,其是透過一數據模型對該元資料D1的部份內容進行重整後的資料實體;圖7中的可執行狀態D21和圖6中的可執行狀態D2是均等的可執行狀態,其是經過一數據模型重整後的可執行狀態。
該揮發性應用程式A1的元資料D1之內容,與可執行對象O3和可操作對象O4之間,存在著一綁定關係,透過該綁定關係的連結,使該執行對象O3在被啟動或者是該可操作對象O4的一可執行事件在被觸發時,能夠正確地對該揮發性應用程式A1完成動態載入運行的工作;其中,該綁定關係可以透過一組態檔來完成,但是並不以此為限,如果該可執行對象是一可被執行的應用程式,則該組態檔可以設置於該可執行對象裡的一設定檔;該組態檔本身可以是一App組態檔(可執行對象),該App組態檔是以一個可識別的檔案類型,儲存於一軟體系統所指定的目錄,該軟體系統可以從該目錄,對該App組態檔進行讀取、載入,和驅動;該組態檔也可以是一個Event組態檔,設置於該可操作對象的儲存空間中,於該可操作對象的實體內容中,該Event組態檔和一可執行事件具有一連結關係;其中,該App組態檔或該Event組態檔除了可以儲存成一檔案之外,也可以是以一資料實體的形式,儲存至一資料庫當中。
請參閱圖8,其是一可執行對象和可操作對象的一較佳實施概念示意圖,並同時參考圖7和圖3,其中,圖8中的揮發性應用程式A1和圖7中的揮發性應用程式A1是同一或均等的揮發性應用程式;圖8中的元資料D1和圖7中的元資料D1是同一或均等的元資料;圖8中的可執行對象O3和圖7中的可執行對象O3是同一或均等的可執行對象;而圖8中的可操作對象O4和圖7中的可操作對象O4是同一或均等的可操作對象;圖8中的啟動事件E3和圖7中的啟動事件E3是同一或均等的啟動事件;圖8中的可執行事件E4和圖7中的可執行事件E4是同一或均等的可執行事件;圖8中的觸發T0,T1和圖3中的觸發T0,T1是同一或均等的觸發;圖8中的請求50064,50065和圖3中的請求5006是同一或均等的請求;圖8中的運算50071和圖3中的運算5007是同一或均等的運算;而圖8中的請求50084和圖3中的請求5008是同一或均等的請求。
承上,於一較佳實施例中,該元資料D1所代表的是該揮發性應用程式A1的一元資料的實施態樣。綁定於該可執行對象O3裡的組態檔內容,可以是該元資料D1的原始內容D11、該元資料D1的部份內容D12,或者是指向該原始內容D11或該部份內容D12的一存取連結;而該可執行狀態D21所代表的是該揮發性應用程式A1的一可執行狀態的實施態樣。綁定於該可操作對象O4裡的組態檔內容,可以是該揮發性應用程式A1的可執行狀態D21或者是指向給可執行狀態D21的一存取連結。
承上,於一較佳實施例中,不論是該原始內容D11、該部份內容D12、該可執行狀態D21,都可以先行註冊於如圖1所示的該註冊服務S1裡,由該註冊服務S1為該原始內容D11、該部份內容D12,或該可執行狀態D21產生相應的存取連結,以存取連結的形式來和該可執行對象O3以及該可操作對象O4進行綁定,可以避免將該原始內容D11、該部份內容D12,以及該可執行狀態D21的完整內容,寫入該可執行對象O3以及該可操作對象O4的組態檔內容之中。亦即,可以避免在該可執行對象O3和該可操作對象O4的組態檔內容中,寫入該原始內容D11、該部份內容D12,和該可執行狀態D21的複本,以複本的形式寫入組態檔內容裡,一旦該元資料D1需要進行修改,就需要另外花費許多的成本,才能夠完成資料的同步化更新。透過存取連結所完成的綁定,只需要在該註冊服務S1維護好最新的資料即可,大幅降低資料同步的成本。
承上,於一較佳實施例中,以存取連結的形式來進行綁定時,該存取連結將會被設定至該可執行對象O3的App組態檔或該可操作對象O4的Event組態檔。負責處理該啟動事件E3和該可執行事件E4的程式區塊,從該App組態檔或該Event組態檔中,取得該存取連結後,可以通過存取連結從該註冊服務S1裡取得該原始內容D11、該部份內容D12,或該可執行狀態D21之完整內容,並將其完整內容填入一執行請求,然後,透過一觸發T0,將該執行請求傳入一啟動模組。收到該執行請求的該啟動模組,就可以讀取該執行請求,從中取得該原始內容D11、該部份內容D12,或該可執行狀態D21的完整內容,然後,依據其中的內容,確定(定位)出可用以動態載入運行該揮發性應用程式A1的網路地址後,進而將該揮發性應用程式A1動態載入運行於另一軟體模組(瀏覽器/WebView/即時應用的驅動程式)或軟體引擎(HTML/CSS/Javascript軟體引擎)之中。
承上,於另一較佳實施例中,負責處理啟動事件E3和可執行事件E4的程式區塊,也可以在執行該觸發T0之前,就先行依據該原始內容D11、該部份內容D12,或該可執行狀態D21的內容,來確定(定位)出可用以動態載入運行該揮發性應用程式A1的網路地址,然後,將該網路地址填入該執行請求後,透過該觸發T0,將該執行請求傳入該啟動模組。透過這個方式,收到該執行請求的該啟動模組,只要讀取該執行請求的內容,就可以取得該網路地址,並直接將該揮發性應用程式A1動態載入運行起來。
承上,於另一較佳實施例中,負責處理啟動事件E3和可執行事件E4的程式區塊,也可以將存取連結直接填入該執行請求,然後,隨即執行該觸發T0,將該執行請求傳入該啟動模組。透過這個方式,收到該執行請求的該啟動模組,需要先經由該存取連結來取得該原始內容D11、該部份內容D12,或該可執行狀態D21的完整內容,接著,再來確定(定位)出可用以動態載入運行該揮發性應用程式A1的網路地址,進而動態載入運行該揮發性應用程式A1。
承上,於另一較佳實施例中,於該揮發性應用程式A1被動態載入運行時,自動配置於該原始內容D11、該部份內容D12,和該可執行狀態D21的狀態設定(帳號資訊或應用程式狀態),也可以透過參數的形式來傳入該揮發性應用程式A1,令該揮發性應用程式A1得以依據該狀態設定於執行時期調整本身內部的應用程式狀態(application state)。其中,以參數形式將狀態設定經啟動模組傳入揮發性應用程式的實施方法,可以參考本文前述所介紹的URL Query Parameter示例。
由以上可知,“可執行對象和可操作對象”與一揮發性應用程式的綁定關係是通過將“一綁定內容及/或該綁定內容的存取連結”綁定至可執行對象和可操作對象(舉裡:透過App組態檔或Event組態檔)來完成,而在該綁定關係裡,該綁定內容是該揮發性應用程式的元資料的一資料參照;在資料處理的過程中,由於該透過該資料參照的內容可以取得、恢復,或者是進一步查詢出該揮發性應用程式的元資料內容,因此該綁定內容本身也就可用於代表該揮發性應用程式的元資料。
特別說明的是,上述元資料和可執行對象之間,以及可執行狀態和可操作對象之間的各種綁定及/或驅動的方法,僅為本案所採用之非限制性的實施例,但並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
本文所述的「可執行對象」和用於驅動可執行對象的「軟體系統」之間,存在著一個標準數據模型。亦即,該軟體系統之所以能夠將一可執行對象顯示於操作介面供用戶點擊並進而將其啟動,是因為該可執行對象是依據該標準數據模型的格式所生成,使得該軟體系統得以對該可執行對象進行識別、管理、和驅動。另,本文所述的「可執行狀態」和用於驅動可執行狀態的「管理工具」之間,同樣存在另一個標準數據模型。亦即,「可執行狀態」是依據該另一標準數據模型的格式所生成,也因此,用戶在該管理工具的操作介面上對一可操作對象的一可執行事件進行一觸發時,該管理工具才能夠依據該標準數據模型,正確的讀取和驅動該可執行事件所綁定的一可執行狀態。其中,所述的「標準數據模型」可以視為是該軟體系統和該管理工具對「可執行對象」和「可執行狀態」所支持的「統一化資料模型」。
承上,於一較佳實施例中,當該軟體系統對「可執行對象」所支持的標準數據模型,和「揮發性應用程式的元資料」本身的數據模型是相同或均等的數據模型(即為相容的數據模型),又或者是該軟體系統在啟動「可執行對象」時,並不需要解析其組態內容,只需要將其組態內容,封裝成一個執行請求後,即傳入啟動模組,組態內容的解析工作是由啟動模組來執行,於上述情況的任一情況下,都表示著「揮發性應用程式的元資料」並不需要進行任何的資料格式轉換,就可以直接作為一可執行對象的App組態檔內容,進而安裝至該軟體系統;其中,「揮發性應用程式的元資料」不需要進行任何的資料格式轉換,所指的是不需要透過其它的數據模型來重整「揮發性應用程式的元資料」的內容,並將其內容模型化成另一種格式的資料實體。
承上,於一較佳實施例中,當該管理工具收到一個揮發性應用程式的一可執行狀態時,如果該可執行狀態的數據模型,和該管理工具對「可執行狀態」所支持的標準數據模型是相同或均等的數據模型(即為相容的數據模型),又或者是該管理工具在驅動「可執行狀態」時,並不需要解析其內容,只需要將其內容,封裝成一個執行請求後,即傳入啟動模組,可執行狀態的解析工作是由啟動模組來執行,於上述情況的任一情況下,都表示著該可執行狀態並不需要進行任何的資料格式轉換,就可以直接作為一可操作對象的Event組態檔內容,導入至該管理工具;其中,該可執行狀態不需要進行任何的資料格式轉換,所指的是不需要透過其它的數據模型來重整該可執行狀態的內容,並將其內容模型化成另一種格式的資料實體。
承上,於一較佳實施例中,當用於生成「揮發性應用程式的元資料」的數據模型,與該軟體系統對「可執行對象」所支持的標準數據模型不是相同和均等的數據模型,且該軟體系統在驅動可執行對象時,需要對可執行對象的組態內容進行解析,則「揮發性應用程式的元資料」可以通過一元資料轉換程式的處理,然後,在資料格式轉換的工作完成後,再和一可執行對象進行綁定。
承上,於一較佳實施例中,當用於生成「揮發性應用程式的可執行狀態」的數據模型,與該管理工具對「可執行狀態」所支持的標準數據模型不是相同和均等的數據模型,且該管理工具在驅動可執行狀態時,需要對可執行狀態的內容進行解析,則「揮發性應用程式的可執行狀態」同樣可以通過一元資料轉換程式的處理,然後,在資料格式轉換的工作完成後,再和一可操作對象的可執行事件進行綁定。
承上,於一較佳實施例中,綁定於該可執行對象的組態內容是由一元資料轉換程式所產生,該元資料轉換程式是用一統一化資料模型(標準數據模型),對該揮發性應用程式的元資料的原始內容進行塑模,進而將該揮發性應用程式的元資料模型化為綁定至該可執行對象的該至少一內容;其中,當該揮發性應用程式的元資料的資料模型(數據模型)與該統一化資料模型是相容的資料模型,該至少一內容是直接從該揮發性應用程式的元資料的原始內容裡取得,而當該揮發性應用程式的元資料的資料模型與該統一化資料模型是不相容的資料模型,該至少一內容是通過重整該揮發性應用程式的元資料的原始內容後間接取得。
承上,於一較佳實施例中,綁定於一可操作對象的一可執行事件的內容是由一元資料轉換程式所產生,該元資料轉換程式是用一統一化資料模型(標準數據模型),對一揮發性應用程式的可執行狀態的原始內容進行塑模,進而將該揮發性應用程式的可執行狀態模型化為可以綁定至該可操作對象的該可執行事件的內容;其中,當該揮發性應用程式的可執行對象的資料模型(數據模型)與該統一化資料模型是相容的資料模型,該內容可以直接從該揮發性應用程式的可執行狀態的原始內容取得,而當該揮發性應用程式的可執行狀態的資料模型與該統一化資料模型是不相容的資料模型,該內容是通過重整該揮發性應用程式的可執行狀態的原始內容後間接取得。
請參閱圖9,其是一元資料轉換程式的實施概念示意圖,其中,圖9中的元資料D1和圖6中的元資料D1是同一或均等的元資料;圖9中的可執行狀態D2和圖6中的可執行狀態D2是同一或均等的可執行狀態。本文所述的動態安裝及/或自動化配置,在一般情況下,並不需要「元資料轉換程式」即可完成,不過,在某些情況下,則需要「元資料轉換程式」協助進行資料格式的轉換,才能完成。其中,以下針對在不同的情況下,針對動態安裝及/或自動化配置的需要,提供各種自動產生可執行對象和可操作狀態的實作方法,並提供各種相應的元資料轉換程式的具體實施方案:
一、如圖9所示的(a),當一可執行對象O31是以一個App組態檔的形式來提供至一軟體系統,且用於生成該App組態檔和該元資料D1的數據模型是相同或均等的數據模型,則該元資料D1的內容不需要經過任何的資料格式轉換,就可以直接寫入該App組態檔中,該App組態檔就成為了可以被該軟體系統啟動的該可執行對象O31;其中,該可執行對象O31也可以是一App組態物件,相較於App組態檔是以檔案形式而被儲存於該軟體系統所連結的檔案系統中,App組態物件則是以物件形式被儲存於該軟體系統所連結的資料庫中,該軟體系統可以從該資料庫中讀取該App組態物件,並將其顯示於操作介面上供用戶執行。
二、如圖9所示的(b),當一可執行對象O32是以一個App組態檔的形式來提供至一軟體系統,但是,用於生成該App組態檔和該元資料D1的數據模型是不同(不相容)的數據模型,在這個情況下,就需要一元資料轉換程式C1先針對該元資料D1進行資料格式轉換,才能夠生成出可被提供至該軟體系統的該可執行對象O32。首先,該元資料轉換程式C1依據該App組態檔的數據模型,對該元資料D1的內容進行重整,將該元資料D1的內容模型化至該App組態檔的內容。接著,將模型化後的內容寫入該App組態檔,並儲存至一檔案系統中,該軟體系統即可依據該App組態檔的數據模型,對該App組態檔進行讀取、管理,和啟動;其中,該可執行對象O32也可以是一儲存於資料庫裡的App組態物件。
三、如圖9所示的(c),當一可執行對象O33是以一App啟動器(可執行的應用程式)的形式來提供至一軟體系統,在這個情況下,就需要一元資料轉換程式C2來產生該可執行的應用程式,如前所述,由於可執行對象本身的作業流程是相當固定的,因此該元資料轉換程式C2可以是一程式產生器(Code Generator),透過一流程F1來自動化產生相容於該軟體系統的該App啟動器O33後,將其封裝成一安裝檔,並提供至該軟體系統中進行安裝,該軟體系統即可對其進行啟動;惟該流程F1之實作不以本案實施例為限,本案採用之實施例為非限制性的實施例,將一具有固定作業流程之程式以程式產生器來自動產生的技術已十分普及,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
四、如圖9所示的(d),當一可執行狀態D22是以一Event組態檔的形式來提供至一管理工具,且用於生成該Event組態檔和該可執行狀態D2的數據模型是相同或均等的數據模型,則不需要經過任何的資料格式轉換,就可以直接填入該Event組態檔中,該Event組態檔就成為了可以被該管理工具驅動的該可執行狀態D22;其中,該可執行狀態D22也可以是一Event組態物件,相較於Event組態檔是以檔案形式而被儲存於該管理工具所連結的檔案系統中,Event組態物件則是以物件形式被儲存於該管理工具所連結的資料庫中,該管理工具可以從該資料庫中讀取該Event組態物件,並於用戶執行一相對應的可執行事件時,對該Event組態物件進行驅動。
五、如圖9所示的(e),當一可執行狀態D21是以一Event組態檔的形式來提供至一管理工具,但是,該Event組態檔和該可執行狀態D2的數據模型是不同(不相容)的數據模型,在這個情況下,就需要一元資料轉換程式C3先行針對該可執行狀態D2的內容進行資料格式轉換,才能夠以轉換後的內容,生成出可被提供至該管理工具的該可執行狀態D21。首先,該元資料轉換程式C3是依據該Event組態檔的數據模型,對該可執行狀態D2的內容進行重整,將該可執行狀態D2的內容模型化至符合該Event組態檔的數據模型的內容,也就是該可執行狀態D21。接著,將模型化後的內容(該可執行狀態D21)寫入該Event組態檔,並儲存至該管理工具所連結的一檔案系統中,該管理工具即可依據從該檔案系統載入該Event組態檔,並依據該Event組態檔的數據模型,對該Event組態檔進行讀取、管理,和驅動;其中,該可執行狀態D21也可以是一儲存於資料庫裡的Event組態物件,端視該管理工具所連結的存儲空間是以檔案系統為主,還是以資料庫為主。
本文所述的「元資料轉換程式」,可以一軟體元件或一可執行的程式區塊的形態,整合於任一軟體模組及/或應用程式之中,提供於該軟體系統。服務提供商只要能夠將揮發性應用程式的元資料或可執行狀態,以一組態或存取連結的形式,傳入該軟體模組及/或應用程式,就能夠由該軟體模組及/或應用程式自動產生相對應的一App組態檔或者是Event組態檔,並將其綁定至一可執行對象或者可操作對象後,接著,即可藉由該可執行對象來完成一揮發性應用程式的動態安裝及/或自動化配置工作,或者是藉由該可操作對象來完成一個作業流程的動態導入工作;其中,元資料轉換程式可提供各種用於進行資料傳輸對接的應用程式介面,以接收由各個軟體模組傳入的元資料、可執行狀態或存取連結。
特別說明的是,上述各種App組態檔、App安裝檔、Event組態檔和元資料轉換程式的實施方法,僅為本案所採用之非限制性的實施例,並不以上述為限,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
本發明旨於提供一種動態安裝揮發性應用程式的方法,讓服務提供商在揮發性應用程式的發佈上,得以透過自動化的配置方式,將一揮發性應用程式動態安裝於一操作系統及/或軟體平台之中,以下進一步詳細說明。
請參閱圖10,其為本發明於軟體系統中動態安裝揮發性應用程式的方法的一較佳方法流程圖。動態安裝揮發性應用程式的方法包括:
步驟PF1,於一軟體系統中提供一安裝模組,於該安裝模組接收由一自動化配置引擎(auto-provisioning engine)發出的一動態安裝請求時,啟動一引入流程,在該引入流程的運作過程中,將供一用戶執行的一可執行對象安裝至該軟體系統;其中,該可執行對象與一揮發性應用程式之間具有一綁定關係,且該綁定關係是通過將該揮發性應用程式的一元資料(metadata)及/或該元資料的存取連結綁定至該可執行對象所完成;以及
步驟PF2,於該軟體系統中收到該用戶對該可執行對象的一執行請求時,動態載入運行該揮發性應用程式;其中,該揮發性應用程式的啟動程式的位置是由該元資料的至少一內容所確定(定位)。
請參閱圖11,其係一揮發性應用程式的資源配置圖。其中,於第二外部機器2裡部署著一揮發性應用程式5,該揮發性應用程式5是由一服務提供商所設計,準備部署用於為其全球員工提供網路語音通話的一VoIP應用程式;其中,該揮發性應用程式可以是以一Web前端應用程式、漸進式網頁應用程式,或即時應用(Instant App)的技術架構所開發而成。該服務提供商在完成該揮發性應用程式5的部署工作後,在第一外部機器1裡的一外部網路服務4(註冊服務)裡,為該揮發性應用程式5的元資料7完成了註冊,並由該外部網路服務4提供了一用於查詢該元資料7的存取連結。該服務提供商同時也是其全球員工的系統供應用商,其為全球員工提供了許多用於日常辦公的軟體系統,在完成該揮發性應用程式5的部署工作後,該服務提供商也事先準備了一可執行對象8,並將該可執行對象8和該揮發性應用程式的元資料7完成了綁定,在本實施例中,該可執行對象8是預先產生的一App組態檔,且該App組態檔可以被安裝或引入至任一由該服務提供商提供予其全球員工使用的軟體系統中;其中,該軟體系統可以是一操作系統、一應用程式,或者是一可投影的工作空間;其中,該服務提供商也在該外部網路服務4裡,為該可執行對象8完成了註冊,並由該外部網路服務4提供了一個可用於取得該可執行對象8的存取連結;其中,App組態檔僅是可執行對象的一非限制性的實施例,並不以此為限,熟知本技藝人士參考本案發明後,可依據實際應用需求而進行任何均等的變更設計。該服務提供商也將該可執行對象8安裝至部署於第三外部機器3的一可投影的工作空間6中,該可投影的工作空間6是一個可以被動態載入運行的工作空間,配置於該可投影的工作空間6的統一化工具的數據模型和該可執行對象8(App組態檔)的數據模型是相同或均等的數據模型,因此該可執行對象8是直接以一相容的統一化工具型態,被安裝並配置於該工作空間中。
有關本實施例中所述的“可投影的工作空間和統一化工具的具體技術實施”,可參考申請號為14/324069、名稱為“A METHOD OF UNIFYING INFORMATION AND TOOL FROM A PLURALITY OF INFORMATION SOURCES”,以及申請號為14/577772、名稱為“METHOD OF PROJECTING A WORKSPACE AND SYSTEM USING THE SAME”的美國專利申請,故在此即不再予以贅述。
特別說明的是,上述透過外部網路服務為App組態檔(本例中是一個預先產生的可執行對象)提供存取連結之方法,僅為本案所採用之非限制性的實施例,為可執行對象提供存取連結的實作方式並不以上述為限,將一組態、物件及/或檔案以一資源的形式發佈於網際網路,並且透過一URI(統一資源標誌符)及/或API(應用程式介面,例如:REST API、Web Service等)來為該資源的存取機制提供實作的技術方法已十分普及,熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
承上,請參閱圖12,其係為表達揮發性應用程式的動態安裝流程的運作路徑之概念示意圖。其中,本案發明裡所指的「引入流程」是一作業流程,該作業流程是從「一安裝模組藉由觸發一程式區塊的執行以動態安裝一揮發性應用程式」做為開始,至「安裝及/或引入一可執行對象至一軟體系統所連接的存儲空間」做為結束。於圖11所對應的實施例中,該揮發性應用程式5的服務提供商,為協助其全球員工更有效率地完成日常所需的工作,並且能夠有效地管理,實作了各式各樣的軟體系統,作為其全球員工存取企業資源的入口,其中,包括(一)為全球員工所使用的手機設備,以Android操作系統作為基礎,提供一定制化的手機操作系統。(二)為全球員工所使用的桌上型電腦設備,提供一視窗應用程式。(三)以Web技術架構,為全球員工提供了一可投影的工作空間,令全球員工可以在不同設備裡,跨平台地動態載入運行該可投影的工作空間;其中,當該定制化的手機操作系統、該視窗應用程式,以及該可投影的工作空間,被運行於一計算機設備時,將提供一操作環境,令其員工可以透過該操作環境所建構的一操作介面,存取企業的各項資源。
過去,當該服務提供商為全球員工完成一個全新的工具(應用程式)時,必須將該全新的工具實作成一非揮發性應用程式,然後,透過不斷地通知,才能令其全球員工將該全新的工具,下載並安裝至該定制化的手機操作系統;或者是以軟體元件的形式,透過系統整合來將該全新的工具的操作介面,整合進該視窗應用程式,接著,令其全球員工更新該視窗應用程式或該視窗應用程式的軟體元件庫;又或者是將該全新的工具,以統一化工具的形式,安裝和引入該可投影的工作空間,並限制其全球員工僅能通過動態載入運行該可投影的工作空間後,才能在被投影的工作空間裡,操作該全新的工具。不論是透過非揮發性應用程式的發佈、軟體元件或視窗應用程式更新,或者是可投影的工作空間的集中管理,都在成本與效益上出現瓶頸。
承上,於一較佳實施例中,透過本案之發明方法,首先,該服務提供商可以將該全新的工具,設計成一揮發性的應用程式,圖11中的該揮發性應用程式5即為一實施例。然後,該服務提供商可以本案的發明方法,將該定制化的手機操作系統和該視窗應用程式實作為一可用於管理和驅動一可執行對象的操作環境。接著,該服務提供商即可在該定制化的手機操作系統以及該視窗應用程式裡,分別提供一安裝模組10,該安裝模組10是一軟體模組,它可以是以一應用程式或一軟體代理程式的形式提供於該定制化的手機操作系統,又或者是以一類別庫、軟體元件,或一可執行程式區塊的形式整合於該視窗應用程式之中,並且於該安裝模組10的實作中,參考本案內容所及,針對「觸發」和「資料傳輸對接」的各項實施例,並據以實施包括(一)提供一應用程式介面,接受來自同一軟體系統的軟體模組及/或可執行程式區塊的函式呼叫。(二)提供另一應用程式介面,接受來自其他機器的軟體模組及/或可執行程式區塊的遠端程序呼叫。(三)以 interprocess communication 技術方法,提供一行程間的通訊服務,或者是以 socket connection 技術方法,提供一網路服務間的通訊服務,接收來自不同系統行程或者是不同網路服務的事件;其中,包括該應用程式介面、該另一應用程式介面、該行程間的通訊服務,以及該網路服務間的通訊服務,都是用於令該安裝模組,可以接收來自其他軟體模組、系統行程、網路服務,或者是可執行程式區塊的「觸發」,並藉以從「觸發」所伴隨的「資料傳輸對接」中,取得一動態安裝請求,舉例來說:從應用程式介面的參數內容或者是不同網路服務傳入的事件內容中,取得該動態安裝請求;其中,關於「觸發」和「資料傳輸對接」的實作方法,可以參考本案所及的各項實施例,但並不以此為限,熟知本技藝人士參考本案發明後,可依據實際應用需求而進行任何均等的變更設計。
承上,於一較佳實施例中,每當該安裝模組10收到一觸發,且接收到一動態安裝請求時,即可依據該動態安裝請求的內容,將一揮發性應用程式的一可執行對象安裝至該定制化的手機操作系統或該視窗應用程式之中;其中,該可執行對象安裝完成後,即可成為該定制化的手機操作系統或該視窗應用程式的操作介面上的一可執行實體,該用戶於操作介面上,點擊該可執行實體時,將會傳送一相對應的執行請求至一啟動模組,由該啟動模組將該揮發性應用程式5動態載入運行;其中,對於該定制化的手機操作系統來說,該安裝模組和該啟動模組可以是同一應用程式,在同一系統行程中被執行,或者該安裝模組和該啟動模組也可以是不同的應用程式,在不同的系統行程中執行,又或者該安裝模組和該啟動模組是同一應用程式,但是當該可執行對象被該用戶執行時,該定制化的手機操作系統會生成一全新的系統行程,並於該全新的系統行程中驅動該啟動模組,亦即,每一次動態載入運行揮發性應用程式時,都是透過一個獨立的系統行程,來完成揮發性應用程式的動態載入運行的工作;而對於該視窗應用程式來說,該安裝模組和該啟動模組可以在同一軟體元件進行實作或者以兩個不同的軟體元件來進行實作,並且在相同的系統行程(該視窗應用程式的系統行程)中被執行。
承上,於一較佳實施例中,該服務提供商在完成該揮發性應用程式5的設計和部署工作後,可以透過一自動化配置引擎9,將該揮發性應用程式5的該元資料7的原始內容、該元資料7的原始內容的存取連結(本例中可由該外部網路服務4提供)、該可執行對象8,或者是該可執行對象8的存取連結(本例中可由該外部網路服務4提供),封裝成一動態安裝請求後,透過該安裝模組10所提供的觸發方法,由該自動化配置引擎9向該安裝模組10執行一觸發T2,該觸發T2是用於提交一請求5012,該請求5012的目的在於將該動態安裝請求的內容傳入該安裝模組10,驅動該安裝模組10為該揮發性應用程式5完成一自動化配置(auto-provision)的工作,以擴充該定制化手機操作系統和該視窗應用程式的功能。該安裝模組10收到該動態安裝請求後,即可執行一觸發T3來驅動一引入流程11,依據該動態安裝請求的內容,取得該揮發性應用程式5的可執行對象,並將該揮發性應用程式5的可執行對象安裝或引入至該定制化的手機操作系統或該視窗應用程式裡。其中,依據一揮發性應用程式的元資料及/或其存取連結,產生一可執行對象的方法,可以參考本案圖9的各項實施例並據以實施,但並不以此為限,熟知本技藝人士參考本案發明後,可依據實際應用需求而進行任何均等的變更設計。其中,該揮發性應用程式5的該可執行對象8,如果相容於該定製化的手機操作系統及該視窗應用程式的操作環境,則該安裝模組10從該動態安裝請求的內容裡,讀取該可執行對象8或者透過該可執行對象8的存取連結來取得該可執行對象8後,就可以直接完成安裝和引入的工作;如果該可執行對象8不相容於該定製化的手機操作系統及該視窗應用程式的操作環境,則該安裝模組10可以在取得該可執行對象8的內容後,依據綁定於其中的該揮發性應用程式5的元資料7或其存取連結,重新產生相容的可執行對象,然後再完成安裝和引入的工作。
承上,於一較佳實施例中,一揮發性應用程式的元資料內容和該揮發性應用程式的相關可執行程式區塊是由同一網路地址所指向。也就是說,用於查詢及/或取得該揮發性應用程式的元資料內容的「存取連結」,即是用於動態載入運行該揮發性應用程式的「網路地址」,舉例來說,一個作為揮發性應用程式的Web前端應用程式在完成部署後,該Web前端應用程式的服務提供商可以在一Web服務器(Web Server)上,為該Web前端應用程式設置一網路地址,該網路地址是做為動態載入運行該Web前端應用程式時,所使用的網路地址。工程開發人員可以將該揮發性應用程式的元資料的至少一內容,提供於該網路地址的HTTP Response Headers中,任一軟體系統可以通過對該網路地址發出HTTP GET請求的方式,取得該Web前端應用程式的相關可執行程式區塊,也可以通過對該網路地址發出HTTP HEAD的請求,從該請求的回應中取得所有與該網路地址相關的HTTP Response Headers,其中即包括該Web前端應用程式的元資料的至少一內容,透過這樣的方式,該Web前端應用程式(揮發性應用程式)的元資料的存取連結和該Web前端應用程式的動態載入位置,可以是同一網路地址;其中,HTTP GET請求的回應裡,於其 HTTP Response Headers 裡,也可以包含有該Web前端應用程式的元資料內容。惟,上述透過同一或均等的網路地址來做為一揮發性應用程式的元資料的存取連結及其動態載入運行的網路地址,僅是本案所使用的非限制性實施例,並不以上述為限,普遍熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
承上,請參閱圖13,其係一動態安裝揮發性應用程式的網路配置示意圖,並同時參考圖11和圖12,其中,圖13中的第一外部機器1和圖11中的第一外部機器1是同一或均等的第一外部機器;圖13中的第二外部機器2和圖11中的第二外部機器2是同一或均等的第二外部機器;圖13中的第三外部機器3和圖11中的第三外部機器3是同一或均等的第三外部機器;圖13中的外部網路服務4和圖11中的外部網路服務4是同一或均等的外部網路服務;圖13中的揮發性應用程式5和圖11中的揮發性應用程式5是同一或均等的揮發性應用程式;圖13中的可投影的工作空間6和圖11中的可投影的工作空間6是同一或均等的可投影的工作空間;圖13中的安裝模組10和圖12中的安裝模組10是同一或均等的安裝模組;圖13中的引入流程11和圖12中的引入流程11是同一或均等的引入流程;圖13中的觸發T21,T22,T23,T24和圖12中的觸發T2是同一或均等的觸發;圖13中的請求50121,50122,50123,50124和圖12中的請求5012是同一或均等的請求;圖13中的自動化配置引擎91,92,93,94和圖12中的自動化配置引擎9是同一或均等的自動化配置引擎;另外,圖13中的該軟體系統13是該服務提供商提供給其全球員工使用的該定製化的手機操作系統或該視窗應用程式;其中,該被動態載入運行的揮發性應用程式92所代表的是該揮發性應用程式5被動態載入運行於該軟體系統13後,由該揮發性應用程式5所產生的操作環境。
承上,於一較佳實施例中,圖12中的該自動化配置引擎9,可以透過一網路服務、一偵測程式、一應用程式,或者是一被投影的工作空間來完成實作;其中,該網路服務是一個和該軟體系統13運行於不同機器上的外部網路服務4,91,該偵測程式93是被執行於該軟體系統13中的一軟體模組或一可執行的程式區塊,該應用程式是一被動態載入運行於該軟體系統13的揮發性應用程式92,該被投影的工作空間94是一操作環境,該操作環境是該可投影的工作空間6被動態載入運行於該軟體系統13後,於該軟體系統13的操作介面裡所產生的操作環境。
承上,於一較佳實施例中,該服務提供商將該揮發性應用程式5的元資料7或可執行對象8註冊至該外部網路服務4,91後,基本上,該外部網路服務4,91就已經全部掌握了可用於產生一動態安裝請求的必要資訊。因此,該外部網路服務4,91可以被實作成一自動化配置引擎,當服務提供商在該外部網路服務4,91裡為該揮發性應用程式5完成註冊時,該外部網路服務4,91可以直接產生一動態安裝請求,將該元資料7的原始內容、該元資料7的存取連結、該可執行對象8,及/或該可執行對象8的存取連結,封裝於該動態安裝請求,並且透過該安裝模組10所提供的觸發方法,對該安裝模組10執行一觸發T21,通過該觸發T21將該動態安裝請求傳給該安裝模組10,驅動該安裝模組10為該揮發性應用程式5安裝一相對應的可執行對象14至該軟體系統13中;其中,該觸發T21的實作,可以由該外部網路服務4,91建立一條連接至該安裝模組10的網路連線(TCP/IP socket connection),通過該網路連線將該動態安裝請求傳給該安裝模組10;其中,於一較佳實施例中,該安裝模組10在每一員工的計算機設備裡被啟動時,可以將該計算機設備的IP地址以及該安裝模組10所使用的通訊埠編號(Port Number)更新至一個可被該外部網路服務4,91存取的資料庫中,如此一來,該外部網路服務4,91即可透過對該資料庫的查詢,取得全球員工所使用的計算機設備的IP地址以及該安裝模組10所使用的通訊埠編號,據此建立網路連線(TCP/IP socket connection)並連接至每一員工的計算機設備中的該安裝模組10;接著,就可以對每一計算機設備執行動態安裝請求的觸發工作,完成自動化配置的任務;其中,該安裝模組10是一網路服務器(Socket Server),藉由對外發布一IP地址和通訊埠編號來接受網路連線的連接請求,並可以通過網路連線接收動態安裝請求。
承上,於一較佳實施例中,於該服務提供商將該揮發性應用程式5的元資料7或可執行對象8註冊至該外部網路服務4,91後,可以將包括該元資料7的原始內容、該可執行對象8、該元資料7的存取連結,及/或該可執行對象8的存取連結,全部設置於一個該揮發性應用程式5在執行時期所能夠連接的儲存空間中,如此一來,當該揮發性應用程式5在被動態載入運行後,就可以從該儲存空間裡,取得可用於產生一動態安裝請求的必要資訊,透過這個方式,被動態載入運行後的揮發性應用程式92,其本身就可以被實作成一自動化配置引擎。當該揮發性應用程式5以一個Web前端應用程式的形式被動態載入運行於一瀏覽器,或者是以一個Android即時應用的形式被動態載入運行於一Android手機操作系統時,該被動態載入運行後的揮發性應用程式92在執行時期,即可產生一動態安裝請求,並且透過該安裝模組10所提供的觸發方法,對該安裝模組10執行一觸發T22,通過該觸發T22將該動態安裝請求傳給該安裝模組10,驅動該安裝模組10為該揮發性應用程式5安裝一相對應的可執行對象14至該軟體系統13中;其中,該觸發T22的實作,可以透過內部系統的資料傳輸對接來完成,由於該被動態載入運行後的揮發性應用程式92與該安裝模組10是在同一計算機設備之中運行,因此,該揮發性應用程式92可以透過內部系統的函式呼叫或者是系統行程(OS process)之間的通訊來執行該觸發T22,並藉由該觸發T22,將該動態安裝請求傳給該安裝模組10,驅動該安裝模組10為該揮發性應用程式5安裝一相對應的可執行對象14至該軟體系統13中;其中,於一較佳實施例中,該觸發T22的實作,可以將該安裝模組10實作成一Web服務器(Web Server),並且對外發佈一個用於接收動態安裝請求的HTTP API,如此一來,該揮發性應用程式92即使是運行於一瀏覽器的沙盒環境裡,仍然可以建立一網路連線來連接至本地(IP 127.0.0.1)的該Web服務器,然後,對該安裝模組10發出該動態安裝請求,透過這個方式,即使部署於第二外部機器2裡的該揮發性應用程式5,從未與該軟體系統13做過任何技術上的整合,甚至從未有任何用於啟動該揮發性應用程式5的可執行對象被安裝於該軟體系統13,當該服務提供商在第二外部機器2裡完成該揮發性應用程式5的部署後,只要用戶於其所操作的用戶機器12裡,將該揮發性應用程式5執行起來,該揮發性應用程式5於執行時期中,就可以由其本身來將自己自動化配置於該軟體系統13。
承上,於一較佳實施例中,該服務提供商可以將一偵測程式93提供至該軟體系統13。該偵測程式93可以透過輪詢的方式,週期性地向該外部網路服務4,91進行查詢,查詢是否有任何一個新的揮發性應用程式被註冊,並且需要自動化配置於該軟體系統13。舉例來說,當該揮發性應用程式5於該外部網路服務4,91完成了註冊,並且被該偵測程式93透過輪詢而查找到的時候,該偵測程式93即可向該外部網路服務4,91發出請求,取得該揮發性應用程式5的元資料7、該元資料7的存取連結、該可執行對象8,及/或是該可執行對象8的存取連結,封裝成一動態安裝請求後,透過該安裝模組10所提供的觸發方法,經由內部系統的函式呼叫或者是系統行程(OS process)之間的通訊,對該安裝模組10執行一觸發T23,通過該觸發T23將該動態安裝請求傳給該安裝模組10,驅動該安裝模組10為該揮發性應用程式5安裝一相對應的可執行對象14至該軟體系統13中,於一較佳實施例中,該偵測程式93可以在偵測到一揮發性應用程式時,立即為該揮發性應用程式發出動態安裝請求,也可以在偵測到至少一揮發性應用程式後,將該至少一揮發性應用程式的至少一屬性(該至少一屬性可由其元資料的內容中取得)顯示於操作介面上供用戶選擇或由用戶決定是否執行動態安裝,接著,再依據用戶的操作指示,為用戶所需的至少一揮發性應用程式發出相對應的動態安裝請求;其中,如果該軟體系統13是一手機操作系統,則該偵測程式93和該安裝模組10可以是各自獨立運行的軟體模組,執行在不同的系統行程(OS process)裡,該偵測程式93可以透過系統行程間的觸發來傳遞該動態安裝請求予該安裝模組10;如果該軟體系統13是一視窗應用程式時,則該偵測程式93和該安裝模組10就會是在相同的系統行程裡被執行,如此一來,該偵測程式93即可透過函式呼叫的方式來執行該觸發T23。其中,於一較佳實施例中,該偵測程式93除了透過輪詢方式向該外部網路服務4,91進行查找外,也可以透過網路群播(Multicast)的技術方法,搜尋網路中的不同連網設備,經由與該些不同連網設備的交互,查詢出可用於管理、控制、監視及/或操作該些連網裝置的服務的揮發性應用程式;惟,為一個軟體模組(例如:偵測程式93)提供用於搜尋或偵測網路裡各種連網設備及/或軟體服務並取得其相關元資料的技術已十分普及,輪詢及網路群播僅是本案所使用的非限制性實施例,並不以上述為限,普遍熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
承上,於一較佳實施例中,該服務提供商可以將該揮發性應用程式5的該可執行對象8安裝至第三外部機器3裡的一可投影的工作空間6,當該可投影的工作空間6被動態載入運行於該軟體系統13時,該被投影的工作空間94(該可投影的工作空間6被動態載入運行後,依據該可投影的工作空間6的實體內容所生成的操作環境)本身也可以是一自動化配置引擎,該被投影的工作空間94裡可以提供一匯出程式,由該匯出程式來將安裝於該工作空間裡的該可執行對象8的完整內容或者是該可執行對象8所綁定的該元資料7,封裝成一動態安裝請求,然後,透過該安裝模組10所提供的觸發方法,經由內部系統的函式呼叫或者是系統行程(OS process)之間的通訊,對該安裝模組10執行一觸發T24,通過該觸發T24將該動態安裝請求傳給該安裝模組10,驅動該安裝模組10為該揮發性應用程式5安裝一相對應的可執行對象14至該軟體系統13中。
承上,於一較佳實施例中,該安裝模組10在該軟體系統13裡運行時,其本身或者是該軟體系統13中的另一軟體模組也可以提供一個供用戶操作的操作介面,於該操作介面之中,由該用戶主動輸入該揮發性應用程式5的元資料7、該元資料7的存取連結、該可執行對象8,及/或該可執行對象8的存取連結,然後由該操作介面將用戶所輸入的相關資訊,封裝成一動態安裝請求後,傳送給該安裝模組10中,驅動該安裝模組10為該揮發性應用程式5安裝一相對應的可執行對象14至該軟體系統13中。
承上,於一較佳實施例中,當該可執行對象8相容於該軟體系統13所提供的操作環境時,於引入流程11中,即可由該安裝模組10直接將該可執行對象8安裝於該軟體系統13,亦即,在這個情況下,該可執行對象8和該可執行對象14是同一實體,舉例來說,該可執行對象8和該可執行對象14可以是相同的App組態檔;但是,當該可執行對象8不相容於該軟體系統時,又或者是該自動化配置引擎91,92,93,94在封裝一動態安裝請求時,無法有效取得該可執行對象8的完整內容及其存取連結時,則相容於該軟體系統13的該可執行對象14可以是由該自動化配置引擎91,92,93,94透過一元資料轉換程式來產生,然後,將該元資料轉換程式所產生的該可執行對象14封裝至該動態安裝請求之中,接著,再傳送給該安裝模組10;其中,參考本發明內容裡的元資料轉換程式之各項實施方式,該元資料轉換程式根據該元資料7及/或該元資料7的存取連結的內容,即可為該自動化配置引擎91,92,93,94產生出相容於該軟體系統13的該可執行對象14。於另一較佳實施例中,該自動化配置引擎91,92,93,94也可以將該揮發性應用程式5的元資料7及/或其存取連結封裝進該動態安裝請求後,即傳送至該安裝模組後10,然後,由該安裝模組10利用一元資料轉換程式來產生該可執行對象14,並予以安裝至該軟體系統13;其中,參考本發明內容裡的元資料轉換程式之各項實施方式,該元資料轉換程式是依據該軟體系統13的技術標準和該元資料7的內容,來產生相容於該軟體系統13的該可執行對象14,該元資料轉換程式根據該元資料7及/或該元資料7的存取連結的內容,即可為該安裝模組10產生出相容於該軟體系統13的該可執行對象14。
特別說明的是,關於該觸發T21,T22,T23,T24的實作方法,並不以上述為限,各種不同的資料傳輸對接、資料交互的技術已十分普及,普遍熟知本技藝人士可依據實際應用需求而進行任何均等的變更設計。
通過上述所及的各項方法,該服務提供商只需要將一個通用的安裝模組10,引入至全球員工的用戶機器12上的軟體系統13後,就可以將任何一種客戶端軟體,以揮發性應用程式的形式,自動化配置於每一員工所操作的計算機設備(即用戶機器12)中;其中,該服務提供商可以將其所使用的自動化配置引擎開放給供應鏈的企業夥伴使用,舉例來說,該服務提供商可以將該外部網路服務4,91開放給企業夥伴使用,如此一來,不同企業部署在不同機房和不同網域的任一客戶端軟體,只要該客戶端軟體本身是一揮發性應用程式,當該客戶端軟體被部署完成後,無需和該用戶機器12上的該軟體系統13做任何系統整合,就可以透過該外部網路服務4,91,將一個可用於驅動該客戶端軟體的可執行對象,自動化配置於該軟體系統13。如果該軟體系統13是該用戶機器12上的操作系統,則該軟體系統13即成為一個可安裝和啟動來自不同來源的揮發性應用程式的操作系統;如果該軟體系統13是該用戶機器12上的一原生應用程式,則該軟體系統13即成為一個可安裝和啟動來自不同來源的揮發性應用程式的超級應用。
承上,於一較佳實施例中,該軟體系統13是該外部網路服務4,91所提供的一揮發性應用程式,其可以是一Web前端應用程式、一漸進式網頁應用程式,或者是一即時應用。如此一來,則該軟體系統13將可以是透過動態載入運行的方式,被提供於該用戶機器12上。該軟體系統13,作為該外部網路服務4,91本身所提供的揮發性應用程式,該可執行對象14可以是以App組態物件的形式,儲存於該外部網路服務4,91所存取的一資料庫中,該軟體系統13被動態載入運行於該用戶機器12後,可以查詢該資料庫中的所有App組態物件(包括該可執行對象14),並為每一App組態物件(可執行對象)於一操作介面上產生相應的可執行實體來供用戶操作,用戶可以通過點擊該操作介面上的各個可執行實體,啟動各個可執行實體所對應的揮發性應用程式,透過這樣的設計模式,即可實現出一個以揮發性應用程式的形式而存在的超級應用。
承上,於一較佳實施例中,透過本案的發明方法,該軟體系統13並不需要與該揮發性應用程式5(VoIP應用程式)進行系統整合,但是可以在該揮發性應用程式5被動態載入運行後,對執行該揮發性應用程式5的系統行程,提供生命週期的管理,舉例來說,當用戶將該系統行程由前景推至背景時,該軟體系統13可以發出一事件,通知該揮發性應用程式5暫停所有運算的服務,當用戶將該系統行程關閉時,該軟體系統13可以發出另一事件,通知該揮發性應用程式5釋放所有的系統資源,惟,該揮發性應用程式5針對該事件和該另一事件的處理方式是該揮發性應用程式5自行決定。
承上,於一較佳實施例中,當用戶於該軟體系統13的操作介面裡,點擊該可執行對象14所對應的可執行實體時,將會透過一觸發,發出一執行請求至一啟動模組,由該啟動模組將該揮發性應用程式5動態載入運行。於動態載入運行該揮發性應用程式5的過程中,該啟動模組可以將一狀態設定以參數形式傳入該揮發性應用程式5,其中,該狀態設定可以包括該用戶機器12的系統環境組態(例如:計算機設備的相關硬體資訊)、執行該揮發性應用程式時所需要的應用程式組態(例如:用戶的帳號資訊),或者是應用程式狀態(例如:該揮發性應用程式5被執行時的預設狀態等),令該揮發性應用程式5得以依據該狀態設定於執行時期調整本身內部的應用程式狀態(application state);其中,於一較佳實施例中,用於執行該揮發性應用程式所需的帳號資訊,也可以是由該用戶機器12的系統環境組態中取得,在動態載入時,該啟動模組可以向該用戶機器12的一操作系統環境發出請求,取得被啟用、登記或綁定於該操作系統環境中的一帳號資訊,並以該帳號資訊做為執行該揮發性應用程式時所需要應用程式組態,據以實現單一登入(Single sign-on)的功能。
請參閱圖14,其為本發明於軟體系統中動態導入一作業流程的方法的一較佳方法流程圖。動態導入該作業流程的方法包括:
步驟PS1,於一軟體系統中提供一啟動模組,於該啟動模組接收一執行請求時,依據該執行請求的內容來執行一應用程式;其中,該應用程式是安裝於該軟體系統的原生應用程式或者是需要被動態載入運行的揮發性應用程式。
步驟PS2,於該軟體系統中提供一導入模組,於該導入模組收到該應用程式於執行時期(run time)所發出的一可執行狀態(Executable State)時,啟動一動態導入流程,在該動態導入流程的運作過程中,將供一用戶操作的一可操作對象儲存至一管理模組,並且為該可執行狀態和該可操作對象的一可執行事件建立一綁定關係。
步驟PS3,於該可執行事件被該用戶觸發時,用於執行該可執行狀態的另一執行請求將被發出,並執行步驟PS1以動態載入運行一相對應的揮發性應用程式以執行該可執行狀態。
請參閱圖15,其係一語音通訊的作業流程圖。其中,該語音通訊的作業流程圖,代表的是一語音通話的受話方,在接收到語音來電後,接通該來電,乃至於該通話結束後,受話方通過該語音通話的通話記錄,對發話方進行回撥的作業流程。可以一具體的實施案例對該作業流程做進一步的說明,首先,該受話方所操作的一手機,收到來自一發話方的一語音通話的來電通知,該通話方是透過一應用程式發起該語音通話,該語音通話的來電通知,是通過電信網絡或者是網際網路的通知渠道送達該受話方的手機,在接收到該來電通知後,於該手機的操作介面中,將會驅動該應用程式來為該語音通話產生一來電顯示介面(Incoming Call Screen)。於用戶對該語音通話執行「接聽」的動作後,將會於手機的操作介面上,顯示該語音通話的通話介面(In-Call Screen),該作業流程隨即進入「等待接通」的狀態,等待該語音通話的連接,在這個狀態下,如果電信網絡或網際網路的訊號不良,該語音通話的連接將會失敗,並使得該作業流程進入「通話結束」的狀態。每當通話結束時,該應用程式會在該手機的一管理工具(通話記錄的管理工具)中,產生一通話記錄,該作業流程隨即進入「等待回撥」的狀態。該受話方可以在該手機上,執行該管理工具,檢視該通話記錄,並且於該通話記錄的操作介面上(Call Log Info Screen),向該發話方進行回撥的動作,於該手機的操作介面上,一撥號介面(Dialer Screen)將會被執行,令該作業流程進入「回撥中」的狀態。
承上,於一較佳實施例中,該通話記錄的操作介面(Call Log Info Screen)是由該管理工具所提供。
承上,於一較佳實施例中,該來電顯示介面(Incoming Call Screen)、該語音通話的通話介面(In-Call Screen),以及該撥號介面(Dialer Screen)是由不同的應用程式所提供。舉例來說,當該用戶於該來電顯示介面(Incoming Call Screen)上,按下「接聽」的按鈕時,該來電顯示介面(Incoming Call Screen)是透過一事件觸發,驅動第二應用程式來產生該語音通話的通話介面(In-Call Screen),並由該第二應用程式執行接通該語音通話的工作,而當該用戶於該通話記錄的操作介面(Call Log Info Screen)上,按下「回撥」的按鈕時,該通話記錄的操作介面(Call Log Info Screen)是透過另一事件觸發,驅動第三應用程式來產生該撥號介面(Dialer Screen),並由該第三應用程式執行回撥的工作,上述情境中,該作業流程中的各個狀態是由不同的應用程式所執行。
承上,於一較佳實施例中,該來電顯示介面(Incoming Call Screen)、該語音通話的通話介面(In-Call Screen),以及該撥號介面(Dialer Screen)是由相同的應用程式所提供。舉例來說,該作業流程中的每一狀態及其相對應的運算工作,可以實作在同一應用程式的專案中,亦即,於該手機裡是由同一應用程式來提供該來電顯示介面(Incoming Call Screen)、該語音通話的通話介面(In-Call Screen),以及該撥號介面(Dialer Screen)。
請參閱圖16,其係為表達一作業流程的動態導入流程的運作路徑之概念示意圖。其中,圖16的軟體系統131和圖13中的軟體系統13是同一或均等的軟體系統;圖16的觸發T04和圖8中的觸發T0是同一或均等的觸發;圖16的請求50066和圖8中的請求50065是同一或均等的請求。本案發明裡所指的「動態導入流程」是一作業流程,該作業流程是從「一導入模組藉由觸發一程式區塊的執行以動態導入一可執行狀態」做為開始,至「綁定該可執行狀態至一可操作對象,並儲存該可操作對象至一管理工具所連接的存儲空間」做為結束。透過本案的發明方法,一軟體系統的系統供應商得以讓一應用程式的作業流程動態導入於其所提供的一軟體系統中,並且讓該軟體系統的操作環境成為一應用狀態引擎的驅動環境;其中,該軟體系統是一操作系統、一超級應用,及/或一軟體平台。
參考圖16之動態導入流程並同時以圖15之語音通訊為例,首先,系統供應商可以將一軟體系統131提供於該受話方21的手機裡,並於該軟體系統131中,提供一應用程式的啟動模組15、一可執行狀態的導入模組17,以及一可操作對象的管理模組19;其中,該應用程式是可用於接聽一語音通話的應用程式;其中,該可執行狀態是一揮發性應用程式的可執行狀態,且該可執行狀態的內容中,包含著用於對該語音通話的發話方進行回撥的一狀態設定(例如:該發話方的用戶ID等),當該可執行狀態被觸發和啟動時,該揮發性應用程式將會被動態載入運行,並依據該狀態設定於執行時期調整本身內部的應用程式狀態(application state)後,對該發話方進行撥號;其中,該可操作對象是一網路語音通話的通話記錄。
承上,於一較佳實施例中,該軟體系統131於執行時期裡,收到一語音通話的來電通知時,該來電通知將會被傳送至該啟動模組15,並由該啟動模組將一應用程式16載入運行於該手機,接著,由該應用程式16依據該來電通知的內容,產生一來電顯示介面供該受話方21操作。該受話方21於該來電顯示介面裡,按下「接聽」按鈕後,該應用程式16可以由其本身來執行該語音通話的接通工作,並於手機螢幕上產生該語音通話的通話介面,讓該受話方21得以進一步掌握該語音通話的接通狀態及對該語音通話進行操作。於該語音通話結束時,該應用程式16將產生一可執行狀態,並將一揮發性應用程式的元資料和一狀態設定寫入該可執行狀態;其中,該揮發性應用程式是一可用於撥打語音通話的應用程式,且該揮發性應用程式的元資料是以原始內容、部份內容,或存取連結的形式,寫入於該可執行狀態;其中,該狀態設定包括用於控制該揮發性應用程式進行撥號所需的相關資訊(例如:該發話方的用戶ID),令該揮發性應用程式在動態載入運行後,得以依據該狀態設定的內容,調整其內部的應用程序狀態,並對該發話方的用戶ID進行撥號。於產生該可執行狀態後,該應用程式16將透過一觸發T4來提交一請求5013,該請求5013之目的在於將該語音通話的相關資訊和可用於對該發話方進行撥號(回撥)的一可執行狀態,傳入一導入模組17,該可執行狀態是用於連接一作業流程的至少一可執行狀態中的其中之一,本例中語音通訊回撥流程是作業流程的非限制實施例,本文所述之作業流程並不以此為限。於該導入模組17收到該語音通話的相關資訊和該可執行狀態後,即可啟動一動態導入流程18,於該動態導入流程18的作業流程中,該導入模組17可以觸發T5一程式區塊來執行該可執行狀態的動態導入工作,該程式區塊從該觸發T5取得該語音通話的相關資訊和該可執行狀態後,即可產生相對應於該語音通話的一通話記錄,並且將該通話記錄裡,用於「回撥」的一可執行事件和該可執行狀態進行綁定,接著,即可將該通話記錄和該可執行狀態作為一可操作對象,儲存至一管理模組19所連結的一檔案系統或一資料庫中。於一較佳實施例中,該可執行狀態是以一Event組態檔或一Event組態物件的形式,被儲存於該管理模組19所連結的該檔案系統或該資料庫裡;其中,該受話方21於該軟體系統裡執行該管理模組19時,可以經由其操作介面找到該通話記錄,該管理模組19可以為該通話記錄生成一可操作實體20,供該受話方21操作(如圖5所示的通話紀錄I2是一通話記錄的可執行實體的實例)。隨即,該受話方21即可透過該通話記錄的可執行實體20,按下「回撥」按鈕,對該通話記錄的該發話方進行回撥;其中,關於該觸發T4,T5的實作方法,各種不同的資料傳輸對接、資料交互的技術已十分普及,普遍熟知本技藝人士可參考本案的各項實施例,並依據實際應用需求而進行任何均等的變更設計。
承上,於一較佳實施例中,用於動態載入運行該揮發性應用程式(用於撥打語音通話的應用程式)的該網路地址,可以在該網路地址的Response Headers中,寫入該揮發性應用程式的元資料內容,亦即,該網路地址和用於取得該揮發性應用程式的元資料的至少一內容的該存取連結,可以是同一網路地址。
承上,於一較佳實施例中,當該可執行狀態的數據模型相容於該管理模組19的可操作對象時,於動態導入流程18中,即可由該導入模組17所觸發T5的程式區塊,直接將該可執行狀態綁定於該可操作對象,並儲存於該管理模組19所連結的存儲空間中,亦即,在這個情況下,該可執行狀態本身就是該可操作對象所綁定的Event組態檔或Event組態物件;但是,當該可執行狀態的數據模型不相容於該管理模組19的可操作對象時,則該導入模組17將透過一元資料轉換程式來產生一相容的可執行狀態,於動態導入流程18中,即可由該導入模組17所觸發T5的程式區塊將該相容的可執行狀態(依據相容於該可操作對象的數據模型而產生的可執行狀態)綁定至該可操作對象之中。於另一較佳實施例中,該導入模組17也可以在收到該可執行狀態後,不論其數據模型是否和該管理模組19的可操作對象相容,都直接通過觸發T5來將該可執行狀態傳給該管理模組19的程式區塊,由該管理模組19利用一元資料轉換程式來產生一相容的可執行狀態,將該相容的可執行狀態綁定於一可操作對象後,即可將其儲存至其本身連結的存儲空間。參考本發明內容裡的元資料轉換程式之各項實施方式,依據可操作對象的數據模型,元資料轉換程式之作用在於能夠將不相容的可執行狀態,重新整理以轉換成相容的可執行狀態。
承上,於一較佳實施例中,當該受話方21按下「回撥」按鈕時,將會觸發該可執行事件(回撥)的執行,於該管理模組19裡,負責處理該可執行事件的一程式區塊,可以將綁定於該可執行事件的該可執行狀態(Event組態),封裝至一執行請求,並透過一觸發T04,將該執行請求傳入至該啟動模組15,由該啟動模組15依據該執行請求裡的該可執行狀態之內容,確定(定位)出一個可用於動態載入運行一揮發性應用程式的網路地址,接著,即可經由該網路地址將該揮發性應用程式動態載入運行於該手機。
承上,於一較佳實施例中,於該管理工具為該通話記錄生成該可執行實體20時,於該可執行實體20的操作介面裡的「回撥」按鈕,是依據該可執行狀態的內容而被動態加入的。透過可執行狀態的內容來動態加入一個可執行事件至一可執行實體的實作方法,可以在圖7的基礎上,提供一實施例做說明,圖7的D21是一揮發性應用程式的可執行狀態,於該可執行狀態的內容中,可以為用於驅動該可執行狀態的視覺化元件指定一類型及/或一樣式,並且將該視覺化元件所提供的一可操作事件,做為用於驅動該可執行狀態的可執行事件。舉例來說,於圖7的D21之內容中,可以加入一 “event” 內容,指定該可執行狀態是由一按鈕(視覺化元件)所驅動,且該驅動是經由用戶對該按鈕進行一點擊(onClick)而觸發,任一管理工具在讀取該可執行狀態的內容後,即可依據該可執行狀態裡的該 “event” 內容,於操作介面上動態加入一按鈕,並於該按鈕上顯示「回撥」之文字提示(依據 “label” 所指定的文字內容進行顯示),以供用戶進行操作,當用戶點擊該按鈕時,該管理工具即可對該可執行狀態進行驅動,亦即,為該可執行狀態產生一執行請求,傳入一啟動模組後,將該可執行狀態所對應的一揮發性應用程式動態載入運行,由該揮發性應用程式執行回撥的服務。
{ “app_location”: “https://a.b.c/app”, “state”: “account=U8796&params=…”, “event”: “<button><label>回撥</label><submit>onClick</submit></button>” }
承上,於一較佳實施例中,於該管理工具為該通話記錄生成該可執行實體20時,用於驅動該可執行狀態的該可執行事件,可以是該可執行實體20的一啟動事件(launch event),舉例來說,圖5的I2是一通話記錄(可操作對象)的可操作實體,用戶除了可以透過點擊該可操作實體的「回撥」按鈕,觸發一可執行事件來進行回撥外,該管理工具也可以將用於「回撥」的該可執行事件與該可操作實體的啟動事件進行連接,使該用戶於通話記錄的列表中,找到該筆通話記錄後,就可以直接對該通話記錄進行點擊,進而驅動該可執行狀態以進行回撥,其中,該啟動事件所指的是用戶對該可執行實體20的視覺化元件進行點擊或操作時,該可執行實體20的視覺化元件所預設觸發的事件。
承上,於一較佳實施例中,該可執行狀態是用於連接一作業流程的至少一可執行狀態中的其中之一,於該揮發性應用程式所回撥的另一語音通話結束後,該揮發性應用程式可以再透過一觸發T4,將對應於該另一語音通話所產生的通話記錄及可執行狀態,儲存至該管理模組19所連結的存儲空間之中。透過這個方式,得以將語音通訊所驅動和支持的作業流程以該至少一可執行狀態連結而成,並且動態導入至該軟體系統131中。
承上,於一較佳實施例中,該軟體系統131是以一手機操作系統的形式,提供於該手機裡。於該軟體系統131裡,該啟動模組15、該導入模組17,及/或該管理模組19可以分別以獨立的應用程式來完成實作,亦即,該啟動模組15、該導入模組17,及/或該管理模組19可以是各自不同的軟體模組,於該軟體系統131的執行時期裡,該啟動模組15、該導入模組17,及/或該管理模組19是在不同的系統行程裡被執行。
承上,於一較佳實施例中,該軟體系統131是以一應用程式、一超級應用,及/或一軟體平台的形式,提供於該手機的操作系統裡。於該軟體系統131裡,該啟動模組15、該導入模組17,以及該管理模組19是實作於同一軟體模組中,亦即,該啟動模組15、該導入模組17,以及該管理模組19可以透過軟體元件或者是可執行程式區塊的形式,直接被整合於該軟體模組之中,於該軟體系統131的執行時期裡,該啟動模組15、該導入模組17,以及該管理模組19是在同一系統行程裡被執行;其中,該軟體系統131是以原生應用程式的技術架構開發而成,由該系統供應商將其內建於該操作系統,或由該受話方21將其安裝至該操作系統;或該軟體系統131是以漸進式網頁應用程式(揮發性應用程式的一實施態樣)的技術架構開發而成,由該系統供應商將其自動化配置至該操作系統,或由該受話方21將其主動安裝至該操作系統。
承上,於一較佳實施例中,用於接收該來電通知的應用程式16是被預先安裝於該軟體系統的一原生應用程式,或者是以可執行對象的型態,被預先安裝或被動態安裝於該軟體系統的一揮發性應用程式,又或者是一未安裝的一揮發性應用程式。
承上,於一較佳實施例中,用於接收該來電通知的應用程式16和用於回撥的揮發性應用程式是同一應用程式。或者,用於接收該來電通知的應用程式16和用於回撥的揮發性應用程式是不同的應用程式,當該來電通知的語音通話結束後,用於接收該來電通知的應用程式可於該可執行狀態之中,指定其他的揮發性應用程式來提供回撥的通訊服務。
承上,於一較佳實施例中,於圖16中的用戶21是一軟體程式。舉例來說,於該來電的語音通話的結束是因為網路異常所導致,則該通話記錄在生成後,可以由該管理模組19啟動一網路監測程式,當該網路監測程式偵測到網路訊號回復正常時,由該網路監測程式自動化地執行該通話記錄裡的該可執行事件(回撥),進而自動化地驅動綁定於該可執行事件的該可執行狀態,對該語音通話的發話方進行回撥。
特別說明的是,上述動態導入作業流程的方法,並不限於語音通訊的作業流程,系統供應商可以在其所提供的操作系統、超級應用,及/或軟體平台中,針對各種適用於不同應用場景的可操作對象,提供相對應的導入模組和管理模組,藉以讓各式各樣的作業流程得以被動態載入,熟知本技藝人士參考本案發明後,可依據實際應用需求而進行任何均等的變更設計。
本案的發明內容,亦提供一軟體系統的實作,其透過動態整合應用程式的方法,使多個不同信息源的揮發性應用程式及其各自所支持的不同作業流程可被動態安裝和動態導入於其中,該軟體系統包括:一安裝模組,於該安裝模組收到由一自動化配置引擎(auto-provisioning engine)所發出的一動態安裝請求時,將一可執行對象安裝至該軟體系統;及/或一導入模組,於該導入模組收到由一應用程式所發出的一可執行狀態時,將與該可執行狀態綁定的一可操作對象儲存於一管理模組;其中,當該可執行對象或該可執行狀態被執行或觸發時,發出一相對應的執行請求,並通過一啟動模組動態載入運行一相對應的揮發性應用程式來完成該執行請求。
請參閱圖17,其係一用於動態整合揮發性應用程式的軟體系統的一較佳實施概念示意圖。其中,圖17的軟體系統132和圖13的軟體系統13是同一或均等的軟體系統;圖17的自動化配置引擎9和圖12的自動化配置引擎9是同一或均等的自動化配置引擎;圖17的安裝模組10和圖12的安裝模組10是同一或均等的安裝模組;圖17的引入流程11和圖12的引入流程11是同一或均等的引入流程;圖17的導入模組17和圖16的導入模組17是同一或均等的導入模組;圖17的動態導入流程18和圖16的動態導入流程18是同一或均等的動態導入流程;圖17的觸發T2和圖12的觸發T2是同一或均等的觸發;圖17的請求5012和圖12的請求5012是同一或均等的請求;圖17的觸發T4和圖16的觸發T4是同一或均等的觸發;圖17的請求5013和圖16的請求5013是同一或均等的請求;圖17的觸發T0和圖3的觸發T0是同一或均等的觸發;圖17的請求5006和圖3的請求5006是同一或均等的請求。
承上,於一較佳實施例中,該軟體系統132的一系統供應商,將至少一安裝模組10提供於該軟體系統132。該至少一安裝模組10可以從至少一自動化配置引擎9(auto-provisioning engine)接收至少一動態安裝請求,為來自不同信息源的揮發性應用程式完成自動化配置的工作,將該不同信息源的揮發性應用程式所對應的至少一可執行對象141,經由引入流程11動態安裝至該軟體系統132,並於一應用程式管理中心22進行管理,以擴充該軟體系統132的功能;其中,該不同信息源所指的是不同的服務器(Server)、不同機房,或者是不同網域,該不同信息源的揮發性應用程式可以是由不同企業部署在不同服務器、不同機房,及/或不同網域的任一客戶端軟體,只要該客戶端軟體本身是一揮發性應用程式,當該客戶端軟體被部署完成後,無需和該軟體系統132做任何系統整合,就可以透過該至少一自動化配置引擎9,將一個可用於驅動該客戶端軟體的可執行對象,自動化配置於該軟體系統132。
承上,於一較佳實施例中,該軟體系統132的該系統供應商,將至少一導入模組17以及至少一管理模組191提供於該軟體系統132。該至少一導入模組17可以從至少一被動態載入運行的揮發性應用程式25接收至少一可執行狀態,為由不同信息源的揮發性應用程式25所驅動的作業流程,完成動態導入的工作,將該至少一可執行狀態和至少一操作對象231進行綁定後,將用於連接不同作業流程的該至少一操作對象231,經由動態導入流程18儲存至該至少一管理模組191中進行管理。透過這個方式,得以將由不同信息源的揮發性應用程式所驅動和支持的不同作業流程以該至少一可執行狀態連結而成,並且動態導入至軟體系統中。
承上,於一較佳實施例中,該軟體系統132是一操作系統、一超級應用,或者是一軟體平台。該應用程式管理中心22是一APP Launcher。該至少一管理模組191可以包括一活動預約的管理程式或一通話記錄的管理程式。
承上,於一較佳實施例中,該至少一自動化配置引擎9是一網路服務、一偵測程式、一應用程式,或者是一被投影的工作空間;其中,該網路服務是和該軟體系統132運行於不同機器上的一外部網路服務(參考圖13的外部網路服務4,91);其中,該偵測程式是被執行於該軟體系統132中的一軟體模組(參考圖13的偵測程式93);其中,該應用程式是被動態載入運行於該軟體系統的一揮發性應用程式(參考圖13裡被動態載入運行的揮發性應用程式92);其中,該被投影的工作空間是被動態載入運行於該軟體系統的一可投影的工作空間(參考圖13裡被投影的工作空間94)。
承上,於一較佳實施例中,該軟體系統132於啟動後,執行於其中的該應用程式管理中22,將會讀取引入於該軟體系統132中的該至少一可執行對象141,並為每一可執行對象於一操作介面上生成相對應的可執行實體,令該用戶211可以在該操作介面上,對該至少一可執行實體24進行操作(請參考圖5之I1),其中,該操作介面是一APP Launcher的操作介面。
承上,於一較佳實施例中,該至少一管理模組191於該軟體系統132中被啟動時,將會讀取導入於該至少一管理模組191中的該至少一可操作對象231,並為每一可操作對象於另一操作介面上生成相對應的可操作實體,令該用戶211可以在該另一操作介面上,對該至少一可操作實體201進行操作,舉例來說,該通話記錄管理程式將會由其所連結的存儲空間中,讀取其所管理的至少一可操作對象(即通話記錄),並於該通話記錄管理程式的操作介面裡,為每一可操作對象(即通話記錄)提供對應的可操作實體(請參考圖5之I2)。
承上,於一較佳實施例中,該用戶211於該應用程式管理中心所提供的操作介面上,對一可執行實體進行啟動時,將會由該軟體系統132或該應用程式管理中心22發出一觸發T0,並經由該觸發T0,將一執行請求傳入一啟動模組151,通過該啟動模組151來動態載入運行該可執行實體所對應的揮發性應用程式。
承上,於一較佳實施例中,該用戶211於該至少一管理模組191所提供的操作介面上,對一可操作實體的可執行事件進行操作時,也將會由該至少一管理模組191發出一觸發T0,並經由該觸發T0,將一執行請求傳入一啟動模組151,通過該啟動模組151來動態載入運行該可執行事件所對應的揮發性應用程式。
承上,於一較佳實施例中,傳入該啟動模組151的該執行請求中的內容裡,可以包含該揮發性應用程式的元資料的原始內容、部份內容、重整後的內容,及/或是一可用於取得該揮發性應用程式的元資料的存取連結。其中,該存取連結和用於動態載入運行該執行請求所對應的揮發性應用程式的網路地址,可以是相同或不相同的網路地址。在同一網路地址的情況下,用於動態載入運行該揮發性應用程式的該網路地址,可以在該網路地址的Response Headers中,寫入該揮發性應用程式的元資料內容,透過這個方式,該網路地址和該存取連結,即為同一網路地址,在不同網路地址的情況下,該揮發性應用程式的服務提供商,可以將該元資料內容註冊於另一外部服務器,並由該外部服務器提供該元資料內容的存取連結。
承上,於一較佳實施例中,對一可操作實體的一可執行事件是由一軟體代理程式212所驅動,舉例來說,當一可操作對象(活動預約)被儲存至該活動預約管理程式時,該活動預約可以被設置於一指定的時間自動啟動,則該軟體代理程式212可以為該可操作對象進行一監控工作,當時間來到該指定的時間,該軟體代理程式212即自對該可執行事件進行觸發,並動態載入運行該可執行事件所對應的揮發性應用程式來為該活動預約提供所需的服務。
承上,於一較佳實施例中,於啟動模組151為一執行請求動態載入運行其所對應的揮發性應用程式的過程中,該啟動模組151可以將一狀態設定以參數形式傳入該揮發性應用程式,其中,該狀態設定可以包括執行該軟體系統132的計算機設備的系統環境組態(例如:該計算機設備的相關硬體資訊)、執行該揮發性應用程式時所需要的應用程式組態(例如:該用戶211的帳號資訊),或者是應用程式狀態(例如:該揮發性應用程式被執行時的預設狀態等),令該揮發性應用程式得以依據該狀態設定於執行時期調整本身內部的應用程式狀態(application state);其中,於一較佳實施例中,用於執行該揮發性應用程式所需的帳號資訊,也可以是從該軟體系統132的系統環境組態中取得,在動態載入時,該啟動模組151可以向該軟體系統132發出請求,取得該用戶211啟用、登記或綁定於該軟體系統132裡的一帳號資訊,並以該帳號資訊做為執行該揮發性應用程式時所需要的應用程式組態,據以實現單一登入(Single sign-on)的功能。
承上,於一較佳實施例中,該至少一安裝模組10可以是同一安裝模組,由同一安裝模組來動態安裝所有不同類型的揮發性應用程式類型(例如:Web前端應用程式、漸進式網頁應用程式,或即時應用)。或,該至少一安裝模組10可以是由用於動態安裝不同揮發性應用程式類型的安裝模組所組成的集合。
承上,於一較佳實施例中,該至少一安裝模組10可以是同一安裝模組,亦即,由該同一安裝模組來接收不同來源的動態安裝請求,並依據動態安裝請求中的內容,並於該軟體系統132裡,為各種不同類型的揮發性應用程式類型(例如:Web前端應用程式、漸進式網頁應用程式,或即時應用)的可執行對象,進行安裝和引入的工作。或者,該至少一安裝模組10可以是一集合,不同類型的揮發性應用程式,可以由不同的安裝模組提供安裝和引入的服務,該集合即為各種針對不同類型的揮發性應用程式所提供的安裝模組之集合。
承上,於一較佳實施例中,該至少一啟動模組151可以是該同一啟動模組,亦即,由該同一啟動模組來接收所有經由不同可執行對象和可操作對象所觸發的執行請求,並依據執行請求的內容,為不同類型的揮發性應用程式進行動態載入運行的工作。或者,該至少一啟動模組151可以是一集合,由用於動態載入運行不同類型的揮發性應用程式的啟動模組所組成之集合。
承上,於一較佳實施例中,該至少一啟動模組151是以至少一軟體模組的形式而被提供於該軟體系統132,或者該至少一啟動模組151是被整合於該至少一可執行對象141裡(啟動模組和可執行對象的具體整合方式,相同或均等於圖4、圖8、圖9,及其相關實施例,在此不再予以贅述)。
承上,於一較佳實施例中,該至少一導入模組17可以是該同一導入模組,亦即,由該同一導入模組來接收所有經由不同來源的可執行狀態,並為其導入不同的管理模組中。或者,該至少一導入模組17可以是一集合,由用於導入不同類型的可操作對象的導入模組所組成之集合。
本案的發明內容之另一實施概念,係關於一種動態整合應用程式的機器,該機器包括:一自動化配置引擎,用於偵測一網路裡的至少一連網設備,並將相對應於該至少一連網設備的至少一可執行對象配置至一軟體系統;及/或一導入模組,用於接收由一應用程式所發出的一可執行狀態,並將與該可執行狀態綁定的一可操作對象儲存於一管理模組;其中,該軟體系統將該至少一可執行對象顯示於一操作介面(user interface),以供該用戶進行操作,於該用戶在該操作介面上開啟相對應於一連網設備的一可執行對象時,動態載入運行綁定於該可執行對象的一揮發性應用程式,透過該揮發性應用程式管理、操作、監視,及/或控制該連網設備所提供的服務;其中,該導入模組是用於為至少一應用程式完成作業流程的動態導入。
請參閱圖18,其係一可動態整合不同連網設備的軟體控制器的機器的一較佳實施概念示意圖。其中,圖18的軟體控制器30(包括冷氣控制APP、電視機控制APP,和照明控制APP),都是以本文所述的「揮發性應用程式」的形式所開發和部署的應用程式,「揮發性應用程式」的各種不同的實作方式,請參考本文中的各項實施例;其中,圖18的偵測程式931和圖13中的偵測程式93是同一或均等的偵測程式;其中,圖18的觸發T2和圖12的觸發T2是同一或均等的觸發;圖18的請求5012和圖12的請求5012是同一或均等的請求;其中,圖18的安裝模組101和圖13中的安裝模組10是同一或均等的安裝模組;其中,圖18的軟體系統133和圖13的軟體系統13是同一或均等的軟體系統;其中,圖18的機器121和圖13的用戶機器12是同一或均等的機器。
承上,於一較佳實施例中,該機器121及/或該軟體系統133是用於打造一物聯網控制中心。
承上,於一較佳實施例中,該軟體系統133是該機器121的一操作系統,或者該軟體系統133是運行於該機器121的操作系統裡的一應用程式。
承上,於一較佳實施例中,該網路26是一家用網路、一辦公室網路、一企業網路、一雲端網路,及/或任一種可以用來連接連網設備的網路型態。
承上,於一較佳實施例中,該第一連網設備27是一具有連網能力的冷氣機,該第二連網設備28是一具有連網能力的電視機,該第三連網設備29是一具有連網能力的照明設備;其中,該冷氣機27、電視機28,和照明設備29,都是該網路26裡的物聯網設備。惟,圖18所示之連網設備,僅為本案的非限制性實施例,但並不以此為限,任一種具有連網能力的軟體裝置(software appliance)、通信設備及/或物聯網設備,都是本案所指的連網設備。
承上,於一較佳實施例中,該偵測程式931是一自動化配置引擎,該偵測程式931和該安裝模組101在該軟體系統133裡,可以是由同一軟體模組所提供,亦即,該偵測程式931和該安裝模組101是整合於同一軟體模組裡的可執行程式區塊。或者,該偵測程式931和該安裝模組101在該軟體系統133裡,也可以是由不同的軟體模組所提供。
承上,於一較佳實施例中,該偵測程式931在執行時期裡,可以透過不同的方法,對網路26裡的連網設備進行偵測。舉例來說:該偵測程式931可以週期性(例如:一分鐘一次)的對網路26裡的一群播地址(Multicast Address)發送一群播(Multicast)封包,該群播封包的內容是依據一標準協議所生成的一搜尋請求,該搜尋請求是用於讓該網路26裡的連網設備,都知道目前有一偵測程式正在對該網路26的連網設備進行搜索。於該網路26裡的任一連網設備(包括冷氣機27、電視機28,和照明設備29)在啟動之後,可以在該網路26裡,對發送至該群播地址的群播封包進行監聽,當一連網設備收到由該偵測程式931所發出的該搜尋請求時,該連網設備就可以將該連網設備本身的元資料和可用於管理、操作、監視,及/或控制該連網設備的一軟體控制器之元資料,封裝至另一群播封包,然後將該另一群播封包發送至該網路26裡的該群播地址。透過這個方法,該偵測程式931即同樣可以從該群播地址監聽到該另一群播封包,並從中讀取到該連網設備的元資料和該軟體控制器的元資料內容;其中,該軟體控制器是一揮發性應用程式,用於管理、操作、監視,及/或控制該連網設備的服務;其中,關於群播之相關技術,可以參考 “https://en.wikipedia.org/wiki/Multicast”和“https://en.wikipedia.org/wiki/Multicast_address”。特別說明的是,該偵測程式931透過群播技術搜尋附近網路的連網設備,僅為本案所揭露之非限制性實施例,包括藍芽、紅外線、乙太網絡、WiFi、和4G/5G等通訊網路,都已有成熟且普及的技術可被用於對公開網路及/或附近網路的連網設備進行偵測、搜尋及/或查找,在各種網路型態裡,透過不同的通訊協定及/或其組合來讓相同或不同網路之間的設備,能夠偵測、搜尋及/或查找到彼此的存在並相互進行通訊和資料傳輸對接的方法,並不以本案所採用和揭露的實施例為限,熟知本技藝人士參考本案發明後,可依據實際應用需求而進行任何均等的變更設計。
承上,於一較佳實施例中,於該偵測程式931收到一連網設備的元資料及其軟體控制器的元資料後,即可封裝至一動態安裝請求,並經由一觸發T2,將該動態安裝請求傳送至一安裝模組101,由該安裝模組依據該動態安裝請求的內容,將一可執行對象安裝至該軟體系統133;其中,該偵測程式931和該安裝模組101可以實作於同一軟體模組,並執行於同一系統行程,或者該偵測程式931和該安裝模組也可以是實作於不同的軟體模組中,於不同的系統行程裡執行;其中,如何透過一自動化配置引擎,為一揮發性應用程式產生一動態安裝請求,並藉以將綁定一揮發性應用程式的可執行對象安裝至一軟體系統的具體實作方法,相同或均等於圖11、圖12、圖13,及本案所揭示的各相關實施例,在此不再予以贅述。
於一較佳實施例中,綁定於該可執行對象的內容裡,可以包含該軟體控制器的元資料的原始內容、部份內容、重整後的內容,及/或是一可用於取得該軟體控制器的元資料的存取連結。其中,該存取連結和用於動態載入運行該軟體控制器的網路地址,可以是相同或不相同的網路地址。在同一網路地址的情況下,用於動態載入運行該軟體控制器的該網路地址,可以在該網路地址的Response Headers中,寫入該軟體控制器的元資料內容,透過這個方式,該網路地址和該存取連結,即為同一網路地址,在不同網路地址的情況下,該軟體控制器的服務提供商,可以將該元資料內容註冊於另一外部服務器,並由該外部服務器提供該元資料內容的存取連結。
承上,於一較佳實施例中,該軟體系統133可以產生一操作介面34(例如:APP Launcher),接著,為安裝於該軟體系統133中的每一可執行對象,產生一個相對應的可執行實體後,將該些可執行實體顯示於該操作介面上34以供一用戶35操作。當該用戶35於該操作介面34上,對一可執行實體進行點擊時,就可以將該可執行實體所對應的軟體控制器(揮發性應用程式),動態載入運行於該軟體系統的操作介面上,讓該用戶35得以透過該軟體控制器,對該軟體控制器所對應的連網設備進行管理、操作、監視,及/或控制;其中,如何通過驅動一可執行實體來動態載入運行一揮發性應用程式的具體實作方法,相同或均等於圖3、圖4、圖5,及本案所揭示的各相關實施例,在此不再予以贅述。
承上,於一較佳實施例中,一連網設備,該連網設備的一軟體控制器,以及該軟體控制器的一可執行對象,三者之間具有一綁定關係,且該綁定關係是通過將該連網設備和該軟體控制器的元資料(metadata)之至少一內容綁定至該可執行對象所完成。舉例來說,在該冷氣控制APP 31的一可執行對象被產生的時候,可以將該冷氣機27的元資料和該冷氣控制APP 31的元資料,寫入該可執行對象的App組態內容裡,藉以以完成該冷氣機27、該冷氣控制APP 31,以及該可執行對象的綁定關係;其中,如何依據元資料的內容來為該冷氣控制APP 31產生可執行對象的方法,可以參考圖9及其相關的各項實施例,但並不以此為限,熟知本技藝人士參考本案發明後,可依據實際應用需求而進行任何均等的變更設計,本案各項實施例所揭示用於產生可執行對象並且將揮發性應用程式綁定於其中的方法,可以直接導入於該偵測程式931或者是該安裝模組101中執行,在導入完成後,各種連網設備的可執行對象就可以由該偵測程式931或者是該安裝模組101於執行時期裡動態產生;其中,該冷氣機27(連網設備)的元資料之至少一內容包括一產品名稱、產品型號、一品牌名稱、該冷氣機27本身所在的網域名稱(Domain Name),及/或該冷氣機27本身的IP地址(IP Address);其中,該冷氣控制APP 31的元資料之至少一內容包括該冷氣控制APP 31的APP名稱、APP功能描述、該冷氣控制APP 31的啟動程式的位置、該冷氣控制APP 31所在的網路域名,及/或其服務提供商的相關資訊,其他各種不同種類的連網設備,都可以透過上述同樣的方法,在執行時期裡動態產生出相對應的可執行對象。
承上,於一較佳實施例中,該可執行對象也可以是預先由該連網設備的提供商所提供,並預先發佈於網路上,供該偵測程式931或者是該安裝模組101在收到一動態安裝請求後,依據該動態安裝請求的內容來下載使用,舉例來說,於該動態安裝請求中填入該可執行對象的一存取連結,經由該存取連結來下載該可執行對象。
承上,於一較佳實施例中,該軟體控制器(包括該冷氣控制APP 31、該電視機控制APP 32,及該照明控制APP 33)於該軟體系統133裡,是經由一啟動模組的驅動而被動態載入運行,於動態載入運行該軟體控制器時,該啟動模組可以透過參數形式,將該用戶35用於登入該軟體系統133的一身份資料,傳入至該軟體控制器,該軟體控制器即可於執行時期中,透過該身份資料,確定(定位)出該用戶35對相對應於該軟體控制器的連網設備的存取權限;其中,該身份資料是對該軟體控制器的一狀態設定,該軟體控制器可以在執行時期,依據該狀態設定於調整內部的應用程式狀態(application state),使得該用戶35的存取權限得以在該軟體控制器的執行時期裡完成設置;其中,該啟動模組可以透過同樣的方式,以參數形式,將包括一系統環境組態、應用程式組態,及/或是應用程式狀態(application state)的狀態設定,傳入該軟體控制器(揮發性應用程式)。以參數形式傳送一狀態設定至一揮發性應用程式的具體實作方式,相同或均等於圖6、圖7、圖8,及其相關實施例之說明,在此不再予以贅述。
承上,於一較佳實施例中,該機器121是該用戶35所使用的一用戶設備,該軟體系統133是運行在該用戶設備裡。該偵測程式931在該用戶設備上偵測網路26裡的連網設備後,將可掌握該網路26裡各個連網設備的相關資訊,除了該些連網設備用於連接網路的IP地址以及用以控制該些連網設備的軟體控制器(揮發性應用程式)之元資料內容外,也可包括其品牌及/或型號等資訊,該偵測程式931亦可透過對公開網路的搜索,來掌握各個部署於雲端的連網設備及其所提供的軟體服務的相關資訊,包括該些軟體服務的服務名稱、網域名稱,以及用於操作該些軟體服務的軟體控制器之元資料內容;其中,該偵測程式931偵測的結果可以彙集成包括至少一連網設備和至少一軟體控制器的清單。接著,該偵測程式931即可依據該清單的內容,為每一連網設備所需要的軟體控制器,自動化配置相對應的可執行對象至該軟體系統133中。
承上,於一較佳實施例中,該偵測程式931可以在取得該至少一連網設備的清單時,立即為該至少一連網設備的軟體控制器發出動態安裝請求;也可以在取得該至少一連網設備的清單後,將該至少一連網設備的至少一屬性(該至少一屬性可由其元資料中取得)顯示於操作介面上,供用戶選擇或由用戶決定是否執行動態安裝,接著,再依據用戶的操作指示,為用戶所需的至少一連網設備的軟體控制器發出相對應的動態安裝請求。
承上,於一較佳實施例中,一連網設備的一軟體控制器被動態載入運行於該用戶設備後,該軟體控制器對該連網設備的至少一控制指令可以從該用戶設備直接傳送至該連網設備。該連網設備所對應的可執行對象,被自動化配置至該軟體系統133時,於動態安裝的過程中,該連網設備和其所對應的軟體控制器的元資料將可以被寫入於該可執行對象的App組態內容之中,因此,當該可執行對象被驅動時,將進一步導致該軟體控制器被動態載入運行,而當該軟體控制器被動態導入運行時,寫入於該可執行對象的App組態內容中的該連網設備的元資料,就同樣地可以通過狀態設定的方法,被傳入該軟體控制器中,亦即,該軟體控制器在動態載入運行後,於其執行時期,就已經可以直接確定該連網設備的產品型號和本身所在的IP地址等等資訊,該軟體控制器即可在該用戶設備上,依據該連網設備所支持的通訊協定,對該連網設備進行連線,並經由該連線對該聯網設備發出該至少一控制指令,以對該連網設備進行管理、操作、控制,及/或獲取該連網設備的數據以達監視之目的。
承上,於另一較佳實施例中,該機器121也可以是一服務器,而該軟體系統133則是運行於一用戶設備上;該軟體系統133可以被視為是一個具有對該服務器121發送指令或請求能力的客戶端軟體,可以被安裝、引入及/或部署於該用戶設備、該服務器121或另一服務器上;其中,該軟體系統133可以是部署在該服務器121或另一服務器上的一Web前端應用程式及/或漸進式網頁應用程式,經由一軟體引擎(例如:HTML/CSS/Javascript軟體引擎)而被動態載入運行於該用戶設備中;或者該軟體系統133本身即是安裝於該用戶設備的操作系統亦;又或者該軟體系統133是被安裝及/或引入於該用戶設備的操作系統中的一原生應用程式。
承上,於一較佳實施例中,當該軟體系統133被載入和運行於該用戶設備裡時,該軟體系統133與該服務器121之間的交互,可以是透過該軟體系統133本身及/或是該軟體系統133中的至少一軟體模組(例如:該偵測程式931的一前端系統)來完成,該軟體系統133及/或該至少一軟體模組可以提供一操作介面,在該操作介面上引導該用戶35輸入該服務器121的相關網路資訊(例如:該服務器131所在的IP地址),使該軟體系統133及/或該至少一軟體模組得以掌握該服務器131所在的位置,並據以正確的連線至該服務器121,以對該服務器121發送指令或請求。
承上,於一較佳實施例中,運行於該用戶設備上的該軟體系統133,可以透過該軟體系統133及/或該至少一軟體模組發送一搜尋請求至該服務器121的該偵測程式931之後端系統,由執行於該服務器121上的後端系統來搜尋公開網路及/或附近網路的至少一連網設備,搜尋結束後,由該服務器121將搜尋結果,整理成一清單,並回傳給該軟體系統133及/或該至少一軟體模組,經由該搜尋請求取得該至少一連網設備的該清單後,該軟體系統133及/或該至少一軟體模組即可依據該清單的內容,發出相對應的至少一動態安裝請求,並將該至少一連網設備所對應的該至少一軟體控制器,動態安裝於該軟體系統133的操作環境中。
承上,於一較佳實施例中,該清單的內容包括該至少一連網設備及其所對應的至少一軟體控制器的元資料(metadata),該至少一可執行對象是依據該清單的內容所產生。
承上,於一較佳實施例中,該軟體系統133本身及/或該軟體系統中的至少一軟體模組可以在取得該至少一連網設備的清單時,立即為該至少一連網設備的軟體控制器發出動態安裝請求;也可以在取得該至少一連網設備的清單後,將該至少一連網設備的至少一屬性(該至少一屬性可由其元資料中取得)顯示於操作介面上,供用戶選擇或由用戶決定是否執行動態安裝,接著,再依據用戶的操作指示,為用戶所需的至少一連網設備的軟體控制器發出相對應的動態安裝請求。
承上,於一較佳實施例中,該軟體系統133本身及/或該軟體系統中的至少一軟體模組可以從該服務器121取得一系統環境組態,該系統環境組態的內容包括該服務器121於內網及/或外網的網域名稱和IP地址。
承上,於一較佳實施例中,該至少一軟體控制器被動態載入運行於該用戶設備時,其對該至少一連網設備的至少一控制指令是在傳送至該服務器121後,由該服務器121以相容於該至少一連網設備的通訊協定轉發至該至少一連網設備,或者該至少一控制指令也可以是從該用戶設備直接傳送至該至少一連網設備。舉例來說,當該用戶設備和該至少一連網設備是在同一內網時,基本上該用戶設備裡執行的軟體控制器本身已經可以依據該連網設備的元資料裡的IP地址(內網地址),對該連網設備進行連線,但是如果該用戶設備和該至少一連網設備並不是在同一內網時,就可以透過該服務器121來做為一Proxy Server,亦即,依據該服務器121的外網IP地址,連線至該服務器121,然後將該至少一控制指令傳送至該服務器121,接著,由該服務器121協助轉傳至該至少一連網設備。
承上,於一較佳實施例中,該軟體系統133中的該安裝模組101,可以接收來自不同機器的動態安裝請求,該不同機器的動態安裝請求是由至少一自動化配置引擎所發出,該至少一自動化配置引擎是一網路服務、一偵測程式、一被動態載入運行的揮發性應用程式,或者是一被投影的工作空間;其中,對於自動化配置引擎的各種不同的具體實施方式,相同或均等於圖13及本案所揭示的各相關實施例,在此不再予以贅述。
請參閱圖19,其係為動態導入一連網設備的可執行狀態的運作路徑之概念示意圖。其中,圖19的軟體系統133和圖18中的軟體系統133是同一或均等的軟體系統;圖19的觸發T04和圖3中的觸發T0是同一或均等的觸發;圖19的用戶35和圖18中的用戶35是同一或均等的用戶;圖19的啟動模組151和圖17中的啟動模組151是同一或均等的啟動模組;圖19的觸發T4和圖16中的觸發T4是同一或均等的觸發;圖19的請求5013和圖16中的請求5013是同一或均等的請求;圖19的導入模組171和圖16中的導入模組17是同一或均等的導入模組;圖19的觸發T5和圖16中的觸發T5是同一或均等的觸發;圖19的動態導入流程18和圖16中的動態導入流程18是同一或均等的動態導入流程;圖19的管理模組191和圖17中的管理模組191是同一或均等的管理模組;圖19的可操作實體201和圖17中的可操作實體201是同一或均等的可操作實體。
承上,於一較佳實施例中,於該軟體系統133中提供一導入模組171,該導入模組171是用於接收一軟體控制器36於執行時期所發出的一可執行狀態(Executable State),於該導入模組171接收該可執行狀態時,觸發啟動一動態導入流程18,在該動態導入流程18的運作過程中,將供該用戶35操作的一可操作對象儲存至一管理模組191,並且為該可執行狀態和該可操作對象的一可執行事件建立一綁定關係;其中,通過該導入模組171來動態導入該軟體控制器36的可執行狀態及其所連接的作業流程之具體實作方法,相同或均等於圖16及其相關實施例,在此不再予以贅述;其中,該軟體控制器36是一揮發性應用程式。
承上,於一較佳實施例中,該軟體程式133是運行於一手機(用戶設備),該管理模組191包括一通訊記錄管理程式。當該用戶35於該手機上,啟動一個用於控制一VoIP Desk Phone的軟體控制器36,並使用該軟體控制器36完成一網路語音撥號時,該軟體控制器36於通話結束後,可以透過一觸發T4,將一個由該軟體控制器36所提供用於回撥的可執行狀態傳給該導入模組171。於該導入模組171接收該可執行狀態時,觸發啟動一動態導入流程18,在該動態導入流程18的運作過程中,將供該用戶35操作的一通訊記錄(可操作對象)儲存至該通訊記錄管理程式。於該用戶35對該通訊記錄進行操作並點擊「回撥」按鈕時,綁定於該通訊記錄裡的該可執行狀態,將被封裝至一執行請求,並透過一觸發T04傳入該啟動模組151,該啟動模組151即可依據該執行請求的內容,動態載入運行該軟體控制器36,通過該軟體控制器36控制該VoIP Desk Phone來完成該「回撥」的任務。
根據以上的說明可知,本發明提供一種動態整合(dynamically integrating)揮發性應用程式(volatile application program)的方法和運用該方法之軟體系統與機器;其中,該方法、軟體系統和機器具有以下優點:
一、相較於現有技術,自動化配置引擎可以在揮發性應用程式於後端服務器上完成部署後,將其以可執行對象的形式,快速地引入所有相關聯之用戶機器上,令服務提供商得以從後端服務器上對揮發性應用程式的發佈及其自動配置工作做出自主的控制。
二、相較於現有技術,可執行狀態的技術方法,可用於將各種應用程式的作業流程動態導入至一操作系統及/或軟體平台中,並且讓該操作系統及/或軟體平台成為一應用狀態引擎的驅動環境。
三、藉由本發明的技術方法,令一軟體系統及/或機器得以在無需先行安裝或引入任一揮發性應用程式的情況下,即可於該軟體系統及/或機器中,動態安裝不同來源的揮發性應用程式和動態導入任一揮發性應用程式的作業流程,進而動態生成出一超級應用(super app)及/或一物聯網控制中心的操作環境。
四、藉由本發明的技術方法,本案所述之軟體系統、安裝模組、導入模組、管理模組、啟動模組及/或自動化配置引擎,也都可以是以揮發性應用程式的實施態樣來加以實作;亦即,軟體系統本身是被動態載入和運行於一用戶機器上的一揮發性應用程式,而安裝模組、導入模組、管理模組、啟動模組及/或自動化配置引擎則是在軟體系統被動態載入運行後,由軟體系統的操作介面所管理及/或驅動的另一揮發性應用程式;在此特定的設計架構下,軟體系統及其相關的軟體模組將得以在外部服務器上部署、管理和發佈,其整體操作環境則是經由動態載入的方式運行於用戶機器上,也就是說,系統供應商將得以通過商用軟體裝置(commercial software appliance)及/或軟體即服務的服務模式,來為用戶提供其所需的操作系統、超級應用(super app)及/或物聯網控制中心的操作環境。
綜上所述,雖然本發明已以實施例揭露如上,然其並非用以限定本發明。本發明所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾。因此,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
1:第一外部機器 2:第二外部機器 3:第三外部機器 4:外部網路服務 5:揮發性應用程式 6:可投影的工作空間 7:揮發性應用程式的元資料 8:可執行對象 9:自動化配置引擎 91:外部網路服務(自動化配置引擎) 92:被動態載入運行的揮發性應用程式(自動化配置引擎) 93:偵測程式(自動化配置引擎) 931:偵測程式(自動化配置引擎) 94:被投影的工作空間(自動化配置引擎) 10:安裝模組 101:安裝模組 11:引入流程 12:用戶機器 121:機器 13:軟體系統 131:軟體系統 132:軟體系統 133:軟體系統 14:可執行對象 141:可執行對象 15:啟動模組 151:啟動模組 16:應用程式 17:導入模組 171:導入模組 18:動態導入流程 19:管理模組 191:管理模組 20:可操作實體 201:可操作實體 21:用戶 211:用戶 212:軟體代理程式 22:應用程式管理中心 231:可操作對象 24:可執行實體 25:揮發性應用程式 26:附近網路(家用網路、辦公網路) 27:第一連網設備(冷氣機) 8:第二連網設備(電視機) 29:第三連網設備(照明設備) 30:軟體控制器 31:冷氣控制APP(揮發性應用程式) 32:電視機控制APP(揮發性應用程式) 33:照明控制APP(揮發性應用程式) 34:操作介面 35:用戶 36:軟體控制器 5001:內容的組成 5002:內容的組成 5003:內容的組成 50041:連線 50042:連線 5005:驅動 5006:請求 50061:請求 50062:請求 50063:請求 50064:請求 50065:請求 50066:請求 5007:運算 50071:運算 5008:請求 50081:請求 50082:請求 50083:請求 50084:請求 50091:點擊 50092:點擊 50101:觸發 50102:觸發 50111:處理 50112:處理 5012:請求 50121:請求 50122:請求 50123:請求 50124:請求 5013:請求 A1:揮發性應用程式 A2:啟動程式 C1:元資料轉換程式 C2:元資料轉換程式 C3:元資料轉換程式 D1:揮發性應用程式的元資料 D11:揮發性應用程式的元資料(原始內容) D12:揮發性應用程式的元資料(部份內容) D2:揮發性應用程式的可執行狀態 D21:揮發性應用程式的可執行狀態、Event組態檔(可執行狀態) D22:Event組態檔(可執行狀態) D3:應用程式狀態 E1:啟動事件 E2:可執行事件 E3:啟動事件 E4:可執行事件 F1:流程 I1:可執行實體 I2:可操作實體 L1:用於動態載入運行揮發性應用程式的軟體模組 M1:第一機器 M2:第二機器 O1:可執行對象 O2:可操作對象 O3:可執行對象 O31:APP組態檔(可執行對象) O32:APP組態檔(可執行對象) O33:APP啟動器(可執行對象) O4:可操作對象 P1:被動態載入運行的揮發性應用程式 PF1:步驟 PF2:步驟 PS1:步驟 PS2:步驟 PS3:步驟 S1:揮發性應用程式的註冊服務(網路服務器) T0:觸發 T01:觸發 T02:觸發 T03:觸發 T04:觸發 T1:觸發 T11:觸發 T12:觸發 T13:觸發 T2:觸發 T21:觸發 T22:觸發 T23:觸發 T24:觸發 T3:觸發 T4:觸發 T5:觸發 U1:網路地址
[圖1]為一揮發性應用程式的元資料示意圖。 [圖2]為動態載入運行一揮發性應用程式的運作概念示意圖。 [圖3]為一啟動模組的基本運作流程示意圖。 [圖4]為一啟動模組的實施概念示意圖。 [圖5]為一可執行對象和可操作對象的基本運作流程示意圖。 [圖6]為一揮發性應用程式的可執行狀態示意圖。 [圖7]為一揮發性應用程式的元資料/可執行狀態與一可執行對象和一可操作對象的綁定示意圖。 [圖8]為一可執行對象和可操作對象的一較佳實施概念示意圖。 [圖9]為一元資料轉換程式的實施概念示意圖。 [圖10]為本發明於軟體系統中動態安裝揮發性應用程式方法的一較佳方法流程圖。 [圖11]為一揮發性應用程式的資源配置圖。 [圖12]為表達揮發性應用程式的動態安裝流程的運作路徑之概念示意圖。 [圖13]為一動態安裝揮發性應用程式的網路配置示意圖。 [圖14]為本發明於軟體系統中動態導入一作業流程方法的一較佳方法流程圖。 [圖15]為一語音通訊的作業流程圖。 [圖16]為表達一作業流程的動態導入流程的運作路徑之概念示意圖。 [圖17]為一用於動態整合揮發性應用程式的軟體系統的一較佳實施概念示意圖。 [圖18]為一可動態整合不同連網設備的軟體控制器的機器的一較佳實施概念示意圖。 [圖19]為為動態導入一連網設備的可執行狀態的運作路徑之概念示意圖。
132:軟體系統
9:自動化配置引擎
10:安裝模組
17:導入模組
151:啟動模組
11:引入流程
141:可執行對象
18:動態導入流程
191:管理模組
201:可操作實體
211:用戶
212:軟體代理程式
22:應用程式管理中心
231:可操作對象
24:可執行實體
25:揮發性應用程式
5006:請求
5012:請求
5013:請求
T0:觸發
T2:觸發
T4:觸發

Claims (31)

  1. 一種動態整合應用程式的方法,其包括: 於一軟體系統中提供一安裝模組,於該安裝模組接收由一自動化配置引擎(auto-provisioning engine)發出的一動態安裝請求時,啟動一引入流程,在該引入流程的運作過程中,將供一用戶執行的一可執行對象安裝至該軟體系統;其中,該可執行對象與一揮發性應用程式之間具有一綁定關係,且該綁定關係是通過將該揮發性應用程式的一元資料(metadata)及/或該元資料的存取連結綁定至該可執行對象所完成;以及 於該軟體系統中收到該用戶對該可執行對象的一執行請求時,動態載入運行該揮發性應用程式;其中,該揮發性應用程式的啟動程式的位置是由該元資料的至少一內容所確定。
  2. 如請求項1所述之方法,其中該揮發性應用程式是一Web系統、原生應用程式,或者是任一種可被動態載入運行的軟體服務;其中,該揮發性應用程式的動態載入運行,是經由動態載入和執行該揮發性應用程式的啟動程式所完成。
  3. 如請求項1所述之方法,其中該元資料的至少一內容包含一網路地址,且該網路地址的內容包含該揮發性應用程式的啟動程式的位置;及/或該揮發性應用程式的元資料的至少一內容包含至少一代碼,該至少一代碼是用於確定出該揮發性應用程式的啟動程式的位置。
  4. 如請求項1所述之方法,其中該動態安裝請求的內容包含該可執行對象、該可執行對象的存取連結、該元資料,及/或該元資料的存取連結;其中,該可執行對象的存取連結和該元資料的存取連結是統一資源標誌符(Uniform Resource Identifier)或一應用程式介面(Application Programming Interface)的實例。
  5. 如請求項4所述之方法,其中該可執行對象是一預先產生的可執行對象,或者該可執行對象是在該軟體系統及該安裝模組的執行時期(run time)裡動態產生的可執行對象。
  6. 如請求項1所述之方法,其中該動態安裝請求是由該自動化配置引擎(auto-provisioning engine)發出,用於驅動該安裝模組將該可執行對象安裝至該軟體系統,為該揮發性應用程式完成自動化配置(auto-provision)的工作;其中,該自動化配置引擎是一網路服務、一偵測程式、一應用程式,或者是一被投影的工作空間;其中,該網路服務是和該軟體系統運行於不同機器上的外部網路服務,該偵測程式是被執行於該軟體系統中的軟體模組,該應用程式是被動態載入運行於該軟體系統的揮發性應用程式,該被投影的工作空間是被動態載入運行於該軟體系統的可投影的工作空間。
  7. 如請求項1所述之方法,其中與該可執行對象關聯的一綁定內容是該元資料的原始內容、該元資料的部份內容,或者是重整該元資料的原始內容後所得到的內容;其中,該綁定關係是通過將該綁定內容及/或該綁定內容的存取連結綁定至該可執行對象來完成,在該綁定關係裡,該綁定內容是用於代表該元資料的資料參照。
  8. 如請求項7所述之方法,其中該可執行對象是根據一應用程式單元的數據模型所生成,當該可執行對象被安裝至該軟體系統後,將成為相容於該軟體系統的一可執行實體(executable entity);其中,該可執行實體在該軟體系統的執行時期(run time)裡,被顯示於操作介面上供該用戶開啟,於該用戶開啟該可執行實體時,觸發該執行請求以動態載入運行該可執行實體所對應的該揮發性應用程式。
  9. 如請求項8所述之方法,其中該執行請求的內容包含該綁定內容及/或該綁定內容的存取連結,該揮發性應用程式是由一啟動模組依據該執行請求的內容來動態載入運行;其中,該啟動模組是一獨立運行的應用程式或是可動態載入運行一異質系統的一軟體元件。
  10. 如請求項9所述之方法,其中當該揮發性應用程式與該軟體系統的作業環境不相容時,該揮發性應用程式是透過一轉化器(Adapter)進行驅動,由該轉化器提供與該軟體系統的作業環境相容的介面實作;其中,該轉化器是由該可執行對象、該啟動模組、該軟體系統,及/或該啟動模組觸發執行的另一軟體模組所提供。
  11. 如請求項1所述之方法,其中於該揮發性應用程式被動態載入運行時,以參數形式傳入一狀態設定至該揮發性應用程式,該揮發性應用程式是依據該狀態設定於執行時期調整內部的應用程式狀態(application state);其中,該狀態設定是一系統環境組態、應用程式組態,及/或是定制化的應用程式狀態。
  12. 一種動態整合應用程式的方法,其包括: 於一軟體系統中提供一啟動模組,於該啟動模組接收一執行請求時,依據該執行請求的內容來執行一應用程式;其中,該應用程式是安裝於該軟體系統的一原生應用程式,或者該應用程式是需要被動態載入運行的一揮發性應用程式; 於該軟體系統中提供一導入模組,於該導入模組收到該應用程式於所發出的一可執行狀態(Executable State)時,啟動一動態導入流程,在該動態導入流程的運作過程中,將供一用戶操作的一可操作對象儲存至一管理模組,並且為該可執行狀態和該可操作對象的一可執行事件建立一綁定關係;以及 於該可執行事件被該用戶觸發時,用於執行該可執行狀態的另一執行請求將被發出,並動態載入運行一相對應的揮發性應用程式,以執行該可執行狀態。
  13. 如請求項12所述之方法,其中當該應用程式是一揮發性應用程式時,該揮發性應用程式的元資料的至少一內容包含一網路地址,且該網路地址的內容包含該揮發性應用程式的啟動程式的位置;及/或當該應用程式是一揮發性應用程式時,該揮發性應用程式的元資料的至少一內容包含至少一代碼,該至少一代碼是用於確定出該揮發性應用程式的啟動程式的位置。
  14. 如請求項12所述之方法,其中當該執行請求的發出是因應一可執行對象的啟動時,則該應用程式是一揮發性應用程式;其中,該可執行對象是根據一應用程式單元的數據模型所生成,在該軟體系統的執行時期(run time)中,該可執行對象是以一可執行實體(executable entity)的形式顯示於操作介面上供該用戶開啟,於該用戶開啟該可執行實體時,將觸發一執行請求以動態載入運行該可執行實體所對應的一揮發性應用程式。
  15. 如請求項12所述之方法,其中當該執行請求的發出是因應一可執行狀態的執行時,則該應用程式是一揮發性應用程式;其中,該執行請求的內容是依據該可執行狀態的內容所產生,該可執行狀態的內容包含一綁定內容及/或該綁定內容的存取連結;該綁定內容是該揮發性應用程式的一元資料(metadata)的原始內容、該元資料的部份內容,或者是重整該元資料的原始內容後所得到的內容;該啟動模組是透過該執行請求的內容來確定出該揮發性應用程式的啟動程式的位置,並且依據該啟動程式的位置來動態載入運行該揮發性應用程式。
  16. 如請求項12所述之方法,其中該可操作對象是根據一資訊單元的數據模型所生成,當該可操作對象被儲存至該管理模組後,將成為相容於該軟體系統或該軟體系統中至少一軟體模組的一可操作實體(operable entity);其中,該可操作實體將在該軟體系統或該至少一軟體模組的執行時期裡,被顯示於一操作介面上供用戶操作,於該用戶觸發與該可執行狀態綁定的該可執行事件時,動態載入運行該相對應的揮發性應用程式;其中,該導入模組是透過至少一可執行狀態的導入來完成一作業流程的動態導入。
  17. 如請求項16所述之方法,其中該可執行狀態和該可執行事件之間的綁定關係,是通過將該可執行狀態的至少一內容綁定至該可操作對象或該可執行事件來完成;於該可執行事件被觸發時,依據該可執行狀態的內容來產生並發出該另一執行請求,進而動態載入運行該相對應的揮發性應用程式以執行該可執行狀態;其中,該可執行事件是依據該可執行狀態的至少一資訊而被動態加入於該可操作實體中。
  18. 如請求項12所述之方法,其中於該相對應的揮發性應用程式被動態載入運行時,以參數形式傳入一狀態設定至該相對應的揮發性應用程式,該相對應的揮發性應用程式是依據該狀態設定於執行時期調整內部的應用程式狀態(application state);其中該狀態設定是一系統環境組態、應用程式組態,及/或是定製化的應用程式狀態。
  19. 一種動態整合應用程式的軟體系統,包括: 一安裝模組,於該安裝模組收到由一自動化配置引擎(auto-provisioning engine)所發出的一動態安裝請求時,將一可執行對象安裝至該軟體系統;及/或 一導入模組,於該導入模組收到由一應用程式所發出的一可執行狀態時,將與該可執行狀態綁定的一可操作對象儲存於一管理模組; 其中,當該可執行對象或該可執行狀態被執行或觸發時,發出一相對應的執行請求,並通過一啟動模組動態載入運行一相對應的揮發性應用程式來完成該執行請求。
  20. 如請求項19所述之軟體系統,其中該軟體系統是通過該安裝模組,將來自多個不同信息源的揮發性應用程式動態安裝於其中;其中,所述揮發性應用程式的動態安裝是透過至少一可執行對象的安裝來完成,該至少一可執行對象的安裝及啟動(launch)是根據請求項1-11中任一項所述的方法的步驟執行。
  21. 如請求項19所述之軟體系統,其中該軟體系統是通過該導入模組,將至少一應用程式所支持的不同作業流程動態導入於其中;其中,所述的不同作業流程的動態導入是透過至少一可執行狀態的導入來完成,該至少一可執行狀態的導入及執行是根據請求項12-18中任一項所述的方法的步驟執行。
  22. 一種動態整合應用程式的機器,包括: 一自動化配置引擎(auto-provisioning engine),用於偵測一網路裡的至少一連網設備,並將相對應於該至少一連網設備的至少一可執行對象配置至一軟體系統;其中,該軟體系統將該至少一可執行對象顯示於一操作介面(user interface),以供該用戶進行操作,於該用戶在該操作介面上開啟相對應於一連網設備的一可執行對象時,動態載入運行綁定於該可執行對象的一揮發性應用程式,透過該揮發性應用程式管理、操作、監視,及/或控制該連網設備所提供的服務;及/或 一導入模組,用於接收由一應用程式所發出的一可執行狀態,並將與該可執行狀態綁定的一可操作對象儲存於一管理模組;其中,該導入模組是用於將至少一應用程式所支持的作業流程動態導入於該軟體系統中。
  23. 如請求項22所述之機器,其中該連網設備是一物聯網設備、一商用軟體裝置(commercial software appliance),及/或是任一種具有提供資訊服務能力的硬體設備或軟體裝置(software appliance)。
  24. 如請求項22所述之機器,其中該連網設備和該可執行對象之間具有一綁定關係,且該綁定關係是通過將該連網設備的元資料(metadata)之至少一內容綁定至該可執行對象所完成;其中,該連網設備的元資料之至少一內容包括該連網設備的產品名稱、品牌名稱、網域名稱(Domain Name),及/或IP地址(IP Address)。
  25. 如請求項22所述之機器,其中該揮發性應用程式和該可執行對象之間具有一綁定關係,且該綁定關係是通過將該揮發性應用程式的元資料(metadata)之至少一內容綁定至該可執行對象所完成;其中,該揮發性應用程式的元資料之至少一內容包括該揮發性應用程式的APP名稱、APP圖示、功能描述、啟動程式的位置、網路域名,及/或提供者資訊。
  26. 如請求項22所述之機器,其中該揮發性應用程式是該連網設備的一軟體控制器;其中,所述該揮發性應用程式的動態安裝是透過該可執行對象的安裝來完成,該可執行對象的安裝及啟動(launch)是根據請求項1-11中任一項所述的方法的步驟執行。
  27. 如請求項22所述之機器,其中所述作業流程的動態導入是透過至少一可執行狀態的導入來完成,該至少一可執行狀態的導入及執行是根據請求項12-18中任一項所述的方法的步驟執行。
  28. 如請求項22所述之機器,其中該機器是一用戶設備,且該軟體系統運行於該用戶設備。
  29. 如請求項28所述之機器,其中該揮發性應用程式是該連網設備的一軟體控制器,於該軟體控制器被動態載入運行於該用戶設備後,其對該連網設備的至少一控制指令是從該用戶設備直接傳送至該連網設備。
  30. 如請求項22所述之機器,其中該機器是一服務器,該軟體系統運行於一用戶設備,且該軟體系統具備連接至該服務器並對該服務器發送指令或請求的能力。
  31. 如請求項30所述之機器,其中該揮發性應用程式是該連網設備的一軟體控制器,於該軟體控制器被動態載入運行於該用戶設備後,其對該連網設備的至少一控制指令是傳送至該服務器後,由該服務器以相容於該連網設備的通訊協定轉發至該連網設備,或者該至少一控制指令是從該用戶設備直接傳送至該連網設備。
TW110120418A 2020-06-05 2021-06-04 動態整合應用程式的方法以及應用該方法的軟體系統與機器 TW202147101A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202063035009P 2020-06-05 2020-06-05
US63/035009 2020-06-05

Publications (1)

Publication Number Publication Date
TW202147101A true TW202147101A (zh) 2021-12-16

Family

ID=78830625

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110120418A TW202147101A (zh) 2020-06-05 2021-06-04 動態整合應用程式的方法以及應用該方法的軟體系統與機器

Country Status (4)

Country Link
US (1) US20230205503A1 (zh)
CN (1) CN115867891A (zh)
TW (1) TW202147101A (zh)
WO (1) WO2021244644A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI790913B (zh) * 2022-02-08 2023-01-21 宏碁股份有限公司 網頁存取系統及網頁存取方法
TWI810961B (zh) * 2022-03-23 2023-08-01 大陸商鼎捷軟件股份有限公司 業務資料交換系統以及業務資料交換方法
TWI837584B (zh) 2022-02-08 2024-04-01 宏碁股份有限公司 網頁存取系統及網頁存取方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114267264B (zh) * 2021-12-14 2023-06-06 浙江华章科技有限公司 一种大型led电子信息看板系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172657A1 (en) * 2007-12-28 2009-07-02 Nokia, Inc. System, Method, Apparatus, Mobile Terminal and Computer Program Product for Providing Secure Mixed-Language Components to a System Dynamically
CN101488143A (zh) * 2008-01-16 2009-07-22 重庆安软信息科技有限公司 一种新型的web应用和本地应用的交互模式
CN101833465B (zh) * 2010-04-23 2013-03-13 中国科学院声学研究所 一种支持应用程序动态加载运行的嵌入式系统
CN103473082A (zh) * 2012-06-08 2013-12-25 腾讯科技(深圳)有限公司 一种启动WebApp的方法及装置
CN106528196B (zh) * 2016-09-23 2019-11-26 邵阳学院 智能设备的app加载方法及应用该方法的智能设备、系统
CN109960939B (zh) * 2017-12-25 2021-02-05 航天信息股份有限公司 远程html5页面加载方法及系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI790913B (zh) * 2022-02-08 2023-01-21 宏碁股份有限公司 網頁存取系統及網頁存取方法
TWI837584B (zh) 2022-02-08 2024-04-01 宏碁股份有限公司 網頁存取系統及網頁存取方法
TWI810961B (zh) * 2022-03-23 2023-08-01 大陸商鼎捷軟件股份有限公司 業務資料交換系統以及業務資料交換方法

Also Published As

Publication number Publication date
WO2021244644A1 (zh) 2021-12-09
US20230205503A1 (en) 2023-06-29
CN115867891A (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
TW202147101A (zh) 動態整合應用程式的方法以及應用該方法的軟體系統與機器
US10324711B2 (en) System and method for the data management in the interaction between machines
CN111176752B (zh) 一种浏览器页面内嵌窗口小程序的方法及装置
US9930092B2 (en) Editing an unhosted third party application
CA2495024C (en) System and method for adaptable provisioning of generic application content
US8965958B2 (en) File fetch from a remote client device
US7571208B2 (en) Creating proxies from service description metadata at runtime
KR100678966B1 (ko) Rui 서비스 제공 장치 및 방법
EP1355231A2 (en) Processing data files using plug-ins
CA2495396C (en) System and method for customized provisioning of application content
EP1304616A1 (en) Method for processing a data file using a plug-in
JP2015503799A (ja) 埋込まれたプロセス通信のための仮想チャネル
JP5753629B2 (ja) モバイルブロードバンドデバイスを管理する方法、デバイス及びシステム
GB2520246A (en) Method for accessing business object resources and machine-to-machine communication environment
CN102567400A (zh) 一种实现Web访问的方法和Web服务器
CN100465950C (zh) 用于客户支持的web浏览器控件
WO2021093672A1 (zh) 外部系统的嵌入方法、工作流系统、设备及计算机可读存储介质
WO2021093671A1 (zh) 任务处理方法、系统、装置、设备及计算机可读存储介质
CN106371848B (zh) 一种web开发框架支持Odata的实现方法
US7890487B1 (en) Facilitating client-side data-management for web-based applications
US10291743B2 (en) Configuring service endpoints in native client applications
KR20110122996A (ko) 어플리케이션 실행 장치, 그 방법 및 그 방법이 기록된 컴퓨터로 판독 가능한 기록 매체
JP2009053957A (ja) 情報処理装置及びその制御方法
JP2003076563A (ja) 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム
TWI811644B (zh) 一種動態連接網路通訊渠道的方法與運用該方法之軟體系統