望闻问切的闻是什么意思| 蜂蜜水什么时间喝最好| 安宫牛黄丸适合什么人群吃| t是什么| 918是什么意思| 看见壁虎是什么兆头| 7.9是什么星座| 真数是什么| 脂肪肝能吃什么水果| 避孕环是什么样子图片| 喝酒拉肚子是什么原因| 胃胀放屁多是什么原因| lesportsac什么牌子| 湿化瓶内放什么水| 今天什么时候出梅| 忘乎所以是什么意思| 梦见发洪水是什么征兆| 镜子碎了有什么征兆吗| 牙龈肿痛吃什么水果| 医院特需号是什么意思| 中暑是什么原因| 能够握紧的就别放了是什么歌| 小暑吃什么食物| 1991年是什么年| 海茸是什么东西| 高血糖吃什么菜好| 娘家人是什么意思| 做梦放鞭炮什么意思| 肆无忌惮是什么意思| 低钠盐适合什么人吃| 清油是什么油| 什么鱼炖汤好喝又营养| 渡情劫是什么意思| 老公梦见老婆出轨是什么意思| 胸ct和肺ct有什么区别| 阴茎不硬吃什么药| 梦见蛇是什么意思啊| 乾元是什么意思| 为什么生化妊娠是好事| 天才是指什么生肖| 肾火吃什么药| 50岁吃什么钙片补钙效果好| 淘米水洗脸有什么作用与功效| 梦见手表是什么意思| 就诊卡号是什么| 关节由什么组成| 花红是什么意思| 剁椒是什么辣椒| 小儿惊痫是什么症状| 大排畸和四维的区别是什么| 脑炎是什么原因引起的| 农历八月十五是什么节| 生吃大蒜有什么好处和坏处| 莫言是什么学历| 甲功五项挂什么科| 为什么会有湿气| 冷面是用什么面做的| 为什么日语| 乌鸡蛋是什么颜色| 什么是食品安全| 摩羯座的幸运花是什么| 去医院看嘴唇挂什么科| 吃什么补充胶原蛋白| omega是什么牌子的手表| 真情流露是什么意思| 天生丽质难自弃是什么意思| 长胸毛的男人代表什么| 英文为什么怎么写| 杀了神经的牙为什么还疼| 妙不可言是什么意思| 茶颜悦色什么好喝| 男生喜欢什么礼物| 严什么的作风| 不变应万变是什么意思| 香膏是什么| 西游记什么朝代写的| 玉皇大帝姓什么| 三醋酯纤维是什么面料| 骨关节炎吃什么药| 什么时间艾灸效果最好| 什么是双重人格| 折耳猫什么颜色最贵| 京东白条什么时候还款| sub是什么意思| 4月15日什么星座| 射手座女和什么星座最配| 累了喝什么缓解疲劳| 脑震荡后眩晕吃什么药| 腊月初七是什么星座| 慧命是什么意思| 什么是纳米| 三番四次是什么生肖| rds是什么意思| 什么时候能测出怀孕| 羊蛋是什么| 什么颜色属火| 泰安有什么好吃的| 鸟在电线上为什么不会触电| 白芷炖肉起什么作用| 声带白斑是什么病严重吗| 火疖子用什么药膏| 甲状腺看什么门诊| 备孕男性检查什么项目| 34岁属什么的生肖| 嘴巴里发苦是什么原因| 肝癌是什么原因引起的| 67岁属什么生肖| 埃及是什么人种| 舒张压偏低是什么原因| 乙肝15阳性什么意思| 尿失禁是什么意思| 跨境电子商务是什么| 女生安全期什么意思| 切片是什么意思| 心率快吃什么药| 副乡长是什么级别| 小孩子肚子疼吃什么药| 为什么喝中药会拉肚子| 脸部麻木是什么原因引起的| 喝铁观音茶有什么好处| 什么时候是排卵期| 苦海翻起爱恨是什么歌| 皮肤上出现小红点是什么原因| 罪恶感什么意思| 小便发红是什么症状男| 左肺纤维灶什么意思| 胃溃疡吃什么水果好| 什么东西化痰效果最好最快| 省检察长是什么级别| rebecca什么意思| 记忆力减退是什么原因造成的| 盂是什么意思| 一凉就咳嗽是什么原因| 伽是什么意思| 肺坠积性改变什么意思| 莫代尔是什么面料| epa是什么意思| 屁眼疼痛什么原因| 尿检隐血十一什么意思| 一个虫一个夫念什么| 固精是什么意思| 匹诺曹什么意思| 生死离别代表什么生肖| 点天灯是什么意思| 电轴左偏是什么原因| 放疗有什么危害| 羽毛球拍u是什么意思| 喝太多水对身体有什么影响| 膀胱破裂什么症状| 尿道炎是什么引起的| 大好河山是什么生肖| 乳腺导管扩张是什么意思严重吗| edd什么意思| sp02是什么意思| 什么钻进风箱里两头受气| 睡觉做梦是什么原因| 谷氨酰转移酶高是什么原因| 为什么晚上睡觉会磨牙| 纯色是什么意思| 肽是什么东西| 手发抖吃什么药| 指甲容易断裂是什么原因| 念旧的人是什么样的人| 美国是什么洲| 小腿疼痛挂什么科| 老干局是干什么的| 为什么牙齿会松动| 乳环是什么| 西瓜为什么叫西瓜| 露酒是什么意思| 高压低是什么原因| 血糖低有什么症状| 先兆临产是什么意思| 什么是乳清蛋白粉| 甲减要多吃什么食物好| tsh代表什么| 高血糖可以吃什么水果| pco是什么意思| 腿弯后面疼是什么原因| 月经前腰疼的厉害是什么原因| 得水痘不能吃什么| 十年结婚是什么婚| 男生什么时候会有生理反应| look是什么意思| 九四年属什么生肖| 补办护照需要什么材料| 长期便秘喝什么茶好| rue是什么意思| 作业是什么意思| 嬲什么意思| 扁桃体发炎吃什么好得快| 胰腺炎有什么症状| 吃什么提神| 83岁属什么生肖| 梨花是什么颜色的| 耐力是什么意思| 夜宵是什么意思| 改姓氏需要什么手续| 脂肪酶是什么意思| 心慌气短吃什么药最好| 12月25日是什么日子| 化生细胞有是什么意思| 起鸡皮疙瘩是什么原因| 去脂肪粒最有效的药膏叫什么| 漂洗和洗涤有什么区别| 未属什么五行| 动容什么意思| 鼻子冒热气是什么原因| ceo是什么意思| 蓝颜知己什么意思| 过意不去是什么意思| 辣眼睛是什么意思| 什么方什么计| 眼睛挂什么科| 检查尿常规挂什么科| 红玫瑰的花语是什么| 鼻子里流出黄水是什么原因| 风湿类风湿有什么症状表现| opple是什么牌子| 吃什么容易导致流产| 狐臭是什么| 吃茄子对身体有什么好处| 家里为什么会有隐翅虫| 小狗感冒症状是什么样的| 现在的节气是什么| 喝藿香正气水不能吃什么| rag是什么意思| 肌酐高有什么症状| 口臭是什么原因导致的呢| 三七主要治什么病| champion是什么牌子| 蒙脱石散是什么成分| 二氧化碳是什么东西| 肝火是什么原因引起的| 囊肿是什么引起的| 紫外线过敏用什么药膏| 7月20号是什么星座| 间质性肺病是什么意思| 左束支传导阻滞是什么意思| kor是什么意思| 叛变是什么意思| 花洒不出水什么原因| 梦见浇花是什么意思| 及什么意思| 火红火红的什么| 甲状腺癌有什么症状| 咽炎挂什么科室| 肺阳虚吃什么中成药| 憋尿有什么危害| 妇科炎症吃什么食物好| 胃糜烂和胃溃疡有什么区别| 结婚登记需要什么证件| 玛卡和什么搭配壮阳效果最佳| 什么的绿叶| 1919年发生了什么| 泌乳素是什么意思| 包的部首是什么| 维生素c是什么| 家里有蚂蚁是什么原因| insun是什么牌子| 尿频是什么原因引起的| 狗狗打疫苗前后要注意什么| 腰疼吃什么药| 308什么意思| 百度

优动漫PAINT(漫画插画绘制软件) V1.6.2官方版

Method and system for data preparation and communication between software applications Download PDF

Info

Publication number
US8352963B2
US8352963B2 US12/646,639 US64663909A US8352963B2 US 8352963 B2 US8352963 B2 US 8352963B2 US 64663909 A US64663909 A US 64663909A US 8352963 B2 US8352963 B2 US 8352963B2
Authority
US
United States
Prior art keywords
application
action
ordered stack
executing
scripts
Prior art date
Legal status (The legal status 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 status listed.)
Active, expires
Application number
US12/646,639
Other versions
US20100100891A1 (en
Inventor
Jens Boeckenhauer
Holger Bohle
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
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 SAP SE filed Critical SAP SE
Priority to US12/646,639 priority Critical patent/US8352963B2/en
Publication of US20100100891A1 publication Critical patent/US20100100891A1/en
Application granted granted Critical
Publication of US8352963B2 publication Critical patent/US8352963B2/en
Assigned to SAP SE reassignment SAP SE CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: SAP AG
Active legal-status Critical Current
Adjusted expiration legal-status Critical

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/451Execution arrangements for user interfaces
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Definitions

  • Services provided by a computing system may include any type of functionality provided by the system and may be implemented at least in part by software applications of the system.
  • a particular service may include a business functionality and be implemented by an application which includes business logic to perform the business functionality.
  • legacy applications exist which have become outdated in some aspect, but which may implement services which are still useful.
  • the user interface of a legacy application may have become outdated, but the service it implements may still be useful.
  • One approach to using the services of legacy applications includes developing a new application which reuses the services of the legacy application but which updates the outdated aspects.
  • the new application and the legacy application may be executed by the computing system according to different contexts such as, for example, a specific relative time and duration of execution.
  • the new application and the legacy application may be executed by the computing system according to different contexts such as, for example, a specific relative time and duration of execution.
  • data which is dependent on a context or state of the new or legacy application may be incorrectly communicated between the new and legacy applications.
  • FIG. 1 is a schematic diagram depicting one embodiment of a software architecture.
  • FIG. 2 is a schematic diagram depicting one embodiment of a computing environment.
  • FIG. 3 is a flow chart depicting a schematic representation of one embodiment of a method.
  • FIG. 4 is a schematic diagram depicting one embodiment of a graphical user interface of a first application.
  • FIG. 5 is a schematic diagram depicting another representation of one embodiment of the method depicted in FIG. 3 .
  • FIG. 6 is a flow chart depicting a schematic representation of one embodiment of another method.
  • FIGS. 7A-7G are schematic diagrams depicting another representation of one embodiment of the method depicted in FIG. 6 .
  • FIGS. 8A-8G are schematic diagrams depicting yet another representation of one embodiment of the method depicted in FIG. 6 .
  • FIG. 9 is a schematic diagram depicting one embodiment of a correspondence between states of the first application and states of a second application.
  • FIG. 10 is a schematic diagram depicting one embodiment of a partially-visible data container.
  • FIG. 11 is a schematic diagram depicting one embodiment of a correspondence between browsing scripts and positioning scripts.
  • An embodiment of a computer-implemented method can include executing a first application in stateful manner, wherein the first application executes continuously while receiving a sequence of a plurality of inputs from a user; and, in response to each of at least some of the plurality of inputs at the first application, executing a second application in a stateless manner by an execution controller, wherein the stateless execution can include the execution controller instructing the second application to execute an ordered stack of action scripts, the second application initiating and executing the ordered stack of action scripts, and the second application terminating upon completion of the executing of the ordered stack of action scripts.
  • FIG. 1 depicts one embodiment of a software architecture 100 .
  • the depicted exemplary embodiment of the software architecture 100 comprises a plurality of software components 102 , including a first application 104 , an execution controller 108 , and a second application 112 .
  • the first application 104 is capable of receiving input from a user, and communicating with the execution controller 108 .
  • the execution controller 108 is capable of communicating with both the first application 104 and the second application 112 .
  • the second application 104 is capable of performing a service.
  • the software architecture 100 includes a database 116 , and the performing of the service by the second application 112 includes accessing the database 116 .
  • the execution controller 108 is capable of accessing the database 116 .
  • Other embodiments of the software architecture 100 also exist.
  • the first application 104 is a relatively newer application and the second application 112 is a relatively older application, e.g., a legacy application.
  • the first application 104 can be developed to update some undesirable or outmoded aspect of the second application 112 .
  • the first application 104 comprises a graphical user interface 106 that is updated user interface relative to a user interface (not shown) of the second application 112 .
  • the software architecture 100 depicted in FIG. 1 corresponds to the software architecture described in U.S. patent application Ser. No. 11/441,463, to Stefan Elfner et al., filed Apr. 25, 2006, entitled “Mapping a New User Interface onto an Existing User Interface,” which is hereby incorporated by reference in its entirety.
  • the software architecture 100 runs in, and is part of, a computing environment 200 , an exemplary embodiment of which is depicted in FIG. 2 .
  • the computing environment 200 comprises an input device 202 , a processor 204 , a memory 206 , a communication line 208 and a display 212 .
  • the memory 206 further comprises data 210 and the various software components 102 , which are stored in the memory 206 at least at some moment in time.
  • the input device 202 optionally comprises at least one of: a keyboard, a mouse, a voice activated controller, an optical controller, an infrared controller, or other suitable input device.
  • the memory 206 optionally comprises at least one of: a random access memory, a disk storage memory, or other suitable memory.
  • the display 212 optionally comprises at least one of: a monitor, a television, a video projector, or other suitable display device.
  • the software components 102 comprise computer program instructions which may be accessed and executed by the processor 204 .
  • the software components 102 are implemented in any suitable software language such as, for example, Java, ABAP, C, C++, etc.
  • the data 210 optionally comprises data which is accessible by or integral to the database 116 .
  • the memory 206 , processor 204 and input device 202 are connected together and communicate with each other by means of the communication line 208 .
  • the communication line 208 comprises a system bus
  • the computing environment 200 comprises a single computer.
  • the communication line 208 comprises a network element
  • the computing environment 200 comprises a distributed computing environment.
  • the memory 206 , processor 204 and input device 202 are optionally distributed across different locations.
  • the computing environment 200 optionally comprises a plurality of some or all of the memory 206 , the processor 204 and the input device 202 .
  • Other configurations of the computing environment 200 are also possible.
  • the software components comprise computer program instructions, which when executed by the processor 304 , enable the performance of a method 300 (shown in FIG. 3 ) of using the software architecture 100 and a method 600 (shown in FIG. 6 ) of preparing data for communication between the first and second applications 104 , 112 and communicating between the first and second applications 104 , 112 .
  • a computer-readable medium comprises the computer program instructions which enable the performance of the methods 300 , 600 .
  • a system comprises means to perform each of the steps of the methods 300 , 600 .
  • the means to perform each of the steps of the methods 300 , 600 comprise elements of the computing environment 200 .
  • FIG. 3 is a flow chart depicting a schematic representation of one embodiment of the method 300 of using the software architecture 100 .
  • the user provides an input to the first application 104 .
  • the input to the first application 104 typically comprises an input to the graphical user interface 106 of the first application 104 .
  • the first application 104 then invokes a service through the execution controller 108 , the service being related to the received user input.
  • the execution controller 108 requests the invoked service from the second application 112 .
  • the second application 112 then performs the requested service.
  • the second application 112 returns a result of the service, optionally including any output data, to the execution controller 108 .
  • the execution controller 108 then communicates with the first application 104 regarding the result, optionally including communicating the output data.
  • the performance of the method 300 typically results in a change of state 402 (shown in FIG. 4 ) of the first application 104 .
  • the state 402 of the software component 102 e.g. the first or second applications 104 , 112 , is the operational status of the component 102 at a particular moment in time.
  • the state 402 of the component 102 includes the status of both the user interface and other elements of the component 102 not directly presented to the user.
  • a particular state 402 of the first application 104 comprises the particular visual configuration of the graphical user interface 106 presented to the user.
  • the graphical user interface 106 comprises elements which are visible to the user, and a state 402 of the first application 104 thus comprises a specific configuration of the visible elements of the graphical user interface 106 .
  • the graphical user interface 106 of the first application 104 comprises graphical elements including at least one of: at least one button 404 (shown in FIG. 4 ), or at least one data display 406 (shown in FIG. 4 ).
  • the state 402 of the first application 104 comprises a specific visual configuration of any buttons and data displays of the graphical user interface 106 .
  • FIG. 4 depicts one embodiment of the first application 104 having the graphical user interface 106 having the at least one button 404 and the at least one data display 406 .
  • the at least one button 404 refers to any element of the graphical user interface 106 which can accept an input from the user to trigger an action.
  • the at least one button 404 may graphically resemble an actual button, but may also appear as other types of controls or visual elements, such as, e.g., switches, selectors, radio buttons, pull-down boxes, menus, menu items, etc.
  • the action as referred to herein, and also as referred to as a navigation action or a navigation, triggered by the at least one button 404 navigates the first application 104 between states 402 .
  • a specific action i.e., a specific navigation
  • a specific button 404 may navigate the first application 104 between a first state 402 a of the first application 104 and a second state 402 b of the first application 104 .
  • the first and second states 402 a,b can be different states 402 or the same states 402 .
  • Different states 402 may appear visually different to the user, or may appear visually the same or similar to the user.
  • Two states 402 which are the same appear visually the same to the user.
  • a navigation between the first and second states 402 a,b which are the same states 402 is also referred to as a trivial navigation.
  • the at least one data display 406 refers to any element which displays data to the user as part of a service being performed.
  • the data displayed to the user by the at least one data display 406 comprises data retrieved from the database 116 .
  • the data display 406 comprises a database table.
  • the at least one data display 406 can also optionally accept input from the user.
  • the at least one data display 406 comprises a data input field 408 which is capable of accepting data input from a user.
  • the data input optionally comprises at least one of: numerical data, textual data, or a data file. Input to the at least one data display 406 can provide new data to the first application 104 and change existing data being displayed by the first application 104 .
  • FIG. 5 is flow diagram depicting another schematic representation of one embodiment of the method 300 .
  • the depiction of FIG. 5 illustrates the method 300 by graphically relating each step of the method 300 according to which software component 102 the step involves.
  • FIG. 5 also shows additional aspects of the method 300 by which, in one embodiment, the first application 104 is executed in a stateful manner and the second application is executed in a stateless manner.
  • the first application 104 individually invokes 304 , through the execution controller 108 , a plurality of services from the second application 112 over a period of time. As depicted in FIG.
  • the first application 104 executes in a stateful manner because it is kept running throughout the process of invoking 304 the plurality of services, and as such has a corresponding state 402 at each moment in time.
  • the second application 112 executes in a stateless manner wherein the second application 112 is launched at the beginning of each service request 306 , performs 308 the service, and then is terminated upon completing each requested service.
  • the second application 112 is not kept running between successive service requests 306 , it is instead terminated upon completion of each request 306 and before responding to another request 306 .
  • the second application 112 is executed in a stateless manner because the second application 112 is not kept running, and therefore has no state, between the end of the performance 308 of one service and a subsequent service request 306 .
  • a method 600 of preparing data for communication between the first and second applications 104 , 112 , and of communicating between the first and second applications 104 , 112 is provided.
  • FIG. 6 is a flow chart depicting a schematic representation of one embodiment of the method 600 .
  • FIGS. 7A-G are schematic diagrams which also depict some aspects of an exemplary performance of one embodiment of the method 600 in further detail.
  • the method 600 prepares data, and communicates, to enable the first application 104 to execute in a stateful manner and the second application 112 to execute in a stateless manner.
  • the method 600 begins at step 602 .
  • a first action script 702 a is added to an ordered stack 704 of action scripts 702 which is maintained by the execution controller 108 .
  • Each action script 702 of the ordered stack 704 of action scripts 702 comprises at least one command for execution at the second application 112 .
  • the at least one command of each action script 702 corresponds to a navigation input 706 received at the first application 104 .
  • Inputs received at the first application 104 include navigation inputs 706 and data inputs 708 .
  • navigation inputs 706 change the state 402 of the first application 104 and are received by the at least one button 404 ; and data inputs 708 provide data to the first application 104 or change data being displayed by the first application 104 , and are received by the at least one data display 406 .
  • the at least one command of the action script 702 performs an action at the second application 112 that is a translation of the action at the first application 104 which is triggered by the navigation input 706 . In this way, the inputs to the first application 104 are mapped to commands at the second application 112 in the form of action scripts 704 maintained by the execution controller 108 .
  • the first action script 702 a added to the ordered stack 704 of action scripts 702 corresponds to a first navigation input 706 a received at the first application 104 .
  • Action scripts 702 can also correspond to an data input 708 received at the first application 104 .
  • Data inputs 708 corresponding to an action script 702 provide data to populate parameters of the commands of the action script 702 .
  • the added first action script 702 a is added to the ordered stack 704 of action scripts 702 as yet unpopulated by any data related to a corresponding data input 708 .
  • the ordered stack 704 of action scripts 702 represents the service the execution controller 108 requests 306 from the second application 112 .
  • the execution controller 108 stores the ordered stack 704 of action scripts 702 in the memory 206 , which for this purpose may optionally comprise a relatively fast memory such as a cache.
  • the first action script 702 a which is added to the ordered stack 704 of action scripts 702 is added last in an order 710 of the ordered stack 704 of action scripts 702 .
  • the ordered stack 704 of action scripts 702 is arranged according to the order 710 of the ordered stack 704 of action scripts 702 , from an action script 702 which is first in the order 710 , i.e. which has been added first, to an action script 702 which is last in the order 710 , i.e. which has been added last.
  • the order 710 of the action scripts 702 is the order in which the action scripts are executed at the second application 112 .
  • the service requested 306 from the second application 112 which is represented by the ordered stack 704 , thus comprises the commands, and any accompanying data, of each of the action scripts 702 in the ordered stack 704 of action scripts 702 , executed according to the order 710 .
  • the ordered stack 704 of action scripts 702 comprises a plurality of action scripts 702 .
  • a specific single action script 702 of the ordered stack 704 of action scripts 702 comprises a plurality of commands for execution at the second application 112 .
  • the method 600 proceeds to step 604 after step 602 .
  • the execution controller 108 provides the ordered stack 704 of action scripts 706 to the second application 112 for execution by the second application 112 .
  • the providing of the ordered stack 704 of action scripts 702 to the second application 112 by the execution controller 108 of step 604 of method 600 corresponds, generally speaking, to the execution controller 108 requesting the service from the second application of step 306 of method 300 .
  • the requesting the service from the second application 112 by the execution controller 108 of step 306 of method 300 comprises the providing of the ordered stack 704 of action scripts 702 by the execution controller 108 of step 604 of the method 600 .
  • the method 600 proceeds to step 606 after step 604 .
  • the ordered stack 704 of action scripts 702 is executed at the second application 112 according to the order 710 of the ordered stack 704 of action scripts 702 .
  • the executing of the ordered stack 704 of action scripts 702 at the second application 112 of step 606 of the method 600 corresponds, generally speaking, to the second application 112 performing the service of step 308 of the method 300 .
  • the second application 112 performing the service of step 308 of the method 300 comprises the executing of the ordered stack 704 of action scripts 702 at the second application 112 of step 606 of the method 600 .
  • the method 600 proceeds to step 608 after step 606 .
  • the added first action script 702 a is populated with data related to a first data input 708 a received at the first application 104 .
  • the added first action script 702 a is populated with data comprising data of the first data input 708 a received at the first application 104 .
  • the populating of step 608 occurs after the executing of step 606 , and the first data input 708 a is a data input to the second state 402 b of the first application 104 .
  • the first navigation input 706 a navigates the first application 104 from the first state 402 a to the second state 402 b , at which point the user enters the first data input 708 a .
  • the ordered stack 704 of action scripts 702 is executed by the second application 112 before the added first action script 702 a , corresponding to the first navigation input 706 a , is populated with data related to the first data input 708 a at the second state 402 b . It is only at step 608 that the added first action script 702 a is populated with data related to the first data input 708 a.
  • the populating of step 608 comprises inserting a value from the data input field 408 of the first application 104 into a command of a corresponding action script 702 .
  • the value of the data input field 408 comprises at least one of: a numerical value, or a textual value.
  • the populating of step 608 comprises inserting a data file provided by the user to the data input field 408 into a command of a corresponding action script 702 .
  • the data file optionally comprises at least one of: a cad file, a word processing file, an bitmap image file, a vector image file, or other suitable data file formats.
  • FIGS. 7A-7G are schematic diagrams which depict some aspects of an exemplary performance of one embodiment of the method 600 in further detail.
  • FIGS. 7A-7G depict the first application 104 and the execution controller 108 at certain successive moments in time during the performance of the method 600 .
  • FIG. 7A depicts the first application 104 and the execution controller 108 at a moment in time before the user provides the first navigation input 706 a to the first application 104 .
  • the first application 104 is in the first state 402 a
  • the execution controller 108 has maintained the ordered stack 704 of action scripts 702 that comprise any previously added and populated action scripts 702 .
  • the ordered stack 704 of action scripts 702 is shown containing a single, populated action script 702 , however, depending on the use of the first application 104 previously to FIG. 7A , many different configurations of the ordered stack 704 of action scripts 702 are possible.
  • the ordered stack 704 may comprise a plurality of action scripts 702 , some which have been populated by corresponding data inputs 708 and some that have never been populated with corresponding data inputs 708 .
  • not all action scripts 702 correspond to data inputs 708 .
  • step 608 does not need to occur for that particular action script 702 .
  • FIG. 7B depicts at a moment in time in which the user provides the first navigation input 706 a to the first state 402 a of the first application 104 .
  • FIG. 7C depicts a moment in time, subsequent to the moment depicted in FIG. 7B , in which the first unpopulated action script 702 a has been added to the ordered stack 704 , the executing of the ordered stack 704 of step 606 has occurred, and the first navigation input 706 a has navigated the first application 104 to the second state 402 b from the first state 402 a .
  • the executing of step 606 can occur at a moment of time subsequent to FIG. 7B and before FIG. 7C .
  • FIG. 7C depicts at a moment in time in which the user provides the first navigation input 706 a to the first state 402 a of the first application 104 .
  • FIG. 7C depicts a moment in time, subsequent to the moment depicted in FIG. 7B , in which the first unpopulated action script 70
  • FIG. 7D depicts a moment in time, subsequent to the moment depicted in FIG. 7C , in which the user provides the first data input 708 a to the second state 402 b of the first application 104 .
  • FIG. 7E depicts a moment in time, subsequent to the moment depicted in FIG. 7D , in which the first action script 702 a added to the ordered stack 704 has been populated by data related to the first data input 708 a.
  • FIG. 7E The moment in time depicted in FIG. 7E is similar in nature to the moment in time depicted in FIG. 7A . That is, the process of the embodiment of the method 600 started in FIG. 7A essentially begins again at FIG. 7E .
  • the first application 104 is in the second state 402 b , and the execution controller 108 is maintaining the ordered stack 704 having all the action scripts 702 that have been previously added to the ordered stack 704 .
  • FIG. 7F depicts a moments in time in which a second navigation input 706 b is provided to the first application 104 by the user; and in a similar way to FIG. 7C , FIG.
  • FIG. 7G depicts a moment in time, subsequent to the moment depicted in FIG. 7F , in which a second unpopulated action script 702 b has been added to the ordered stack 704 of action scripts 702 , and the first application 104 has navigated to a third state 402 c of the first application 104 . Furthermore, in the depicted embodiment, at some moment in time between the moments depicted in FIGS. 7F and 7G , the ordered stack 704 of action scripts 702 having the added unpopulated second action script 702 b and the populated first action script 702 a is executed at the second application 112 .
  • step 608 One benefit provided by the populating of step 608 occurring after the executing of step 606 is to correctly align the stateful execution of the first application 104 to the stateless execution of the second application 112 .
  • the previously added action script 702 needs to be populated with data to ensure that the state 402 of the second application 112 encountered by the newly added action script 702 corresponds correctly to the state 402 of the first application 104 at the time of the newly received corresponding navigation input 706 , i.e. having accounted for the previously received data input 708 .
  • the method 600 enables consistency between the stateful execution of the first application 104 and the stateless execution of the second application 112 .
  • the number of action scripts 702 in the ordered stack 704 of action scripts 702 increases.
  • Each state 402 of the first application 104 can correspond to an individual state 402 of the second application 112 or a plurality of states 402 of the second application 112 , giving a developer maximum flexibility in designing and developing the first application 112 .
  • the graphical user interface 106 of the first application 104 can be designed to correspond to functionality and data from various states 402 of the second application 112 .
  • the graphical user interface 106 of the first application 104 is not limited by, and does not necessarily need to conform to a particular sequence or configuration of states 402 of the user interface of the second application 112 .
  • the first state 402 a of the first application 104 comprises elements corresponding to at least one first state 402 of the second application 112
  • the second state 402 b of the first application 104 comprises elements corresponding to a plurality of second states 402 of the second application 112
  • FIG. 9 depicts one example of such an embodiment.
  • the first state 402 a of the first application 104 comprises elements that correspond to two different states 402 d,e of the second application 112
  • the second state 402 b of the first application 104 comprises elements that correspond to three different states 402 f,g,h of the second application 112 .
  • the executing of the first action script 702 a at the second application 112 by the execution controller 108 navigates from the at least one first state 402 of the second application 112 through all of the plurality of second states 402 of the second application 112 , as depicted in FIG. 9 .
  • the executing of the first action script 702 a visits each of the plurality of second states 402 of the second application 112 to gather information needed to show all of the elements of the second state 402 b of the first application 104 .
  • the second application 112 may require an input, e.g. data, responsive to a state 402 of the second application 112 visited during the execution of the action script 702 .
  • an input e.g. data
  • only one of the plurality of second states 402 of the second application 112 requires a responsive input, and this second state 402 requiring input is navigated to last in an order of a navigation sequence of the plurality of second states 402 of the second application 112 during the executing of the first action script 702 a . Navigating to the second state 402 requiring input last in the navigation sequence can prevent the action script 702 from encountering an error which would prevent the successful execution of the entire ordered stack 704 of action scripts 702 .
  • the ordered stack 704 of action scripts 702 comprises a plurality of action scripts 702
  • the executing of the ordered stack 704 of action scripts 702 of step 606 comprises executing all of the plurality of action scripts 702 in the ordered stack 704
  • the executing comprises: launching the second application 112 only at the beginning of the executing of the ordered stack 704 of action scripts 702 , and terminating the second application 112 upon completion of the executing of the ordered stack 704 of action scripts 702 .
  • the first application 104 comprises the graphical user interface 106 wherein the graphical user interface 106 is accessed in real-time by a human user
  • the second application 112 comprises a batch input functionality that processes batches of commands without requiring real-time access by a human user for each command.
  • the graphical user interface 106 of the first application 104 is displayed on the display 212 to the user, who then provides input using the input device 202 .
  • the second application 112 runs in a process which is not visible to the user, and is not displayed on the display, for example, in one embodiment, by using the batch input capability.
  • the first application 104 and the execution controller 108 are typically located in a portion of the memory 206 , and executed by a first processor 204 , which are at least partially local to the user.
  • the second application 112 in one embodiment, is typically located in a portion of the memory 206 , and executed by a second processor 204 , which is at least partially remote from the user.
  • the populating of step 608 can be triggered in different ways to provide different operating characteristics of the method 600 .
  • the populating of the added first action script 702 a is triggered in response to at least one of: receiving the first data input 708 a at the first application 104 , or receiving the second navigation input 706 b at the first application 104 .
  • the populating of the added first action script 702 a is triggered in response to the receiving of the first data input 708 a at the first application 104 .
  • the populating of the added first action script 702 a is triggered in response to the receiving the second navigation input 706 b at the first application 104 .
  • FIG. 8 depicts one embodiment in which the populating of the added first action script 702 a is triggered in response to the receiving of the second navigation input 706 b at the first application 104 .
  • the embodiment depicted in FIG. 8 is identical to that depicted in FIG. 7 , except that the populating of the added first action script 702 a is triggered in response to the receiving of the second navigation input 706 b , and thus the embodiment depicted in FIG. 8 differs from that depicted in FIG. 7 in that the added first action script 702 a remains unpopulated in FIGS. 8E-8F , whereas the added first action script 702 a is populated in FIGS. 7E-7F .
  • FIG. 8 depicts one embodiment in which the populating of the added first action script 702 a is triggered in response to the receiving of the second navigation input 706 b at the first application 104 .
  • the embodiment depicted in FIG. 8 is identical to that depicted in FIG. 7 , except that the populating of
  • FIG. 8G shows the added first action script being populated after the receiving of the second navigation input 706 b .
  • the added first action script 702 a is populated and the second action script 702 b is added to the ordered stack 704 after the receiving of the second navigation input 706 b and before a subsequent executing of the ordered stack 704 , the subsequent executing occurring, in the depicted embodiment, between the moments in time depicted by FIGS. 8F-8G .
  • the steps of the method 600 are repeated in a cyclic fashion. That is, in one embodiment, the method 600 comprises sequentially adding a plurality of action scripts 702 to the ordered stack 704 of action scripts 702 , each of the plurality of action scripts 702 corresponding to one of a plurality of navigation inputs 706 received at the first application 104 , and each time a new action script 702 is added, the method 600 comprises: leaving the newly-added action script 702 unpopulated by data input 708 , populating a most-previously added action script 702 with corresponding one of a plurality of data inputs 708 received at the first application 104 , and executing the entire ordered stack 704 of action scripts 702 at the second application 112 .
  • the second application 112 may be unable to completely execute the entire ordered stack 704 of action scripts 702 .
  • the second application 112 may generate an error message or an information message during the executing of the commands of the ordered stack 704 of action scripts 702 which may stop the executing if the message requires a responsive input.
  • the generated message optionally comprises at least one of: an error message, or an information message.
  • these messages are unanticipated by the action script 702 , there may not be necessary commands within the action script 702 to navigate the messages. The result may be that the service represented by the ordered stack 704 is not completely performed.
  • the method 600 accounts for the incomplete executing of the ordered stack 704 by the execution controller 108 removing the added unpopulated action script 702 from the ordered stack 704 in response to the incomplete executing at the second application 112 .
  • the execution controller 108 communicates with the first application 104 regarding the incomplete executing and removal of the added action script 702 from the ordered stack 704 .
  • the execution controller 108 also optionally is able to map the message encountered at the second application 112 to an appropriate communication with the first application 104 . For example, an error message encountered at a particular state 402 of the second application 112 can be mapped to a suitable error message at a corresponding state 402 of the first application 104 , and an information message can be mapped in a similar way.
  • the execution controller 108 can be programmed to distinguish between error messages and information messages. In the case of some information messages, the execution controller 108 can dynamically insert commands into to the action script 702 to overcome the information messages and promote complete execution of the ordered stack 704 .
  • a particular second state 402 of the plurality of second states 402 of the second application 112 comprises a data container 1002 having contents which are only partially available, i.e. visible, to the particular second state 402 .
  • a particular second state 402 of the second application 112 may comprise a first portion of a table from the database 116 , the complete table being completely visible only by visiting a plurality of second states 402 of the second application 112 .
  • FIG. 10 is a schematic diagram depicting one embodiment of a partially-visible data container 1002 of either the first application 104 or the second application 112 .
  • the execution controller 108 dynamically inserts browsing commands into the added action script 702 to retrieve the entire partially-visible data container 1002 .
  • a predetermined number of browsing commands are inserted into the added action script 702 by the execution controller 108 to retrieve portions of the data container 1002 not available to a particular second state 402 .
  • each of the predetermined number of browsing commands are evaluated to determine if they have returned new portions of the data container 1002 .
  • Evaluation of the results of the browsing commands optionally comprises examining a key of the data container 1002 returned by the browsing commands.
  • the data container 1002 is a database table
  • a key of the table has unique value for each row of the table, and as such, the data returned by the browsing commands can be examined to determine if new values of the key are returned. If each of the default number of browsing commands returns new portions of the data container 1002 , additional browsing commands are inserted into the added action script 702 by the execution controller 108 and then the entire ordered stack 704 of action scripts 702 is re-executed at the second application 112 . This process is repeated until all portions of the partially-visible data container 1002 are retrieved.
  • the minimum number of browsing commands required to retrieve the entire contents of the data container 1002 is determined, and this minimum number is stored by the execution controller 108 for future use by the execution controller 108 .
  • the storing of the minimum number associates the minimum number with at least one of: an identity of the partially-visible data container 1002 , or an identity of the particular second state 402 of the second application 112 having the partially-visible data container 1002 .
  • the predetermined number of browsing commands inserted into the added action script 702 by the execution controller 108 is the most-previously stored minimum number of browsing commands required to retrieve the entire contents of that partially-visible data container 1002 .
  • One benefit of retrieving the entire partially-visible data container 1002 by dynamically inserting browsing commands is that the need for back and forth adding and executing of browsing action scripts 702 c (shown in FIG. 11 ) can be eliminated in the case in which the user of the first application 104 decides to browse a data container in the first application 104 corresponding to the partially-visible data container 1002 of the second application 112 .
  • the entire data container has already been retrieved and the user can thus browse it in the first application 104 without back and forth adding and executing of browsing action scripts 702 c by the fist application 104 , execution controller 108 and second application 112 .
  • browsing commands to retrieve the entire contents of the partially-visible data container 1002 are only dynamically inserted into an action script 702 if that action script 702 is the last action script 702 in the order 710 of the ordered stack 704 of action scripts 702 .
  • action scripts 702 prior to the last action script 702 in the order 710 of the ordered stack 704 are not altered by the controller 108 to retrieve the entire partially-visible data container 1002 .
  • previously added browsing commands are removed from action scripts 702 other than the last action script 702 in the ordered stack 704 . Such browsing commands can be instead replaced with positioning commands if necessary.
  • the navigation input 706 received at the first application 102 may access a particular portion of a data container of the first state 402 a of the first application 104 , for example a particular entry in a large database table, which has a corresponding entry in a corresponding data container accessed by the second application 112 . Furthermore, accessing the corresponding portion in the corresponding data container in the second application 112 may require executing one or more browsing commands at the second application 112 . In one embodiment, instead of using browsing commands to access the corresponding particular portion in the second application 112 , the execution controller 108 inserts a positioning command into the added action script 702 to access the corresponding portion of the corresponding data container in the corresponding second state 402 of the second application 112 . Thus, the added action script 702 uses the positioning command to directly address the corresponding portion without using browsing commands to browse to the corresponding portion, which may be more efficient because a single positioning command may replace a plurality of browsing commands in certain scenarios.
  • FIG. 11 is a schematic diagram depicting one embodiment of a correspondence between browsing commands and positioning commands.
  • a plurality of browsing action scripts 702 c are equivalent to a single positioning action script 702 d , containing one positioning command.
  • the navigation input 706 received at the first application 104 comprises selecting a particular portion of a data container of the first state 402 a of the fist application 104
  • the method 600 comprises inserting a positioning command into the added action script 702 by the controller 108 to position a corresponding data container relative to a corresponding second state 402 of the second application 112 so that a portion of the corresponding data container corresponding to the selected portion of the data container in the first state 402 a of the first application 104 is a first available portion of the corresponding data container available to the corresponding second state 402 of the second application 112 .
  • any commands directed to the positioned data container in the corresponding second state 402 of the second application 112 may act directly on the first available portion (corresponding to the selected portion) without requiring further browsing commands in the second application 112 .
  • further embodiments are also possible, which are the result of variously combining steps, elements or embodiments described herein.
  • further embodiments may comprise an altered order of the steps of the methods 300 and 600 described herein, the result of which may be an embodiment particularly suited to a specific purpose or implementation.
  • embodiments of the methods 300 and 600 may include or exclude optional steps described herein.
  • embodiments of the methods 300 and 600 may be combined to create further embodiments. Additional embodiments, which would be discernable based on the description herein, are also possible.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Navigation (AREA)

Abstract

A computer-implemented method can include executing a first application in stateful manner, wherein the first application executes continuously while receiving a sequence of a plurality of inputs from a user; and, in response to each of at least some of the plurality of inputs at the first application, executing a second application in a stateless manner by an execution controller, wherein the stateless execution can include the execution controller instructing the second application to execute an ordered stack of action scripts, the second application initiating and executing the ordered stack of action scripts, and the second application terminating upon completion of the executing of the ordered stack of action scripts.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
The present application is a continuation of and claims priority to U.S. patent application Ser. No. 11/606,441 to Jens Boeckenhauer and Holger Bohle, filed Nov. 29, 2006, entitled “Method and System for Data Preparation and Communication Between Software Applications,” which is herein incorporated by reference in its entirety. U.S. patent application Ser. No. 11/606,441 claims priority to U.S. Provisional Patent Application No. 60/848,532 to Jens Boeckenhauer and Holger Bohle, filed Sep. 28, 2006, entitled “Data Preparation For Stateless Backend Calls from Stateful Frontend Applications,” which is herein incorporated by reference in its entirety.
BACKGROUND INFORMATION
Services provided by a computing system may include any type of functionality provided by the system and may be implemented at least in part by software applications of the system. For example, a particular service may include a business functionality and be implemented by an application which includes business logic to perform the business functionality. Generally speaking, legacy applications exist which have become outdated in some aspect, but which may implement services which are still useful. For example, the user interface of a legacy application may have become outdated, but the service it implements may still be useful. One approach to using the services of legacy applications includes developing a new application which reuses the services of the legacy application but which updates the outdated aspects.
One problem associated with this approach is that there may be difficulties in communicating between the new application and the legacy application. For example, the new application and the legacy application may be executed by the computing system according to different contexts such as, for example, a specific relative time and duration of execution. Thus, data which is dependent on a context or state of the new or legacy application may be incorrectly communicated between the new and legacy applications.
BRIEF DESCRIPTION OF THE DRAWINGS
So that features of the present invention can be understood in detail, a description of the invention can be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only particular embodiments of the invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
FIG. 1 is a schematic diagram depicting one embodiment of a software architecture.
FIG. 2 is a schematic diagram depicting one embodiment of a computing environment.
FIG. 3 is a flow chart depicting a schematic representation of one embodiment of a method.
FIG. 4 is a schematic diagram depicting one embodiment of a graphical user interface of a first application.
FIG. 5 is a schematic diagram depicting another representation of one embodiment of the method depicted in FIG. 3.
FIG. 6 is a flow chart depicting a schematic representation of one embodiment of another method.
FIGS. 7A-7G are schematic diagrams depicting another representation of one embodiment of the method depicted in FIG. 6.
FIGS. 8A-8G are schematic diagrams depicting yet another representation of one embodiment of the method depicted in FIG. 6.
FIG. 9 is a schematic diagram depicting one embodiment of a correspondence between states of the first application and states of a second application.
FIG. 10 is a schematic diagram depicting one embodiment of a partially-visible data container.
FIG. 11 is a schematic diagram depicting one embodiment of a correspondence between browsing scripts and positioning scripts.
DETAILED DESCRIPTION
An embodiment of a computer-implemented method can include executing a first application in stateful manner, wherein the first application executes continuously while receiving a sequence of a plurality of inputs from a user; and, in response to each of at least some of the plurality of inputs at the first application, executing a second application in a stateless manner by an execution controller, wherein the stateless execution can include the execution controller instructing the second application to execute an ordered stack of action scripts, the second application initiating and executing the ordered stack of action scripts, and the second application terminating upon completion of the executing of the ordered stack of action scripts.
Embodiments are related to data preparation and communication between software applications. FIG. 1 depicts one embodiment of a software architecture 100. The depicted exemplary embodiment of the software architecture 100 comprises a plurality of software components 102, including a first application 104, an execution controller 108, and a second application 112. The first application 104 is capable of receiving input from a user, and communicating with the execution controller 108. The execution controller 108 is capable of communicating with both the first application 104 and the second application 112. The second application 104 is capable of performing a service. In one embodiment, the software architecture 100 includes a database 116, and the performing of the service by the second application 112 includes accessing the database 116. In one embodiment, the execution controller 108 is capable of accessing the database 116. Other embodiments of the software architecture 100 also exist.
In an exemplary scenario, the first application 104 is a relatively newer application and the second application 112 is a relatively older application, e.g., a legacy application. For example, the first application 104 can be developed to update some undesirable or outmoded aspect of the second application 112. In one embodiment, the first application 104 comprises a graphical user interface 106 that is updated user interface relative to a user interface (not shown) of the second application 112. In one embodiment, the software architecture 100 depicted in FIG. 1 corresponds to the software architecture described in U.S. patent application Ser. No. 11/441,463, to Stefan Elfner et al., filed Apr. 25, 2006, entitled “Mapping a New User Interface onto an Existing User Interface,” which is hereby incorporated by reference in its entirety.
The software architecture 100 runs in, and is part of, a computing environment 200, an exemplary embodiment of which is depicted in FIG. 2. The computing environment 200 comprises an input device 202, a processor 204, a memory 206, a communication line 208 and a display 212. The memory 206 further comprises data 210 and the various software components 102, which are stored in the memory 206 at least at some moment in time. The input device 202 optionally comprises at least one of: a keyboard, a mouse, a voice activated controller, an optical controller, an infrared controller, or other suitable input device. The memory 206 optionally comprises at least one of: a random access memory, a disk storage memory, or other suitable memory. The display 212 optionally comprises at least one of: a monitor, a television, a video projector, or other suitable display device. The software components 102 comprise computer program instructions which may be accessed and executed by the processor 204. The software components 102 are implemented in any suitable software language such as, for example, Java, ABAP, C, C++, etc. The data 210 optionally comprises data which is accessible by or integral to the database 116.
The memory 206, processor 204 and input device 202 are connected together and communicate with each other by means of the communication line 208. In one embodiment, the communication line 208 comprises a system bus, and the computing environment 200 comprises a single computer. In another embodiment, the communication line 208 comprises a network element, and the computing environment 200 comprises a distributed computing environment. In one embodiment in which the computing environment 200 is distributed, the memory 206, processor 204 and input device 202 are optionally distributed across different locations. In one embodiment in which the computing environment 200 is distributed, the computing environment 200 optionally comprises a plurality of some or all of the memory 206, the processor 204 and the input device 202. Other configurations of the computing environment 200 are also possible.
The software components comprise computer program instructions, which when executed by the processor 304, enable the performance of a method 300 (shown in FIG. 3) of using the software architecture 100 and a method 600 (shown in FIG. 6) of preparing data for communication between the first and second applications 104, 112 and communicating between the first and second applications 104, 112. In one embodiment, a computer-readable medium comprises the computer program instructions which enable the performance of the methods 300, 600. In one embodiment, a system comprises means to perform each of the steps of the methods 300, 600. For example, in one embodiment, the means to perform each of the steps of the methods 300, 600 comprise elements of the computing environment 200.
FIG. 3 is a flow chart depicting a schematic representation of one embodiment of the method 300 of using the software architecture 100. According to the illustrated embodiment, at step 302 the user provides an input to the first application 104. The input to the first application 104 typically comprises an input to the graphical user interface 106 of the first application 104. At step 304 the first application 104 then invokes a service through the execution controller 108, the service being related to the received user input. At step 306 the execution controller 108 then requests the invoked service from the second application 112. At step 308 the second application 112 then performs the requested service. At step 310 the second application 112 returns a result of the service, optionally including any output data, to the execution controller 108. At step 312 the execution controller 108 then communicates with the first application 104 regarding the result, optionally including communicating the output data.
The performance of the method 300 typically results in a change of state 402 (shown in FIG. 4) of the first application 104. The state 402 of the software component 102, e.g. the first or second applications 104, 112, is the operational status of the component 102 at a particular moment in time. The state 402 of the component 102 includes the status of both the user interface and other elements of the component 102 not directly presented to the user. In one embodiment in which the first application 104 comprises the graphical user interface 106, a particular state 402 of the first application 104 comprises the particular visual configuration of the graphical user interface 106 presented to the user. For example, the graphical user interface 106 comprises elements which are visible to the user, and a state 402 of the first application 104 thus comprises a specific configuration of the visible elements of the graphical user interface 106.
In one embodiment, the graphical user interface 106 of the first application 104 comprises graphical elements including at least one of: at least one button 404 (shown in FIG. 4), or at least one data display 406 (shown in FIG. 4). In such an embodiment, the state 402 of the first application 104 comprises a specific visual configuration of any buttons and data displays of the graphical user interface 106. FIG. 4 depicts one embodiment of the first application 104 having the graphical user interface 106 having the at least one button 404 and the at least one data display 406.
The at least one button 404, as referred to herein, refers to any element of the graphical user interface 106 which can accept an input from the user to trigger an action. The at least one button 404 may graphically resemble an actual button, but may also appear as other types of controls or visual elements, such as, e.g., switches, selectors, radio buttons, pull-down boxes, menus, menu items, etc. The action, as referred to herein, and also as referred to as a navigation action or a navigation, triggered by the at least one button 404 navigates the first application 104 between states 402. For example, a specific action, i.e., a specific navigation, triggered by a specific button 404 may navigate the first application 104 between a first state 402 a of the first application 104 and a second state 402 b of the first application 104. The first and second states 402 a,b can be different states 402 or the same states 402. Different states 402 may appear visually different to the user, or may appear visually the same or similar to the user. Two states 402 which are the same appear visually the same to the user. A navigation between the first and second states 402 a,b which are the same states 402 is also referred to as a trivial navigation.
The at least one data display 406, as referred to herein, refers to any element which displays data to the user as part of a service being performed. In one embodiment, the data displayed to the user by the at least one data display 406 comprises data retrieved from the database 116. For example, in one embodiment, the data display 406 comprises a database table. The at least one data display 406 can also optionally accept input from the user. For example, in one embodiment, the at least one data display 406 comprises a data input field 408 which is capable of accepting data input from a user. The data input optionally comprises at least one of: numerical data, textual data, or a data file. Input to the at least one data display 406 can provide new data to the first application 104 and change existing data being displayed by the first application 104.
FIG. 5 is flow diagram depicting another schematic representation of one embodiment of the method 300. The depiction of FIG. 5 illustrates the method 300 by graphically relating each step of the method 300 according to which software component 102 the step involves. FIG. 5 also shows additional aspects of the method 300 by which, in one embodiment, the first application 104 is executed in a stateful manner and the second application is executed in a stateless manner. For example, in one embodiment, the first application 104 individually invokes 304, through the execution controller 108, a plurality of services from the second application 112 over a period of time. As depicted in FIG. 5, the first application 104 executes in a stateful manner because it is kept running throughout the process of invoking 304 the plurality of services, and as such has a corresponding state 402 at each moment in time. By contrast, the second application 112 executes in a stateless manner wherein the second application 112 is launched at the beginning of each service request 306, performs 308 the service, and then is terminated upon completing each requested service. The second application 112 is not kept running between successive service requests 306, it is instead terminated upon completion of each request 306 and before responding to another request 306. Thus, the second application 112 is executed in a stateless manner because the second application 112 is not kept running, and therefore has no state, between the end of the performance 308 of one service and a subsequent service request 306.
In one embodiment, a method 600 of preparing data for communication between the first and second applications 104, 112, and of communicating between the first and second applications 104, 112, is provided. FIG. 6 is a flow chart depicting a schematic representation of one embodiment of the method 600. FIGS. 7A-G are schematic diagrams which also depict some aspects of an exemplary performance of one embodiment of the method 600 in further detail. In one embodiment, the method 600 prepares data, and communicates, to enable the first application 104 to execute in a stateful manner and the second application 112 to execute in a stateless manner.
In the depicted embodiment, the method 600 begins at step 602. At step 602, a first action script 702 a is added to an ordered stack 704 of action scripts 702 which is maintained by the execution controller 108. Each action script 702 of the ordered stack 704 of action scripts 702 comprises at least one command for execution at the second application 112. The at least one command of each action script 702 corresponds to a navigation input 706 received at the first application 104. Inputs received at the first application 104 include navigation inputs 706 and data inputs 708. As discussed above, navigation inputs 706 change the state 402 of the first application 104 and are received by the at least one button 404; and data inputs 708 provide data to the first application 104 or change data being displayed by the first application 104, and are received by the at least one data display 406. The at least one command of the action script 702 performs an action at the second application 112 that is a translation of the action at the first application 104 which is triggered by the navigation input 706. In this way, the inputs to the first application 104 are mapped to commands at the second application 112 in the form of action scripts 704 maintained by the execution controller 108.
At step 602, the first action script 702 a added to the ordered stack 704 of action scripts 702 corresponds to a first navigation input 706 a received at the first application 104. Action scripts 702 can also correspond to an data input 708 received at the first application 104. Data inputs 708 corresponding to an action script 702 provide data to populate parameters of the commands of the action script 702. However, at step 602 the added first action script 702 a is added to the ordered stack 704 of action scripts 702 as yet unpopulated by any data related to a corresponding data input 708.
The ordered stack 704 of action scripts 702 represents the service the execution controller 108 requests 306 from the second application 112. The execution controller 108 stores the ordered stack 704 of action scripts 702 in the memory 206, which for this purpose may optionally comprise a relatively fast memory such as a cache.
At step 602, the first action script 702 a which is added to the ordered stack 704 of action scripts 702 is added last in an order 710 of the ordered stack 704 of action scripts 702. The ordered stack 704 of action scripts 702 is arranged according to the order 710 of the ordered stack 704 of action scripts 702, from an action script 702 which is first in the order 710, i.e. which has been added first, to an action script 702 which is last in the order 710, i.e. which has been added last. The order 710 of the action scripts 702 is the order in which the action scripts are executed at the second application 112. The service requested 306 from the second application 112, which is represented by the ordered stack 704, thus comprises the commands, and any accompanying data, of each of the action scripts 702 in the ordered stack 704 of action scripts 702, executed according to the order 710.
In one embodiment, the ordered stack 704 of action scripts 702 comprises a plurality of action scripts 702. In one embodiment, a specific single action script 702 of the ordered stack 704 of action scripts 702 comprises a plurality of commands for execution at the second application 112.
In the embodiment depicted in FIG. 6, the method 600 proceeds to step 604 after step 602. At step 604, the execution controller 108 provides the ordered stack 704 of action scripts 706 to the second application 112 for execution by the second application 112. The providing of the ordered stack 704 of action scripts 702 to the second application 112 by the execution controller 108 of step 604 of method 600 corresponds, generally speaking, to the execution controller 108 requesting the service from the second application of step 306 of method 300. In one embodiment, the requesting the service from the second application 112 by the execution controller 108 of step 306 of method 300 comprises the providing of the ordered stack 704 of action scripts 702 by the execution controller 108 of step 604 of the method 600.
In the embodiment depicted in FIG. 6, the method 600 proceeds to step 606 after step 604. At step 606, the ordered stack 704 of action scripts 702, having the unpopulated added first action script 702 a, is executed at the second application 112 according to the order 710 of the ordered stack 704 of action scripts 702. The executing of the ordered stack 704 of action scripts 702 at the second application 112 of step 606 of the method 600 corresponds, generally speaking, to the second application 112 performing the service of step 308 of the method 300. In one embodiment, the second application 112 performing the service of step 308 of the method 300 comprises the executing of the ordered stack 704 of action scripts 702 at the second application 112 of step 606 of the method 600.
In the embodiment depicted in FIG. 5, the method 600 proceeds to step 608 after step 606. At step 608, the added first action script 702 a is populated with data related to a first data input 708 a received at the first application 104. In one embodiment, the added first action script 702 a is populated with data comprising data of the first data input 708 a received at the first application 104. The populating of step 608 occurs after the executing of step 606, and the first data input 708 a is a data input to the second state 402 b of the first application 104. That is, the first navigation input 706 a navigates the first application 104 from the first state 402 a to the second state 402 b, at which point the user enters the first data input 708 a. However, according to the method 600, the ordered stack 704 of action scripts 702 is executed by the second application 112 before the added first action script 702 a, corresponding to the first navigation input 706 a, is populated with data related to the first data input 708 a at the second state 402 b. It is only at step 608 that the added first action script 702 a is populated with data related to the first data input 708 a.
In one embodiment, the populating of step 608 comprises inserting a value from the data input field 408 of the first application 104 into a command of a corresponding action script 702. In one embodiment, the value of the data input field 408 comprises at least one of: a numerical value, or a textual value. In one embodiment, the populating of step 608 comprises inserting a data file provided by the user to the data input field 408 into a command of a corresponding action script 702. The data file optionally comprises at least one of: a cad file, a word processing file, an bitmap image file, a vector image file, or other suitable data file formats.
FIGS. 7A-7G are schematic diagrams which depict some aspects of an exemplary performance of one embodiment of the method 600 in further detail. FIGS. 7A-7G depict the first application 104 and the execution controller 108 at certain successive moments in time during the performance of the method 600. FIG. 7A depicts the first application 104 and the execution controller 108 at a moment in time before the user provides the first navigation input 706 a to the first application 104. In FIG. 7A, the first application 104 is in the first state 402 a, and the execution controller 108 has maintained the ordered stack 704 of action scripts 702 that comprise any previously added and populated action scripts 702. In FIG. 7A, the ordered stack 704 of action scripts 702 is shown containing a single, populated action script 702, however, depending on the use of the first application 104 previously to FIG. 7A, many different configurations of the ordered stack 704 of action scripts 702 are possible. For example, the ordered stack 704 may comprise a plurality of action scripts 702, some which have been populated by corresponding data inputs 708 and some that have never been populated with corresponding data inputs 708. For example, not all action scripts 702 correspond to data inputs 708. If there are no data inputs 708 corresponding to a particular action script 702, for example if the user navigated to a particular state 402 of the first application 104, but did not then provide a data input 708 to that particular state 402, and instead, for example, navigated to a different state 402, then the populating of step 608 does not need to occur for that particular action script 702.
FIG. 7B depicts at a moment in time in which the user provides the first navigation input 706 a to the first state 402 a of the first application 104. FIG. 7C depicts a moment in time, subsequent to the moment depicted in FIG. 7B, in which the first unpopulated action script 702 a has been added to the ordered stack 704, the executing of the ordered stack 704 of step 606 has occurred, and the first navigation input 706 a has navigated the first application 104 to the second state 402 b from the first state 402 a. In the embodiment depicted in FIGS. 7A-G, the executing of step 606 can occur at a moment of time subsequent to FIG. 7B and before FIG. 7C. FIG. 7D depicts a moment in time, subsequent to the moment depicted in FIG. 7C, in which the user provides the first data input 708 a to the second state 402 b of the first application 104. FIG. 7E depicts a moment in time, subsequent to the moment depicted in FIG. 7D, in which the first action script 702 a added to the ordered stack 704 has been populated by data related to the first data input 708 a.
The moment in time depicted in FIG. 7E is similar in nature to the moment in time depicted in FIG. 7A. That is, the process of the embodiment of the method 600 started in FIG. 7A essentially begins again at FIG. 7E. At the moment in time depicted in FIG. 7E, the first application 104 is in the second state 402 b, and the execution controller 108 is maintaining the ordered stack 704 having all the action scripts 702 that have been previously added to the ordered stack 704. In a similar way to FIG. 7B, FIG. 7F depicts a moments in time in which a second navigation input 706 b is provided to the first application 104 by the user; and in a similar way to FIG. 7C, FIG. 7G depicts a moment in time, subsequent to the moment depicted in FIG. 7F, in which a second unpopulated action script 702 b has been added to the ordered stack 704 of action scripts 702, and the first application 104 has navigated to a third state 402 c of the first application 104. Furthermore, in the depicted embodiment, at some moment in time between the moments depicted in FIGS. 7F and 7G, the ordered stack 704 of action scripts 702 having the added unpopulated second action script 702 b and the populated first action script 702 a is executed at the second application 112.
One benefit provided by the populating of step 608 occurring after the executing of step 606 is to correctly align the stateful execution of the first application 104 to the stateless execution of the second application 112. For example, with each action script 702 added to the ordered stack 704 of action scripts 702, the previously added action script 702 needs to be populated with data to ensure that the state 402 of the second application 112 encountered by the newly added action script 702 corresponds correctly to the state 402 of the first application 104 at the time of the newly received corresponding navigation input 706, i.e. having accounted for the previously received data input 708. In this way, the method 600 enables consistency between the stateful execution of the first application 104 and the stateless execution of the second application 112.
In one embodiment, with each successive navigation input 708 received at the first application 104, the number of action scripts 702 in the ordered stack 704 of action scripts 702 increases.
Each state 402 of the first application 104 can correspond to an individual state 402 of the second application 112 or a plurality of states 402 of the second application 112, giving a developer maximum flexibility in designing and developing the first application 112. For example, in a scenario in which the first application 104 is developed to update a user interface of the second application 112 but retain, at least in part, the business logic and associated business functionality of the second application 112, the graphical user interface 106 of the first application 104 can be designed to correspond to functionality and data from various states 402 of the second application 112. In this way, the graphical user interface 106 of the first application 104 is not limited by, and does not necessarily need to conform to a particular sequence or configuration of states 402 of the user interface of the second application 112.
In one embodiment, the first state 402 a of the first application 104 comprises elements corresponding to at least one first state 402 of the second application 112, and the second state 402 b of the first application 104 comprises elements corresponding to a plurality of second states 402 of the second application 112. FIG. 9 depicts one example of such an embodiment. In exemplary embodiment depicted in FIG. 9, the first state 402 a of the first application 104 comprises elements that correspond to two different states 402 d,e of the second application 112, and the second state 402 b of the first application 104 comprises elements that correspond to three different states 402 f,g,h of the second application 112. Although the exemplary embodiment depicted in FIG. 9 illustrates both the first and second states 402 a,b of the first application 104 as each comprising elements from a plurality of states 402 of the second application 112, either the first or second state 402 a,b of the first application 104 may instead comprise elements from only one state 402 of the second application 112.
In embodiments in which the first state 402 a of the first application 104 comprise elements corresponding to at least one first state 402 of the second application 112, and the second state 402 b of the first application 104 comprises elements corresponds to a plurality of second states of 402 the second application 112, the executing of the first action script 702 a at the second application 112 by the execution controller 108 navigates from the at least one first state 402 of the second application 112 through all of the plurality of second states 402 of the second application 112, as depicted in FIG. 9. In this way, the executing of the first action script 702 a visits each of the plurality of second states 402 of the second application 112 to gather information needed to show all of the elements of the second state 402 b of the first application 104.
The second application 112 may require an input, e.g. data, responsive to a state 402 of the second application 112 visited during the execution of the action script 702. In one embodiment, only one of the plurality of second states 402 of the second application 112 requires a responsive input, and this second state 402 requiring input is navigated to last in an order of a navigation sequence of the plurality of second states 402 of the second application 112 during the executing of the first action script 702 a. Navigating to the second state 402 requiring input last in the navigation sequence can prevent the action script 702 from encountering an error which would prevent the successful execution of the entire ordered stack 704 of action scripts 702.
In one embodiment, the ordered stack 704 of action scripts 702 comprises a plurality of action scripts 702, and the executing of the ordered stack 704 of action scripts 702 of step 606 comprises executing all of the plurality of action scripts 702 in the ordered stack 704, and the executing comprises: launching the second application 112 only at the beginning of the executing of the ordered stack 704 of action scripts 702, and terminating the second application 112 upon completion of the executing of the ordered stack 704 of action scripts 702.
In one embodiment. the first application 104 comprises the graphical user interface 106 wherein the graphical user interface 106 is accessed in real-time by a human user, and the second application 112 comprises a batch input functionality that processes batches of commands without requiring real-time access by a human user for each command. For example, in one such embodiment, the graphical user interface 106 of the first application 104 is displayed on the display 212 to the user, who then provides input using the input device 202. The second application 112 runs in a process which is not visible to the user, and is not displayed on the display, for example, in one embodiment, by using the batch input capability. The first application 104 and the execution controller 108, in one embodiment, are typically located in a portion of the memory 206, and executed by a first processor 204, which are at least partially local to the user. The second application 112, in one embodiment, is typically located in a portion of the memory 206, and executed by a second processor 204, which is at least partially remote from the user.
The populating of step 608 can be triggered in different ways to provide different operating characteristics of the method 600. In one embodiment, the populating of the added first action script 702 a is triggered in response to at least one of: receiving the first data input 708 a at the first application 104, or receiving the second navigation input 706 b at the first application 104. For example, in the embodiment depicted in FIG. 7, the populating of the added first action script 702 a is triggered in response to the receiving of the first data input 708 a at the first application 104. In other embodiments, however, the populating of the added first action script 702 a is triggered in response to the receiving the second navigation input 706 b at the first application 104. FIG. 8 depicts one embodiment in which the populating of the added first action script 702 a is triggered in response to the receiving of the second navigation input 706 b at the first application 104. The embodiment depicted in FIG. 8 is identical to that depicted in FIG. 7, except that the populating of the added first action script 702 a is triggered in response to the receiving of the second navigation input 706 b, and thus the embodiment depicted in FIG. 8 differs from that depicted in FIG. 7 in that the added first action script 702 a remains unpopulated in FIGS. 8E-8F, whereas the added first action script 702 a is populated in FIGS. 7E-7F. FIG. 8G shows the added first action script being populated after the receiving of the second navigation input 706 b. In the embodiment depicted in FIG. 8, the added first action script 702 a is populated and the second action script 702 b is added to the ordered stack 704 after the receiving of the second navigation input 706 b and before a subsequent executing of the ordered stack 704, the subsequent executing occurring, in the depicted embodiment, between the moments in time depicted by FIGS. 8F-8G.
In one embodiment, the steps of the method 600 are repeated in a cyclic fashion. That is, in one embodiment, the method 600 comprises sequentially adding a plurality of action scripts 702 to the ordered stack 704 of action scripts 702, each of the plurality of action scripts 702 corresponding to one of a plurality of navigation inputs 706 received at the first application 104, and each time a new action script 702 is added, the method 600 comprises: leaving the newly-added action script 702 unpopulated by data input 708, populating a most-previously added action script 702 with corresponding one of a plurality of data inputs 708 received at the first application 104, and executing the entire ordered stack 704 of action scripts 702 at the second application 112.
In some cases, the second application 112 may be unable to completely execute the entire ordered stack 704 of action scripts 702. For example, the second application 112 may generate an error message or an information message during the executing of the commands of the ordered stack 704 of action scripts 702 which may stop the executing if the message requires a responsive input. The generated message optionally comprises at least one of: an error message, or an information message. In a scenario in which these messages are unanticipated by the action script 702, there may not be necessary commands within the action script 702 to navigate the messages. The result may be that the service represented by the ordered stack 704 is not completely performed.
In one embodiment, the method 600 accounts for the incomplete executing of the ordered stack 704 by the execution controller 108 removing the added unpopulated action script 702 from the ordered stack 704 in response to the incomplete executing at the second application 112. The execution controller 108 communicates with the first application 104 regarding the incomplete executing and removal of the added action script 702 from the ordered stack 704. The execution controller 108 also optionally is able to map the message encountered at the second application 112 to an appropriate communication with the first application 104. For example, an error message encountered at a particular state 402 of the second application 112 can be mapped to a suitable error message at a corresponding state 402 of the first application 104, and an information message can be mapped in a similar way. Additionally, the execution controller 108 can be programmed to distinguish between error messages and information messages. In the case of some information messages, the execution controller 108 can dynamically insert commands into to the action script 702 to overcome the information messages and promote complete execution of the ordered stack 704.
In one embodiment, a particular second state 402 of the plurality of second states 402 of the second application 112 comprises a data container 1002 having contents which are only partially available, i.e. visible, to the particular second state 402. For example, a particular second state 402 of the second application 112 may comprise a first portion of a table from the database 116, the complete table being completely visible only by visiting a plurality of second states 402 of the second application 112. FIG. 10 is a schematic diagram depicting one embodiment of a partially-visible data container 1002 of either the first application 104 or the second application 112.
In one embodiment of the method 600, the execution controller 108 dynamically inserts browsing commands into the added action script 702 to retrieve the entire partially-visible data container 1002. For example, in one embodiment, a predetermined number of browsing commands are inserted into the added action script 702 by the execution controller 108 to retrieve portions of the data container 1002 not available to a particular second state 402. Because it sometimes cannot be known in advance how large the partially-visible data container 1002 is, in one embodiment each of the predetermined number of browsing commands are evaluated to determine if they have returned new portions of the data container 1002. Evaluation of the results of the browsing commands optionally comprises examining a key of the data container 1002 returned by the browsing commands. For example, if the data container 1002 is a database table, a key of the table has unique value for each row of the table, and as such, the data returned by the browsing commands can be examined to determine if new values of the key are returned. If each of the default number of browsing commands returns new portions of the data container 1002, additional browsing commands are inserted into the added action script 702 by the execution controller 108 and then the entire ordered stack 704 of action scripts 702 is re-executed at the second application 112. This process is repeated until all portions of the partially-visible data container 1002 are retrieved.
In one embodiment, the minimum number of browsing commands required to retrieve the entire contents of the data container 1002 is determined, and this minimum number is stored by the execution controller 108 for future use by the execution controller 108. Thus, a subsequent access of the partially-visible data container 1002 may be more efficient and may require less trial and error determination of the correct number of browsing commands. The storing of the minimum number associates the minimum number with at least one of: an identity of the partially-visible data container 1002, or an identity of the particular second state 402 of the second application 112 having the partially-visible data container 1002. In one embodiment, the predetermined number of browsing commands inserted into the added action script 702 by the execution controller 108 is the most-previously stored minimum number of browsing commands required to retrieve the entire contents of that partially-visible data container 1002.
One benefit of retrieving the entire partially-visible data container 1002 by dynamically inserting browsing commands is that the need for back and forth adding and executing of browsing action scripts 702 c (shown in FIG. 11) can be eliminated in the case in which the user of the first application 104 decides to browse a data container in the first application 104 corresponding to the partially-visible data container 1002 of the second application 112. In such a case, the entire data container has already been retrieved and the user can thus browse it in the first application 104 without back and forth adding and executing of browsing action scripts 702 c by the fist application 104, execution controller 108 and second application 112.
In one embodiment, browsing commands to retrieve the entire contents of the partially-visible data container 1002 are only dynamically inserted into an action script 702 if that action script 702 is the last action script 702 in the order 710 of the ordered stack 704 of action scripts 702. In such an embodiment, action scripts 702 prior to the last action script 702 in the order 710 of the ordered stack 704 are not altered by the controller 108 to retrieve the entire partially-visible data container 1002. Furthermore, in one embodiment, previously added browsing commands are removed from action scripts 702 other than the last action script 702 in the ordered stack 704. Such browsing commands can be instead replaced with positioning commands if necessary.
The navigation input 706 received at the first application 102 may access a particular portion of a data container of the first state 402 a of the first application 104, for example a particular entry in a large database table, which has a corresponding entry in a corresponding data container accessed by the second application 112. Furthermore, accessing the corresponding portion in the corresponding data container in the second application 112 may require executing one or more browsing commands at the second application 112. In one embodiment, instead of using browsing commands to access the corresponding particular portion in the second application 112, the execution controller 108 inserts a positioning command into the added action script 702 to access the corresponding portion of the corresponding data container in the corresponding second state 402 of the second application 112. Thus, the added action script 702 uses the positioning command to directly address the corresponding portion without using browsing commands to browse to the corresponding portion, which may be more efficient because a single positioning command may replace a plurality of browsing commands in certain scenarios.
FIG. 11 is a schematic diagram depicting one embodiment of a correspondence between browsing commands and positioning commands. In the depicted embodiment, a plurality of browsing action scripts 702 c, each containing at least one browsing command, are equivalent to a single positioning action script 702 d, containing one positioning command.
In one embodiment, the navigation input 706 received at the first application 104 comprises selecting a particular portion of a data container of the first state 402 a of the fist application 104, and the method 600 comprises inserting a positioning command into the added action script 702 by the controller 108 to position a corresponding data container relative to a corresponding second state 402 of the second application 112 so that a portion of the corresponding data container corresponding to the selected portion of the data container in the first state 402 a of the first application 104 is a first available portion of the corresponding data container available to the corresponding second state 402 of the second application 112. Subsequently, any commands directed to the positioned data container in the corresponding second state 402 of the second application 112 may act directly on the first available portion (corresponding to the selected portion) without requiring further browsing commands in the second application 112.
Further embodiments are also possible, which are the result of variously combining steps, elements or embodiments described herein. For example, further embodiments may comprise an altered order of the steps of the methods 300 and 600 described herein, the result of which may be an embodiment particularly suited to a specific purpose or implementation. In another example, embodiments of the methods 300 and 600 may include or exclude optional steps described herein. In yet another example, embodiments of the methods 300 and 600 may be combined to create further embodiments. Additional embodiments, which would be discernable based on the description herein, are also possible.

Claims (4)

1. A computer-implemented method, comprising:
executing a first application in stateful manner, wherein the first application executes continuously while receiving a sequence of a plurality of inputs from a user;
in response to each of at least some of the plurality of inputs at the first application:
executing a second application in a stateless manner by an execution controller,
wherein the stateless execution includes the execution controller instructing the second application to execute an ordered stack of action scripts, the second application initiating and executing the ordered stack of action scripts, and the second application terminating upon completion of the executing of the ordered stack of action scripts;
in response to receiving a navigation input at the first application from the user:
adding a new action script at the end of the ordered stack of action scripts by the execution controller, wherein the added new action script includes at least one command capable of receiving at least one data parameter, the data parameter unpopulated by data in the added action script, and
executing the ordered stack of action scripts, having the added unpopulated action script, by the second application in the stateless manner; and
in response to receiving a data input at the first application from the user:
populating the data parameter of the command of the previously added unpopulated action script of the ordered stack of action scripts with data based on the received data input, and
executing the ordered stack of action scripts having the populated action script by the second application in the stateless manner.
2. A computer-implemented method, comprising:
executing a first application in stateful manner, wherein the first application executes continuously while receiving a sequence of a plurality of inputs from a user;
in response to each of at least some of the plurality of inputs at the first application, executing a second application in a stateless manner by an execution controller, wherein the stateless execution includes the execution controller instructing the second application to execute an ordered stack of action scripts, the second application initiating and executing the ordered stack of action scripts, and the second application terminating upon completion of the executing of the ordered stack of action scripts;
receiving a first navigation input at the first application from the user;
adding a first new action script, unpopulated by data parameters, at the end of the ordered stack of action scripts by the execution controller;
executing the ordered stack of action scripts having the unpopulated first action script by the second application in the stateless manner;
receiving a data input at the first application from the user;
populating data parameters of the added first action script in the ordered stack of action scripts based on the received data input;
receiving a second navigation input at the first application from the user;
adding a second new action script, unpopulated by data parameters, at the end of the ordered stack of action scripts by the execution controller; and
executing the ordered stack of action scripts, having the populated first action script and the unpopulated second action script, by the second application in the stateless manner.
3. A computer-readable storage medium having program instructions that, when executed by a processor, implement a method, the method comprising:
executing a first application in stateful manner, wherein the first application executes continuously while receiving a sequence of a plurality of inputs from a user;
in response to each of at least some of the plurality of inputs at the first application, executing a second application in a stateless manner by an execution controller, wherein the stateless execution includes the execution controller instructing the second application to execute an ordered stack of action scripts, the second application initiating and executing the ordered stack of action scripts, and the second application terminating upon completion of the executing of the ordered stack of action scripts;
in response to receiving a navigation input at the first application from the user:
adding a new action script at the end of the ordered stack of action scripts by the execution controller, wherein the added new action script includes at least one command capable of receiving at least one data parameter, the data parameter unpopulated by data in the added action script, and
executing the ordered stack of action scripts, having the added unpopulated action script, by the second application in the stateless manner; and
in response to receiving a data input at the first application from the user:
populating the data parameter of the command of the previously added unpopulated action script of the ordered stack of action scripts with data based on the received data input, and
executing the ordered stack of action scripts having the populated action script by the second application in the stateless manner.
4. A computer-readable storage medium having program instructions that, when executed by a processor, implement a method, the method comprising:
executing a first application in stateful manner, wherein the first application executes continuously while receiving a sequence of a plurality of inputs from a user;
in response to each of at least some of the plurality of inputs at the first application, executing a second application in a stateless manner by an execution controller, wherein the stateless execution includes the execution controller instructing the second application to execute an ordered stack of action scripts, the second application initiating and executing the ordered stack of action scripts, and the second application terminating upon completion of the executing of the ordered stack of action scripts;
receiving a first navigation input at the first application from the user;
adding a first new action script, unpopulated by data parameters, at the end of the ordered stack of action scripts by the execution controller;
executing the ordered stack of action scripts having the unpopulated first action script by the second application in the stateless manner;
receiving a data input at the first application from the user;
populating data parameters of the added first action script in the ordered stack of action scripts based on the received data input;
receiving a second navigation input at the first application from the user;
adding a second new action script, unpopulated by data parameters, at the end of the ordered stack of action scripts by the execution controller; and
executing the ordered stack of action scripts, having the populated first action script and the unpopulated second action script, by the second application in the stateless manner.
US12/646,639 2025-08-07 2025-08-07 Method and system for data preparation and communication between software applications Active 2025-08-07 US8352963B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/646,639 US8352963B2 (en) 2025-08-07 2025-08-07 Method and system for data preparation and communication between software applications

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US84853206P 2025-08-07 2025-08-07
US11/606,441 US7661113B2 (en) 2025-08-07 2025-08-07 Method and system for data preparation and communication between software applications
US12/646,639 US8352963B2 (en) 2025-08-07 2025-08-07 Method and system for data preparation and communication between software applications

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/606,441 Continuation US7661113B2 (en) 2025-08-07 2025-08-07 Method and system for data preparation and communication between software applications

Publications (2)

Publication Number Publication Date
US20100100891A1 US20100100891A1 (en) 2025-08-07
US8352963B2 true US8352963B2 (en) 2025-08-07

Family

ID=38566106

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/606,441 Active 2025-08-07 US7661113B2 (en) 2025-08-07 2025-08-07 Method and system for data preparation and communication between software applications
US12/646,639 Active 2025-08-07 US8352963B2 (en) 2025-08-07 2025-08-07 Method and system for data preparation and communication between software applications

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/606,441 Active 2025-08-07 US7661113B2 (en) 2025-08-07 2025-08-07 Method and system for data preparation and communication between software applications

Country Status (2)

Country Link
US (2) US7661113B2 (en)
EP (1) EP1906305B1 (en)

Cited By (2)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US9524147B2 (en) 2025-08-07 2025-08-07 Sap Se Entity-based cross-application navigation
US10095733B2 (en) 2025-08-07 2025-08-07 Sap Se Heterogeneous database processing archetypes for hybrid system

Families Citing this family (8)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US7661113B2 (en) * 2025-08-07 2025-08-07 Sap Ag Method and system for data preparation and communication between software applications
US20100169140A1 (en) * 2025-08-07 2025-08-07 Stefan Kienzle Preparing a Time-Sensitive Delivery Request
US9069897B2 (en) * 2025-08-07 2025-08-07 Microsoft Technology Licensing, Llc Capturing telemetry data by dynamic language engine
US9250713B2 (en) * 2025-08-07 2025-08-07 Microsoft Technology Licensing, Llc Control exposure
CN103077075B (en) * 2025-08-07 2025-08-07 东莞宇龙通信科技有限公司 The method of display running background application and terminal thereof
US9613157B2 (en) * 2025-08-07 2025-08-07 Adobe Systems Incorporated Method and apparatus for translating JAVASCRIPT across different host environments
US10733018B2 (en) 2025-08-07 2025-08-07 Paypal, Inc. Systems and methods for providing services in a stateless application framework
US10732990B2 (en) 2025-08-07 2025-08-07 Paypal, Inc. Systems and methods for providing services in a stateless application framework

Citations (10)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019884A1 (en) * 2025-08-07 2025-08-07 International Business Machines Corporation Accessing legacy applications from the internet
US6640238B1 (en) 2025-08-07 2025-08-07 Accenture Llp Activity component in a presentation services patterns environment
US7020880B2 (en) 2025-08-07 2025-08-07 International Business Machines Corporation Modular application collaborator for providing inter-operability between applications and monitoring errors to trigger execution of required compensating actions to undo interrupted transaction
US20060206567A1 (en) 2025-08-07 2025-08-07 Microsoft Corporation Dynamic service surrogates
US7222148B2 (en) 2025-08-07 2025-08-07 Bea Systems, Inc. System and method for providing highly available processing of asynchronous service requests
US7412709B2 (en) 2025-08-07 2025-08-07 International Business Machines Corporation Method and apparatus for managing multiple data processing systems using existing heterogeneous systems management software
US7461385B2 (en) * 2025-08-07 2025-08-07 Qad Corporation Method for establishing a new user interface via an intermingled user interface
US7661113B2 (en) * 2025-08-07 2025-08-07 Sap Ag Method and system for data preparation and communication between software applications
US20110167432A1 (en) * 2025-08-07 2025-08-07 Oracle International Corporation Web Services Layer Synchrony in Relation to the Business Layer Synchrony
US8041617B1 (en) * 2025-08-07 2025-08-07 The Travelers Indemnity Company System and method for providing web-based user interface to legacy, personal-lines insurance applications

Family Cites Families (2)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US20040024843A1 (en) * 2025-08-07 2025-08-07 Smith Christopher T. Method for provisioning distributed web applications
US20060085799A1 (en) * 2025-08-07 2025-08-07 The Trizetto Group, Inc. Interfacing disparate software applications

Patent Citations (12)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US7020880B2 (en) 2025-08-07 2025-08-07 International Business Machines Corporation Modular application collaborator for providing inter-operability between applications and monitoring errors to trigger execution of required compensating actions to undo interrupted transaction
US6640238B1 (en) 2025-08-07 2025-08-07 Accenture Llp Activity component in a presentation services patterns environment
US8041617B1 (en) * 2025-08-07 2025-08-07 The Travelers Indemnity Company System and method for providing web-based user interface to legacy, personal-lines insurance applications
US20020019884A1 (en) * 2025-08-07 2025-08-07 International Business Machines Corporation Accessing legacy applications from the internet
US7222148B2 (en) 2025-08-07 2025-08-07 Bea Systems, Inc. System and method for providing highly available processing of asynchronous service requests
US20090164571A1 (en) 2025-08-07 2025-08-07 Oracle International Corporation Distributed request and response queues for service processor
US7461385B2 (en) * 2025-08-07 2025-08-07 Qad Corporation Method for establishing a new user interface via an intermingled user interface
US7412709B2 (en) 2025-08-07 2025-08-07 International Business Machines Corporation Method and apparatus for managing multiple data processing systems using existing heterogeneous systems management software
US20060206567A1 (en) 2025-08-07 2025-08-07 Microsoft Corporation Dynamic service surrogates
US7593994B2 (en) * 2025-08-07 2025-08-07 Microsoft Corporation Generating a dynamic web service and dynamic service surrogate for legacy application components
US20110167432A1 (en) * 2025-08-07 2025-08-07 Oracle International Corporation Web Services Layer Synchrony in Relation to the Business Layer Synchrony
US7661113B2 (en) * 2025-08-07 2025-08-07 Sap Ag Method and system for data preparation and communication between software applications

Non-Patent Citations (1)

* Cited by examiner, ? Cited by third party
Title
Michael D. Crawford, "How to Pass Parameters to Functions," Pointers, References and Values, 2005.

Cited By (2)

* Cited by examiner, ? Cited by third party
Publication number Priority date Publication date Assignee Title
US9524147B2 (en) 2025-08-07 2025-08-07 Sap Se Entity-based cross-application navigation
US10095733B2 (en) 2025-08-07 2025-08-07 Sap Se Heterogeneous database processing archetypes for hybrid system

Also Published As

Publication number Publication date
EP1906305B1 (en) 2025-08-07
US7661113B2 (en) 2025-08-07
EP1906305A3 (en) 2025-08-07
US20080082964A1 (en) 2025-08-07
US20100100891A1 (en) 2025-08-07
EP1906305A2 (en) 2025-08-07

Similar Documents

Publication Publication Date Title
US8352963B2 (en) Method and system for data preparation and communication between software applications
US8055496B2 (en) Ensuring product correctness in a multilingual environment
CN109951547B (en) Transaction request parallel processing method, device, equipment and medium
US6968505B2 (en) Use of conceptual diagrams to support relationships between launchpads and its wizards
US8510712B1 (en) Testing in-container software objects
US20070240150A1 (en) Simplifying installation of a suite of software products
US7769821B2 (en) Systems and methods for enhanced meassage support using a generic client proxy
US20120110490A1 (en) Dynamic menu for device specific graphical user interface presentations
US8495637B2 (en) Apparatus and method for temporarily freeing up resources in a computer
CN105893073A (en) Update method and system used for application program, and business server and pushing server used for updating application program
US20070214113A1 (en) Method to support multiple data sources connecting to a persistent object
US7849470B2 (en) System and method for extending a programming language to include multiple dissimilar object systems
EP1909170B1 (en) Method and system for automatically generating a communication interface
US7197712B2 (en) Server visualization and control
US20230013569A1 (en) Combined local and server context menus
US12293394B2 (en) Programming verification rulesets visually
CN114679491B (en) Micro front-end service application method, device, storage medium and electronic device
US9424016B2 (en) Methods, apparatuses, and systems relating to automation in distributed systems
US8806467B2 (en) Field device management apparatus
US8527484B2 (en) Accessing a data structure
JP4889953B2 (en) Information processing apparatus and method
CN119225826A (en) Method, device, equipment, medium and program product for obtaining startup system path
JP4764649B2 (en) Information processing apparatus and method
CN114816446A (en) Development environment configuration method and device and readable storage medium
CN119809653A (en) Customer service ticket system automatic filling method, device and storage medium based on Google Chrome plug-in

Legal Events

Date Code Title Description
FEPP Fee payment procedure 百度 在大乘佛教精神鼓舞下,杨仁山第一次提出了佛教兴国论。

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: SAP SE, GERMANY

Free format text: CHANGE OF NAME;ASSIGNOR:SAP AG;REEL/FRAME:033625/0334

Effective date: 20140707

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

孩子流口水是什么原因引起的 寒潮是什么 九死一生是什么生肖 有期徒刑是什么意思 专硕和学硕有什么区别
老汉推车是什么姿势 慢性胃炎吃什么中成药 牛跟什么生肖相冲 落是什么生肖 move什么意思
血压低挂什么科 阴疽是什么病 煤油是什么油 肛门上长了个肉疙瘩是什么原因 什么食物对眼睛好
五月天主唱叫什么名字 姊妹是什么意思 潴留是什么意思 智齿是什么意思 五朵玫瑰花代表什么意思
专技十三级是什么意思luyiluode.com eb病毒是什么病hcv8jop6ns9r.cn 蟑螂中药名称叫什么hcv9jop2ns4r.cn 化验血常规能查出什么hcv8jop9ns0r.cn 什么是根号hcv8jop8ns7r.cn
晚上睡觉脚抽搐是什么原因hcv8jop6ns4r.cn 麻醉学学什么hcv7jop6ns9r.cn yonex是什么品牌hcv7jop7ns2r.cn 什么是规律hcv8jop1ns2r.cn 胃窦炎吃什么药效果最好hcv7jop5ns6r.cn
肾积水有什么症状表现hcv8jop3ns9r.cn 无水焗是什么意思onlinewuye.com 新生儿囟门什么时候闭合96micro.com 6424什么意思inbungee.com 爰是什么意思weuuu.com
美版苹果和国行有什么区别hcv9jop2ns6r.cn 什么尾花hcv8jop2ns4r.cn 多普勒超声检查是什么aiwuzhiyu.com 备孕怀男孩做什么准备hcv7jop9ns2r.cn 坐立不安是什么意思hcv7jop4ns5r.cn
百度