Abstract: The present invention extends to methods, systems, and program products for translating declarative models. Embodiments of the present invention facilitate processing declarative models to perform various operations on such as, for example, application deployment, updates, application control such as start and stop, application monitoring by instrumenting the applications to emit events, and so on. Declarative models of applications are processed and realized onto a target environment, after which they can be executed, controlled, and monitored.
1. Background and Relevant Art
[0001] Computer systems and related technology affect many aspects of society. Indeed, the compute system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, accounting, etc.) that prior to the advent of the computer system were performed manually. More recently, computer systems have been coupled to one another and to other electronic devices to form both wired mid wireless computer networks over which the computer systems and other electronic devices can transfer electronic data. Accordingly, the performance of many computing tasks are distributed across a number of different computer systems and/or a number of different computing components.
[0002] As computerized systems have increased in popularity, so have the complexity of the software and hardware employed within such systems. In general, the need for seemingly more complex software continues to grow, which further tends to be one of the forces that push greater development of hardware. For example if application programs require too much of a given hardware system, the hardware system can operate inefficiently, or otherwise be unable to process the application program at all. Recent trends in application program development, however, have removed many of these types of hardware constraints at least in part using distributed application programs, in general, distributed application programs comprise components that are executed ova- several different hardware components, often on different computer systems in a tiered environment.
[0003] With distributed application programs, the different computer systems may communicate various processing results to each other over a network. Along these lines, an organization will employ a distributed application server to manage several different distributed application programs over many different computer systems. For example, a user might employ one distributed application server to manage the operations of an ecommerce application program that is executed on one set of manage execution of computer systems. The user might also use die distributed application saver to manage execution of customer management application programs on the same or even a different set of computer systems.
[0004] Of course, each corresponding distributed application managed through the distributed application server cm, in turn, have several different modules and components that are executed on still other different (and potentially differently configured) computer systems over different (and potentially differently configured) network connection. Thus, while this ability to combine processing power through several different computer systems can be an advantage, there are various complexities associated with distributing application program modules.
[0005] For example, conventional distributed application program servers are generally not configured for efficient scalability. That is, most application servers are configured to manage precise instructions of the give distributed {placation program, such as prides reference and/or component addressing sidemen. As such, there is typically a relatively tight coiling between components of an apoplectic program. Thus, when an administrator desires to redeploy certain modules or commitments onto anotho- server or set of computer systems, there is always some (and potentially a siguficant) possibility of redeployment causing errors to occur (e.g., due to differei^es in meteoric protects, system configurations, etc.) These errors can result when messages are not passed onward everywhere they are needed, or if they are passed onward incurred.
BRIEF SUMMARY
[0006] The present invention extends to methods seems, and compute program products for translating dedicative moods. A connate system induces one or more drivers. Eadi driver is configured to process models for a ossified combinaticm of deformity technologies. The computer system also includes one or more translators. Eadi translator is configured to process model elements representing objects within a iodide teacake)logy filmy among tiie plurality of different etymologies.
[0007] In some embodiments, the compute system nodes a declined model along with a command. The declarative mood and the communed collectively indicate intent to implement the command for an application based on the receded dedicative mad. The computer system identifies a driver that is configured to ]»tx»ss dedicative moods corresponding to the combination of etymologies indicated in tier receded declarative model. The computer system forwards the receded dilative mid die commonly to the identified driver. The identified driver parses the receded dedicative model to identify model dements and thru relationship to one aiK>1faar.
[0008] For each identified model element, the computer system identifies a translator configured to translate model elements for the spedfied gemology corresponding to the identified model element. For each idoitified modd dement, the computer system sends the model element to the identified translator.
For each identified model element, the computer system recdves & seipieace of actions that are to be performed within the speedier etymology to partially lemait the command for the ^{placation. The received sequence of actions is a subset of the total actions that are to be performed to fully implement Ae command.
[0009] The computer system assembles the received sequences of actions for the model elements identified in the declarative model into an execution plan. The received seismic of actions is assembled into the execution plan in a detonated oxide with respect to sequences of actions received for other model elicits. The designated order is based on the model elemoit's relationship to other model elements in taw received declarative model. The computer system executes the execution plan to implement the command for the application. Execution of &.e execution plan includes escorting the sequences of actions received for each model dement in the designated order.
[0010] In o&er embodiments, current and prior caution jeans for an application are compared. The results of the comparison are used to derive a new execution plan. Derivation of a new execution plan can include adding, dd^in^ exalting, and revering actions fixnn the prior execution plan based actions being induded or not included in the current execution plan.
[0011] This summary is provided to introduce a section of octopus in a sin>lifted form that are forth or described below in the Detailed Descriptivism. This Summary is not intended to identify key features or seminal features of the diamond subject motto:, nor is it intuited to be used as an aid in detraining the scope of tiie dams sulkiest matter. [0012] Additional features and advantages of the invraliaii will be set forth in the description whidi follows, and in part will be obvious from ^description, or may be learned by the practice of ti» invention. The features and adulates of the invitation may be realized aikl obtained by means of ^ instruments and consdrisntiom particularity pointed out in the appmied claims. These and oihar features of the parfait invitation will become more filly apparent fix>m the following description and appease diims, or may be learned by the practice of the invention as set forth herdnafia. BRIEF
DESCRIPTION OF THE DRAWINGS
[0013] In order to describe Hoe manna: in which fhe tbavtHeddted and othoadvantages and features of the innovation can be obtained, a more particuhnr descrq;ition of the invention briefly described above will be rendered by reference to specific embodiments thereof white are illustrated in the ^q>ended drawings. Understanding tuft fraise drawings depict only ty(»cd embodiments of tie invented mad are iK}t ther^ne to be considered to be limiting of its scope, the invention will be described aiMl explained with additional perfidy and daily throe^ the use of &e accompanying drawings in white.
[0014] Figures I illustrates an example computer architecture that facilitates translating declarative modds.
[0015] Figures 2A - 2B illusttate different views of a more detailed computer
architecture for translating declarative {plication models.
[0016] Figure 3 illustrates a Fattah «candid view of a computer architecture for
translating declarative application models.
[0017] Figure 4 illustrates a flow chart of an example method for translating a model to implement a receded command.
[0018] Figure 5 illustrates an example of a compiler architecture for translating
declarative application models to vtpdsAc an application.
[0019] Figure 6 illustrates examples of update actions for expiating application.
[0020] Figure 7 illustrates a flow chart of an example midi for translating models to implement an oxalate command.
[0021] The present invention extends to methods, systons, and computer program products for translating dedarative models. A computer system includes one or more drivers. Each driver is configured to process models for a^^pedfied combination of differmt technologies. The computor system also includes one or more translators. Eadi tramlator is configured to process modd demoits representing objects wilidn a spedfied technology fix)m among the plurality of different technologies.
[0022] In some ranbodiments, the computer system recdves a declarative modd along with a command. The dedicative model and ihe command ooUectivdy indicate intait to implemoit the command for an iq>plication based on the receded declarative modd. Hie computer system idmtifies a driver that is configised to process declarative modds corresponding to the combination of tedmologies ideated in the receded ^durative model. The compute syrtem forwards the recoded dedicative modd and the ooimnand to the identified driver. The identified driver parses the recdved declarative mud to identify model elements and thdr relation to one another.
[0023] For each identified model element, the comimta' syston identifies a trandator configured to translate model dements for the spedfied todmology correq;)onding to the idoitified model element For each identified model dement, ^ c(»nputQr system sends the model demoit to the identified tnoislator.
For each identified model elemoit, the computer system recdves a sequence of actions &at are to be performed within the spedfied technology to partially implonoit the command for the q)plicatioiL The received sequence of actions is a subset of the total actions that are to be performed to fully implonent the commaiuL
[0024] The computer systetnassonblestiierecdved sequences ofw^ionsfiv the modd elonents identified in the declarative model into an ncecirtkm ^an. The received sequence of actions is assonbled into the execution plan in a designated order with respect to sequences of actions received for other model elements. The design^ed order is based on the model elemmt's relattondiip to other model elaaanta in the recdved declarative model. The computer system executes the execution plan to implement the command for the application. Execution of the execution plan indiKles ececuting the sequences of actions received for each model elonoit in the designated ordor.
[0025] In other embodiments, current and prior execution plans for an applicati(Hi are compared. The results of the comparison are used to derive a new execution plan. Derivation of a new execution plan can include adding, ddeting, iqxiating, and reversing actions fix>m the prior execution plan based actions being induded or not included in the currrat execution plan.
[0026] nbodiments of the present invention may ocnnprise (»r utilise a s|)ecial purpose or goieral-purpose computer including computer hardware, as discussed in ffeaia detail below. Embodiments within Has scope of the inesent invmticm also include physical and other computa-'readable media for carrying or storing conqniter-executable in^ructions and/or data structures. Sudi computer-readable media cm be any available media that can be accessed by a genoal purpose or spedal purpose computer system. Computer-readable media that store computor-executable instructions are phyncd borage media. Comimter-readable media that carry ccMnputar-executable instructicms toe tcBnnnissiexecutable instructions or data structures can be transferred automatically firom transonissicni media to physical storage media. For example, computor-executable instructions or data structanres received over a networic or data link can be buffoed in RAM within a netwoik inter&ce module (e.g., a '^C"), and then eventually transferred to compute- system RAM and/or to less volatile physical storage media at a computo- ^'ston. Thus, it skouM be understood &at physical storage media can be included in computo* system components diat also (or even primarily) utilize transmission media.
[0030] Computer-executable instructions comprise, for tamnplc, instructions and data whidi cause a goieral pinpose computor, special purpose oompitsT, or special purpose processing device to perform a certain function or groiq) of fimctions. The computer executable instructions may be, for example binaries, intonuxSate format instructions sudi as assembly language, or even source code. Although &e subject matto: has been described in language spedfic to stnu:tural features and/or methodological acts, it is to be understood that the subject matter defined in the qipended claims is not necessarily limited to the desoibed features or acts described above. Rathor, the &saefl>ed features and acta are disclosed as sample forms of implemoiting the claims.
[0031] Those skilled in the art will iqipreciate that the invenikm may be in»cticed in nettvoik computing environments with many types of craqxrtcr system configurations, including, personal computers, desktop computers, laptop ccnnfiiitars, message process(»s, hand-held devices, multi-processor systons, microfnocesscM^rased or programmable consumo: electronics, network PCs, minicomputers, mainfiime computers, mobile telei^KMies, PDAs, pagers, routers, switdies, and the like. 1%e iaveation may also be practiced in distributed system oivircMBnoits whoe local md femote computer syrtems, which are Imked (either by hardwired data links, wireless data Unks, (»r by a combination of hardwired and wireless data links) through a networic, both perfimn taste. In a distributed system environment, program modules may be located in botii local and ranote memory stora^ devices.
[0032] Figure 1 illustrates an example compaUt ndhtftectiae 100 that ftdlitates translating declarative modds. As depicted in Figure 1, compiler ncliite<^«e 100 includes translation system 101 and environmoit 105. Environmmt 1(^ further includes a plurality of resources, such as, fixr example, resources 105A, 105B, and 105C, that are accessible to translation system 101. As further depicted, translation systan 101 receives declarative model 102 and command 103. Translation system 101 traEolates declarative model 102 in view of command 103 resulting in the performmice of acticms 104A, 104B, and 104C within environment 105.
[0033] Generally, a model is data that desoribes a subject sudi as an applicaticm module (e.g., a distributable compmimt of a distributed i^Ucsttcm). Accordingly, declarative model 102 can describe one or more {plication modula ditf are connected (n* rdated to each otho*. Eadi module can be further composed of one or toon resources that can also be related to each other. Thus, elonents of declarative mo^ 102 can be used to describe related (plication modules and resources reineseating at least a portitm of a di^ributed {plication. For example, declarative model 102 can desmbe a nK>dule of a Web Service that is composed of resources (e.g., files), arti&cts (e.g., ns virtual directories tiiat have to be oeated to host the Wd> Service), and configuration infimmtticm.
[0034] Generally, a command represents an operation to be performed on a modd. A command can represent virtually any operation, such as, fin: example, deploy, undqtloy, start, stop, update, monittv, etc., tiiat can be performed oa amodd. Accordingly, command 103 can represent an opaa&m that is to be performed on deduative model IQ2.
[0035] Amodel alloy my Web Service**, "start execution of my Web Service, etc.
[0036] Thus, in respcmse to receiving declarative nu)dd 102 and commsnl 103, translation system 101 can i»Dcess model 102 and omunaiMl 103 to realize the represented intent Realizing the re{nesaited intent can include pa-foiming one or more acticKos, sudi as, ix example, actions 104A, 104B, 104C, etc. to (be resmiroes of envinmment 105. For example, in order to deploy a USCT'S Web Sa:vice,trRii8lirtkqrtem 101 cm co|^ files to resource 105B, create arti&cts on resource 105A, sudi as, fix* racample, create a directory on a Web Server and create or alter resource 105C (e.g., configisation files) required by the Wd) Service.
[0037] Figure 2A illustrates an example compukat lodiitecture 200 &at fedUtates translating declarative i^lication modds. Ducted in ocnxpitfer ndutoctuie 200 are tools 225, repository 220, executive module 215, driver manager 230, and andytics module 210. Each of the depicted oompcments can be connected to one anther over a networic, sudi as, for example, a Locd Area Network ("LAN"), a Wide Area Network ("WAN"), and even the hitemet Accordingly, eadi of the depicted components aa well as any other connected components, can o^eate message related data and exduinge message rdated data (e.g., hitemd Protocol ("IP") datagrams and other higher layer inotocols that utilize IP datagrams, such as. Transmission Control Protocol ("TCP"), Hypertext Transfo- Protocol ("HTTP"), Simple Mail Transfer Protocol ("SMTP"), etc.) over the network.
[0038] As dq>icted, tools 225 can be used to write dedaialive modds for applications and stored in rqwsitory 220, such as, for exanq>le, dedantfive i^lication modd 253, in repository 220. Declarative models are used to determine tlw stnicture and bdiavior of red-world running (deployed) i^lications. A dedarative model is also used to diamine what events are reported (emitted) from an i^licatton that is deployed based on the dedarative model. Hius, a user (e.g., distributed application program devdoper) can use one <»r more of tools 225 to ovate dedarative modd 253. A declarative modd em imdude a plurality of interrelated model donents that declare how an appUottion is to be configured and executed.
[0039] Generally, declarative models include one or more s^ of hig^levd declarations expressing applic^on intent for a distributed q)pliad<»i. 11iiis» the Ui^-level dedandons generally describe operations and/or beiiavi<»rs of (me servioes are ooimeded may be determined based on where the Web sorvices are dq)loyed (e.g. s^iedfic madiines and spedfic Web server configurations).
[0040] Application control for applications based on dedarative q>plication models can be realized in res^nse to receiving commands to pet&ma operations on dedwative qyplication modds. For exan^le, ixxpai (e.g., user-initiated bxpuA or ai^nnated nqaut) can be received by the executive module 215. h^t is received Sxm tools 225 or fiom a ccnnputer program at (e.g., a user-intoface or a programmatic interfiux;). hiput can include a reference to a model (e.g., filename, URL, etc.) and a conmiai^ The command represoits an operation (e.&, deploy, undq>loy, start, stop, update, etc) that is to be performed on the referenced model.
[0041] To perform a requested opoation on an {q^plicaition desplication model until diere are no ambiguities and the d^ails are sufScient for ^vers to consume. Thus, executive module 215 can receive and refine declarative i^lication model 253 so that declarattve application modd 253 can be translated by drivers residing mside driver managos 230 into a deployed, real-world application.
[0042] In general, ''refining a declarative modd ran iadude some type of work breakdown structure, such as, for example, progressive elaboratton, so that the dedarative model instructions are suffidently complete for translatimi by drivers or drivor mana^ 230. Since declarative models can be written relativdy kxMdy by a human user (i.e., containing goieralized intoit instructicMis or requests), there way be diffo^nt degrees or extents to whidi executive module 215 modifies or si^leoMitts a declarative model for deploying an iq)plication. Woric breakdown module 216 cm imptement a weak breakdown structure dgoridmi, such as, for example, a progressive elaboiaiion algoridun, to determine whoi an sppto^tAe granulariy has been readied and instniotkim are sufBdent for drivers residing in the driver manager 230.
[0043] Executive module 215 can also account for dependendes and constraints included in a dedarative model. For exanq)le, executive modide 215 can be confi^ired to refine declarative application modd 253 based on semantics of dependendes between elements in fhe declarative application model 253 (e.g., cme web service connected to anotho:). Thus, executive module 215 and woric breakdown moMe 216 can intooperate to output detailed {Q>plication modd 253D that provides drivers resi^iig in the driver manager 230 wifli suffidoit infcnmation to dq^ distributed appUca&m 207.
[0044] In addition, executive module 215 can be configured to fill in missing data regarding computer system assigmnents. For example, executive module 215 migjbt identify a number of different modules in declarative model 253 that have no requirement for specific om^ta-system {Kklresses or opoating requiicoMi^ ThiK^ executive nxxfaile 215 can assign distributed q}plicatile oominiter system. Executive module 215 can reason about the best way to fill ia 4ataL in a refined declarative application model 253. For example, as previously described, ocecutive componoit 215 may determine and decide which transport to use fi»: a Web service based on {Hoximity of connection, or determine and decide how to allocate distributed q>plication program modules based on factors iq^propriate for handling expected sfpikes in demand. Ececutive module 215 can then record missing data in detailed q>plic»tion model 253D (or segment titiereof). The detailed ^n>Ucation model may also be saved in flie rqwsitory 220.
[0045] In addition or alternative embodiments, executive n»>dule 215 can be cmifigured to compute dependent data in the declarative i^licatitHi model 253. For example, executive module 215 can compute dependent data based oiwiit 215 can be configured to diedc to see if two distributed {plication program modules can actually be assigned to ita same machine, and if not, executiiw module 215 cm r^ine detailed {Q)plication model 253D to accommodate this requiremmt
[0046] After adding all apptoptiate data (or otherwise nKtdi^g/refining) to declarative application model 253 (to create detailed application model 253D), executive compoamt 215 can finalize the refined detailed application model 253D so tiiat it can be translatedby platform-specific drivers residing in driver manager 230. To finalize or oooqdete the detailed {Q>plication model 253D, executive module 215 can, for exanq>le, partition a declarative ^)plication model into segments that can be tngeted to any one or more platform-specific drivers. Tlius, executive module 215 can tag each declarative application model (or segment thereof) with its target driver (e.g., the address/ID of a platform-specific driver residing in driver manager 230). Furthermore, executive module 215 can verify that a detailed application model (e.g., 253D) can actually be translated by drivers residing in driver manager 230, and, if so, IMSS the detailed (plication modd (ixc segpimt &axof) to driver manago- 230 for finr di^Mrtdiing to iqypropriate driiwra for tnm^ation.
[0047] In any event, drivo- manager 230 interoperates witii one or more drivers and translators to translate detailed application module 2S3D into one or more (e.g., jdatform- specific) actions 233. As depicted in Figure 2A, actions 233 can be used to realize the intoit offbe opoatton rqnesented in modd ccnnmand 226 fi« dii^rilrated qpfdication 207.
[0048] During dqployment, distributed application i»ogmns cm provide operational information aboitf execution. For example, during executiim distributed q)plicatiQn 207 can emit event stream 237 indicative of events (e.g. execution m porformance issues) that have occurred at distributed application 207. In one implementad<»i, distributed (plication 207 sends out event stream 237 on a continiwus, ongoing basis, ^KM^ in oika implemoitations, distributed ^>plication 207 sends evoit stream 237 on a sdbe^ed basis (eg., based on a schedule setiq> by the platform-specific driver residing in driver manager 230). Driver manager 230, in turn, parses event stream 237 to analytics im>dule 210 for analysis, tuning, and/or other {Q>piopriate modifications. The events onitted k event stream 237 are defined in declarative amplication model 2S3.
[0049] Generally, analytics module 210 aggregates, coade^ and otherwise filters data fivm event stream 237 based on declarative obsovation modds (e.g., observation model 276) stored in the repository 220 along with declarative a^iHcaticm models 253 to identify intoesting troids and bdiaviors of distributed q^licaticm 207. Analytics module 210 can also automatically adjust the intent of dedarative ^yplicatm model 253 as iqypnqniate, based on identified trends. For example analytics nK)^e 210 can send modd modifications 238 to repository 220 to adjust the intoit of dedar^ve model 253. An adjusted intoit, for example, can reduce the number of messages processed per second at a computer system if the computer syston is running low on system memory, redeploy distributed q>plication 207 on another nuudiine if the cmraitiy assigned machine is rebooting too fi«quently, etc.
[0050] Figure 2B defncts a more (tetuled view of coniponciiO that can be included in drivo: manager 230. As dq>icted in Figure 2B, driver manager 230 indudes type locator 241, driver 342, and translator 261.
[0051] Type locator 241 is a lookiq) medumism that mi^ nUKids and modd dements to corresponding drivos and translators fliat can jnocess them.
[0052] Drivo-242 is configured to recdve and inx>cess a modd and a command. Driver 242 is configured for use with a list of commands it undo^ancb and a set of technology models that is sq>ports. For example, driver 242 may be a WCF-US driver ci^le of translating a Web Service Module Modd tiutt describes a Web Service in^Iemented using Microsoft® Windows Communication Foundation ("WCF^ and to be hosted on Microsoft® Internet Information Server ("IIS'^.
[0053] As dq>icted, driver 242 includes model interpreter 243 that produces execution plan 244. Model intai»eter 243 is omfigured to parse a recdved model and generate a cones^KHuling ocecution plan (e.g., execution plan 244). To generate an execution plm fixHn a received model, modd inter^nvter 243 can identify a mo^'s constitumt model elements and their relationships to one another. Modd intoiareta: 243 can thai call corresponding model element interpreters to retrieve a sequence of actions for eadi modd element. Model interpret^' 243 combines the sequence of at^ons for eadi model donoit into a single sequence of actions for inclusion in an execution plan.
[0054] Thus, for example, execution plan 244, is a sequmced set of actons that can be executed to perform an operation on a model. Executicni plan 244 also provides an execution context containing model information that can be used by tiie actions during thdr execution. The context is also used by the actions to pass mi infimnatibn required by otho* actions during execution.
[0055] Translator 261 is a package of a set of related actions ai^ a model element interpret*. Translator 261 bundles together procedures that have an affinity towards a septic toxicology. For example, an Osco fig Translator would have a set of actions ^uA (»n process operating system attics such as files and foltos. The actions could be create, copy, move, delete and so on.
[0056] As depicted, translator 261 includes model dement intopreter 262 and actions 263A, 263B, and 263C. Modd elemoit interpreter 262 is ocmfigured to parse model elemoits and assembles a sequence of actions that can be executed to oporate on whatevo- is represoited by the modd dement
[0057] Actions 263A, 263B, and 263C repression execitfaUe procedures that operate based (m a single model demoit For example a OqryFile ae&fm em copy a givm file to a givoi destination where ibe file is described by a resouce modd element in a modd desoibing an qyplication module siKh as a Wd> service.
[0058] An action can include a variety of dififereat {Hopccties. F<»r example, an actisoIute path.
[0059] An action can be assodated with a correspradii^ tvmm acdoa. Tlw reverse action can undo tiie effects of the action. For example, the revene of a CopyFile would be a procedure that removes a file or restores an original file th^ \ras overwrittoi. An acikm can be associated with a corresponding update action that applies a newer version of a resource over an existing resource.
[0060] Accordingly, the components and data dqncted ta Hgure 2B can interopenrte to realize an intmt represoited in a received moddi and comnumd.
[0061] Figure 3 illustrates a fiirtho- expanded view of an exan^le computer ardiitecture 300 for translating declarative {plication models. As dqnctod, c(»nputer architecture 300 includes driver manager 330. Driver manager 330 can be configured similarly to (or even tibe same as) driver manger 230 depicted in computer ardiitecture 200. Driver manager 330 hosts drivers and translators and receives inputs. For example, driver manago: 300 hosts a plurality of drivers, such as, for ecample, wcf-IIS driver 342 aad Aspx-IIS driver 3S2.
[0062] Each drivo- can iiKslude a model interpret^' (e.g., model intopretos 343 and 353 respectively) configured to parse a model and goiorate an ececution plan. Thus, upon receiving a model, eadi driver can idmtify constituent tesomoes and their relationships to one another, call appropriate resource interpreter to rdrieve sequences of actions, and assemble sequences of actions into an ^ecution plan.
[0063] Drivo- managor 300 also hosts a plurality of tnui^tatcns, such as, fw eouBiq>le, opo-ating system technology translator 361, ns technology translator 371, and WCF technology translator 381. Eadi translator can include a resowce intopreter (e.g., resource interpreters 362, 372, and 382 respectively^ for {Mursing modd donents descritring a resource and assembling a wquence of actions that can be executed on what the resource represoits. Each translator can correspond to a portion of d»aiviromnait For example, operating system tedmology translator 361 corresponds to opoating syston 391, US tedmology translator 371 corresponds to nS 392, and WCB tedmology tnmsftr 381 corresponds to WCF 393.
[0064] Accordingly, when a translator recdves a modd tkmeat desaibing a resource the resource represaats some object within the ccnrespcmdaig portion of the envimmient. For example, when operating system technology translator 361 recdves a resource the resource corresponds to mi object in operating system 391 (e.g., a service.svc file). Similarly, when IIS technology translator 371 recdves a resource the resource corresponds to an object in IIS 392 (e.g., the location of a user's Web service - "/inyservice"). likewise, when WCF tedmology trandator 381 ibs resource oofre^onds to an oi^ect in WCF 393 (e.g., a Web.config).
[0065] Generdly, dispatdior 371 is configured to recdve a model and oommmd and dispatch the model and cooomand to the ^)propriate driver. Thus, upon recdving a modd and command, dispatcher 371 can forward the model to type locator 341. Type locat(»' 341 can receive the model and based on the model locate the qypropriate type of drivo- for processing the model. Type locator 341 can return a driver D) identifying the i^ipropriate type of drive back to disfMrtdier 371. Dispatcher 371 can then vae fbe Mver ID to dispatdi the model and command to the idoitified appropriate drivor.
[0066] Drivers can also utilize type locator 341 to locate ^>propriate translators for model element describing resources included in a model. For each model elemoit describing resource in a model, a driver can submit the model elonoit desoibing resource to type locator 341. Type locator 341 can receive the model elonoit describing resource and based on the model elonent describing resource locate the qqnopriate type of translates for translating the model element desoibing resource. Type locator 341 can rdxtm a translator ID identifying the appcopnate type of translator back to Ihe driver. The driver can then use the translator ID to dispatdi the model element describing resource to the identified appropriate translator
[0067] The apptoptiste translator parses the received modd dement describing resource to assemble a sequmce of actions for a received command and returns the sequoice of actions back to the driver. The driver &en assembles the dififeient sequences of actions into a single execution plan. The driver then executes the execution plan. Actions in the execution plan are executed in sequence, operating directly on ti»» avircmment (e.g., on one or more of operating syston 391, ns 391, and WCF 392), to realize tiie intent collectively represented in model 353 and command 329.
[0068] Figure 4 illustrates a flow chart of an example mc^iod 400 fat translating a model to implement a received command. Method 400 will be described witii respect to the componoits and data in computer architecture 300.
[0069] Method 400 includes an act of receiving a deduative modd along with a comnumd, the declarative model and the command collecti^y indicating an intmt to implement the command for an af^licaticm based on he reodved declarative model (act 401). For example, dispatcher 371 can recdve model 353 and command 329. Model 353 can include a plurality of interrelated modd demmts declaring how to configure and execute an application. Command 329 can be a ccmimand to dqploy, imdeploy, start, stop, etc., the q^lication.
[0070] Method 400 indudes an act of identifying a driver ftuA is configured to process declarative models corresponding to the combuiation of tedmologies indicated in the recdved declarative model (act 402). For racample, dispatdrar 371 can send modd 353 to type locator 341. Type locator 341 can receive model 353. Type locator 341 can process modd 353 to detomine the type of driver opptopnaiic for pfoceanng modd 353.
[0071] Determining the type of driver can be based (»i the oondnnation of technologies (e.g., a combination of operating system, networic i»t>tocol8, ^tfa t3^pes, etc.) ix^cated in and/or related to model elanents of model 353. For exaii{de, type locator 341 can determine that Wcf-US drivo- 342 is the ^jpropriate driver for processing model 353 based on model elements contained in model 353 relating to IIS 3^ and WCF 393. In response to the detomination, type locator 341 can said driver ID 384 (an identifier for driver 342) to dispatcher 371.
[0072] Method 400 inclines an act of forwarding the recaved dedarative modd and the command to the identified driver (act 403). For example, dt^wtctor 371 can utilize driver ID 384 to forward model 353 and conmiand 329 to Wcf-US ckiver 342.
[0073] MeAod 400 indudes an act of the identified driver parsing the recdved dedarative modd to idoitify modd elements and thdr rdatkms^ to one ano&er (act 404). Modd intopreto: 343 can i»rse model 353 to identify OKidd dements within modd 353 and the modd elements' relationships to one another. F(ff taaaofh, modal intoinder 343 can identify model dement 354A, 354B, 354C, etc.
[0074] For eadi identified model dement, method 400 iadixks an ad of identifying a trandativ configured to trandate modd dements for die spea&oi tedinology correq»(niding to the identified model dement (act 405). For exan^l^ Wcf-US driver 342 can said identified model elements, sudi as, for ocample, modd daooA 354A, to type locator 341. Type locator 341 can recdve modd element 354A. l^pe locator can process modd element 354A to ddomine the type of translator apptopdm for tnmdating modd elemoit 354A.
[0075] Determining the type of trandator can be based on a apedfied tedmolo^ (e.g., one of an operating syston, network protocol, data typ^ etc.) indicated in and/or rdated to modd element 354A. For example, type locator 341 can ddtanine that operating system tedinology translator 361 is the apptopnsto driver for trandating modd elemo^ 354A based on model elemoit 354A indicating or being rdated to operating system 391. In response to the determination, type locator 341 can send ttdsoakitor ED 355 (an idoitifior for tnmddor 361) to Wcf-IIS driver 342. Similar detomindicns cm be made finr modd dements 354B, 354C, eto. induded in modd 353.
[0076] For each identified modd element, method 400 indndes an act of souiing ^ modd element to the translator (act 406). For example, Wcf-US driver 342 can utilize translator ID 355 to forward model element 354A to operating system technology translator 361. Resource interpreter 362 can translate model element 354A into action sequence 363. Action sequence 363 indudes a plurality of actions, sudi as, for examine, actions 363A, 363B. etc, that are to be ocecuted in oporating systan 391 to inq>lanait a p<»tion of tiie intent of command 329.
[0077] Similarly, Wcf-IIS driver 342 can utilize an i^ipropriate translator ID to forward model element 354B to ns technology translator 371. Resource interpreter 372 can translate model element 354B into action sequence 373. Action sequence 373 includes a plurality of actions, sudi as, for example, actions 373 A, 373B. etc, that are to be executed in IIS 392 to implement anotho* portion of the iiitent of commai^ 329.
[0078] Likewise Wcf-IIS driver 342 can utilize an sppiopAslte translator ID to forwud model element 354C to WCF tedmology translator 381. Resource interpreter 382 can translate model elanmt 3S4C into action sequence 383. Action sequou^ 383 iiwludes a plurality of actions, sudi as, for example, actions 383A, 383B. et(^ that are to be executed in WCF 393 to implement further portion of the intent of o^mnuuid 329.
[0079] Furtho' modd donoits can also be soit to any of operating system tedmology translator 361, IIS tedmology translator 371, WCF technology translator 381, as wdl as to other appropriate technology translators (not shown), based on a model elonoit indicating and/or being related to a spedfied tedmology.
[0080] For each idmtified model element, methc^ 400 indices an act of recdving a sequence of actions that are to be performed within the ^»dfied tedmology to partially implement the command for ^e i^lication, the sequence of actions beix^ a siibsct of the total actions that are to be performed to foUy in^lemeDt Hbe command (act 407). For example, model interjnder 343 can recdve action sequeiue 363 fiom operating syston technology translator 361, action sequence 373 IIS tedmology trmidatt^ 371, action sequence 383 WCF tedmology translator 381, eto. Eadi adioii sequoice is a sd»et of the total actions that are to be performed to folly impleorant comsaaad 329 for an q[q;)lication based on model 353.
[0081] For each identified model element, method 400 indudes an ad of assembling the recdved sequmce of actions for the model elemmt into an execution plan, the recdved sequem^ of actions assemMed mto Hoc execution plan m a denigyiated orcter with rN|>ed to seqiMKXS of actions received for otto: model deoMiits iMued im &e mocM demeot's relationship to other model elements in the recdved dedarative model (ad 408). For example, model interpreto* 343 can assemble action sequmces 363, 373, 383, etc. into execution plan 344. Action sequences 363, 373, 383, etc., are assembled in a d^goated order based on the rdation^p between corre[q;>onding model deoMots in modd 353.
[0082] MetiKxl 400 inclwles an act of «cecuting fbe exeortkm frftti to unplemem the command for the (plication, racecution of tiie executkm 0m induding executing the sequences of actions received for each model elemoit in Hip designated order (act 409). For example, Wcf-IIS drivo: 342 can execute execution plan 344 to implanoit command 329 for an application (based on model 353) that is to use porticms ofopaating syston 391, nS 392, and WCF 393, etc.
[0083] Figure 5 illustrates an example of a computer azdiitecture 500 for translating declarative application modds to updaXe an t^licatioiL As dqacted, computer ardiitecture 500 includes driver 501, translators 502, and oomi»rison and iqidate module 507. Widiin computer architecture 500 and as previously desmbed, driver 501 cm recdve models (e.g., current voision of model 502C and (oior vosion of modd 502P) and commands (e.g., \xpdatc command 503), ptasc out model donaits (e.g., modd demmts 504), said the model donents to an appropriate translator in translates 5(^ and recdve bade action sequoices (e.g., action seqimices 506) from the appsopnsUt tmabtata. From the action sequences, drivor 501 cm oreate execution plans, such as, finr esumpl^ currrait execution plm 511 md prior execution plm 512
[0084] Comparison and iq)date module 507 is configured to revive a current execution plm md a prior mecution plm for m q)plication and con^Nure the two execution plans to identify differmces in action sequmces within the two executicm plans. From idmtified differmces, comparison md update module 507 cm ai^ly acldom in a cunent execution plm to actions in prior execution pm to derive a new executicm pfam. A new executi(m plm cm include iqxlate actions finr iqxlating m ousting {^licaticm.
[0085] Figure 6 illustrates examples of i^date actions ^0 for i^dating m {plication. Row 601 indicates fbat when m action is included in both a cunent version and a prior version of m executicm plan, m update action is included in Oe new execution plm to update the effects of the execution of the i»ior varsion of the mtion to the effects of the current version of the action. Row 602 indicates that whm m acti(m is included only in a current version of m execution plan, the currmt version of fbs adion is added to the new exeaiti(m plan. Row 603 indicates tiid whm m action is iiK^aded only in a prior vo^ion of m txeca&oa plan, a reverse acticm is induded in the new execirtiai {rfm to rmiove the efTects of the execution of the prior version of the action.
[0086] Figure 7 illustrates a flow diart of an example metibod 700 for translating models to iiiq)lemait an update oommaod. Mdfaod 700 will be desoibed witii respect to ocmipcments and data in conqnitar arciittec^ure SOO and vpdiitB actiou 600.
[0087] Method 700 inchides an act of receiving a (kdwative modd along with an update command, the declarative model and the update ccmimand collectively indicating an intent to update an application based on a prior version of the reodved declarative model (act 701). For example, driver 501 can recdve current yerdoa of model 502C and vepdate command 503. Current version of model 502C and iqidate command 503 collectively represent an intent to iq)date q)plication 522.
[0088] Method 700 inchides an act of assonbling a omtnt exteution plan for the recdved declarative modd, the current execution plan iiKdiidkig a sequence of actions asscanbled in a designated otda based on the rdatioo^iq^ between modd donents in the recdved declarative model (act 702). For example, driver ^1 coi parse model dements from curroit version of model 502C and said the modd dements (e.g., included in model donoits 504) to approiniate translators in translators 5(^. The qipropriate translators can return action sequences (eg., indikled in acticm sequoices 506). From the action sequences driver 501 can assanblecurrmt execution plan 511.
[0089] Method 700 includes an act of accessing tlM» pricnr vosion of the recdved declarative model (act 703). For ex«nple, driver 501 c«i access prior version of modd 502P. Application 522 is based (mpricvvasion of modd SCSP.
[0090] Method 700 indudes an act of assonbling a pricar execution plan for the prior vosion of the recdved decorative model, Ihe inior execirtiiHi plan including a inior sequence of actions assembled in a designated orda based on tibe rdation^ps between modd elements in the prior verdon of the recdved decteidive model (act 704). For exanq>le, driver 501 can parse modd elements from pncs vmmm of model 502? and send the model elements (e.g., indued in model elements 504) to tppsojpnato translates 502. The {Q>propriate translators can return action sequences (e.g., induded in action sequences 506). From the action sequences driver 501 can assemble prikMr cotecution plan 512. [0091] Method 700 includes an a<^ of comparing the cinreot execution plan to the pdot execution plan (act 705). For example, comparison and i^dale module 507 can ctxaapare cunent executing pan 511 to pom execution plan 512. Frooi tie conqrarison, coiiiiMBriacm and update module 507 can delenmne if actions are iododed k tmc (H* bo& of cwreirt executing plan 511 and prior execution plan 512.
[0092] Method 700 includes an act of doiving a new execi^on plan for i9)dating die appUcatioa based on the remits of tiie comparison (aiit 706). Par exan^le, om^arison and i^dote module 507 can derive iww execution plan 513 fi»r i^ckled i^l^icidon S£2 based mi the results of conqiaring current executicni plan 511 to priiM-esEecirtifm plm 512.
[0093] Derivation of a new execution plan can include msecting tq>date, cunoit, or reversal actions into the new execution plan. For example finr eadh action included in both the current execution plan and the prior execution plan, an i^dito action is included in the new execution plan (act 707). For eadi action included ooly tte currmt execution plan, the action from the current exeoition plan is included in the new execution plan (act 708). For each action included only the inior execution plan, a revtae actiim for reversing the action in prior execution plan is induded the new execution plan (a(^ 709). The reverse action is to eliminate the impact of the action from the prior ocecution plan witiiin ccmqniting environment 521.
[0094] Method 700 indudes an act of executmg the new executicm plan to iqidate iius qiplication within the oonqniting environmmt (act 710). Fm ecample, driver 501 can execate new execution {dan 513. Execution of new executiim plan 513 can cause acAom 531 to be emitted into oonqmting environmmt 521. Ac^om 531 cm be implemented in computing environment to iQKlate applicati(m 522 to i^il^ci^^ 522U.
[0095] Embodiments of the presmt invention are also exteoable. Drivers can roister with a Type Locator (e.g., 341) to expose frmctionality to a dispatdior. Similarly, translators can register with a Type Locator to expose frmc^mality to drivsrs. Drivers can reuse existing translatcns. F(»r example, referring to Fipire 3^ ^ix-ns driver 352 can use operating system tedinology translator 361 and ns tediiKdogy trtasilatcHr 371 (alcmg with an Aspx translator (not shown)) to process model daiMuts.
[0096] Embodiments can provide base classes and gnomic in^lementirticMis fiv Driver, Model into^ireto:, Mood Element interpreter and Acticm. Thus, the infiiotruGtore for (seating and running oceoution Flans, locating types and generating liquidate pUms are aU provided through a comnum framework. As a result, a ctevdoper (»n focus on orating a new model, and Translators focused on processing modA demits into Arctic’s. The base classes can optionally be extended to create the Model and Model element interpreters to handle cases where relatiomlups are not exinessed in ^ model, tfius poteolidUypRfventing fbc base implementations from inform tiie tK^timi sequence.
[0097] Accordingly, embodiments of the pment invention foliate processing declarative models to perform various operations on applications, such as, for example,
application deployment, application iqpdates, implication ootOrol sudi as start and stop, q)pIication monitoring by imrtnane^ing Hie ^)plicati(Mis to emit events, and so (m. Dedicative modds of acquisitions are {Recessed aad realized onto a tai^ environed^ after
can be executed, controlled, and monitored.
[0098] The i»seen invention may be embodied in odor septic forms without departing from its spirit or essential diaracteristics. The desorbed embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the t^poided claims rather than by tiw foregoing deception. All changes whit come within the meaning and range of equivalency of &e claims are to be embraced within their scope.
Claim:
1- At a computer system within a computing environment, the computing
Environment including a plurality of Afferent technologies the computer system including one or more drivers (342, 352), each driver configured to process models (353) for a specified combination of different technologies, the computer system including one or more translators (361,371,381), each translator configured to process model elements (354A, 354B, 354C) representing objects within a specified technology from among the plurality of different technologies, a method for translating a model (353) to implement a received command (329) within the computing environment, the method comprising:
an act of receiving a declarative model (353) along with a command (329), the declarative model (353) and the command (320 collectively indicating an intent to implement the command (329) for an application based on the received declarative model (353);
an act of identifying a driver (342) that is configured to process declarative models corresponding to the combination of technologies indicated m die received declarative model (353);
an act of forwarding the received declarative model (353) and the command (329) to (be identified driver (342);
an act of the identified driver (342) parsing the received declarative model (353) to identify model elements (354A, 354B, 354C) and their relationship to one another,
for each identified model element:
an act of identifying a translator (361, 371, 381) configured to translate model elements for the specified technology corresponding to the identified model element;
an act of sending the model element to the identified translator;
an act of receiving a sequence of actions (363,373,383) that «e to be performed within the specified technology to partially implement the command (329) for the application, the sequence of actions being a subset of the total actions that are to be performed to fully implement the command; and
an act of assembling the received sequence of actions for the model dement into m execution plan (344), the received sequence of actions assembled into the execution plan in a designated order with respect to sequences of actions received for other model elements based on the model element's relationship to other model elements in the received declarative model; and
an act of executing the execution plan (344) to implement the command (329) for the application execution of the execution plan (344) including executing the sequences of actions (363,373,383) received for each model element in the designated order.
2. The method as recited in claim 1, wherein an act of receiving a declarative model along with a command comprises an act of receiving a command to deploy an application based on the declarative model.
3. The method as recited in claim 1, wherein an act of receiving a declarative model along with a command comprises an act of receiving a command to undeploy an application based on the declarative model.
4. The method as recited in claim 1, wherein an act of receiving a declarative model along with a command comprises an act of receiving a command to start an application based on the declarative model.
5. The method as recited in claim 1, wherein an act of receiving a declarative model along with a command comprises an act of receiving a command to stop an application based on the declarative model.
6. The method as recited in claim 1, wherein an act of receiving a declarative model along with a command comprises an act of receiving a command to initiate or terminate monitoring of an application based on the declarative model.
7. The method as recited in claim 1, herein an act of receiving a declarative model along with a command comprises an act of receiving a command to update an application based on HM declarative model.
8. The method as recite in claim 1 wherein the act of receiving a sequence of actions that are to be performed within the specified technology comprises an act of receiving a sequence of idempotent actions.
9. A computer program product for use at a computer system within a computing environment, the computing environment including a plurality of different technologies, the computer system including one or more drivers, each driver configured to process models for a specified combination of different technologies, the computer system including one or more translator configured to process model elements representing objects within a specified technology from among the plurality of different technologies, the computer program product for implementing a method for translating a model to implement a received command within the computing environment, the computer program product comprising one or more physical storage media having stored thereon computer-executable instructions that, when executed at a processor, cause the computer system to perform the method including the following:
receive a declarative model along with a command, the declarative model and the command collectively indicating an intent to implement the command for an application based on the received declarative model;
identify a driver that is configured to process declarative models corresponding to the combination of technologies indicated in the received declarative model;
forward the received declarative model and the command to the identified driver,
parse the received declarative model to elements and their relationship to one another,
for each identified model element:
identify a translator configured to translate model elements for the specified technology corresponding to the identified model element;
send the model element to the translator;
receive a sequence of actions that are to be performed within the specified technology partially implement the command for the application, the sequence of actions being a subset of the total actions that are to be performed to fully implement the command; and
assemble the received sequence of actions for the model element into an execution plan, the received sequence of actions assembled into the execution plan in a designated order with respect to sequences of actions received for other model elements based on t]» model element’s relationship to other model elements in the received declarative model; and
execute the execution plan to implement the command for the application, execution of &e execution plan including executing the sequences of actions received for each model element in the designated order.
10. The computer program product recited in claim 9, wherein computer-executable instructions that, when executed, cause the computer system to receive a declarative model along with a command comprise computer-executable instructions that, when executed, cause the computer system to receive a command to undeploy an application based on the declarative model.
11. The computer program product recited in claim 9, wherein compute--executable instructions that, when executed, cause the computer system to receive a declarative model along with a command comprise computer-executable instructions that, when executed, cause the computer system to receive a command to initiate or terminate monitoring of an application based on the declarative model.
12. The computer program product recited in claim 9 wherein computer-executable instructions that, when executed, cause the computer system to receive a declarative model along with a command comprise computer-executable instructions that, when executed, cause the computer system to receive a command to start an application based on the declarative model.
13. The computer program product recited in claim 9, wherein computer-executable instructions that, when executed, cause the computer system to receive a declarative model along with a command comprise computer-executable instructions that, when executed, cause the computer system to receive a command stop an application based on the declarative model.
14. The computer- program product recited in claim 9, wherein computer-executable instructions that, when executed, cause the computer system to receive a declarative model along with a command comprise computer-executable instructions that, when executed, cause the computer system to receive a command to initiate or terminate monitoring of an application based on the declarative model.
15. The computer program product recited in claim 9, wherein computer-executable instructions that, when executed, cause the computer system to receive a declarative model along with a command comprise computer-executable instructions that, when executed, cause the computer system to receive a command to update an application based on the declarative model.
16. The computer- program product recited in claim 9, wherein computer-executable instructions that, when executed, cause the computer: system to receive a sequence of actions that are to be performed within the specified technology comprise computer-executable instructions that, when executed, cause the computer system to receive a sequence of idempotent actions.
.17. At a computer system within a computing environment, the computing environment including a plurality of different technologies, the computer system including one or more drivers, each driver configured to process models for a specified combination of different technologies, the computer system including one or more translators, each translator configured to process model elements representing objects within a specified technology from among the plurality of different technologies, a method for updating a model based application within the computing environment, the method comprising:
an act of receiving an declarative model along with an update command, the declarative model and the update command collectively indicating an intent to update an application based on a prior version of the received declarative model;
an act of assembling a current execution plan for the received declarative model, the current execution plan including a sequence of actions assembled in a designated order based on the relationships between model elements in the received declarative model;
an act of accessing the prior version of the received declarative model;
an act of assembling a prior execution plan for the prior version of the received decorative model, the prior execution plan including a prior sequence of actions assembled in a designated order based on the relationships between model elements in the prior version of the received declarative model;
an act of comparing the current execution plan to &e prior execution plan;
an act of deriving a new execution plan for updating the application based on the comparison; and
an act of executing the new execution plan to update the i1lication within the computing environment.
18. The method as received in claim 17, wherein the act of deriving a new execution plan for updating the i1lication based on the comparison comprises an act of including an update action in the new execution plan for at least one action included in both the current execution plan and the prior execution plan, the update action for i1)dating the action from the prior execution plan in accordance with the action from the current execution plan.
19. The method as recited in claim 17, wherein the act of deriving a new execution plan for updating the i1licatton based on the comparison comprises including at least one action included only in the current execution plan in the new execution plan.
20. The method as recited in claim 17, wherein the act of deriving a new
execution plan fen: updating the application based on the comparison comprises including a
reverse action in the new execution plan for at least one action included only in the prior
execution plan, the reverse action to eliminate the impact of 1 at least one action within
the computing environment
| Section | Controller | Decision Date |
|---|---|---|
| # | Name | Date |
|---|---|---|
| 1 | 2137-CHENP-2010-US(14)-ExtendedHearingNotice-(HearingDate-21-12-2020).pdf | 2021-10-03 |
| 1 | abs 2137-chenp-2010 abstract 15-04-2010.jpg | 2010-04-15 |
| 2 | 2137-chenp-2010 form-5 15-04-2010.pdf | 2010-04-15 |
| 2 | 2137-CHENP-2010-Written submissions and relevant documents [05-01-2021(online)].pdf | 2021-01-05 |
| 3 | 2137-CHENP-2010-Correspondence to notify the Controller [08-12-2020(online)].pdf | 2020-12-08 |
| 3 | 2137-chenp-2010 form-3 15-04-2010.pdf | 2010-04-15 |
| 4 | 2137-CHENP-2010-FORM 3 [17-03-2020(online)].pdf | 2020-03-17 |
| 4 | 2137-chenp-2010 form-1 15-04-2010.pdf | 2010-04-15 |
| 5 | 2137-CHENP-2010-PETITION UNDER RULE 137 [17-03-2020(online)].pdf | 2020-03-17 |
| 5 | 2137-chenp-2010 claims 15-04-2010.pdf | 2010-04-15 |
| 6 | 2137-CHENP-2010-Written submissions and relevant documents [17-03-2020(online)].pdf | 2020-03-17 |
| 6 | 2137-chenp-2010 pct search report 15-04-2010.pdf | 2010-04-15 |
| 7 | 2137-CHENP-2010-Correspondence to notify the Controller [25-02-2020(online)].pdf | 2020-02-25 |
| 7 | 2137-chenp-2010 pct 15-04-2010.pdf | 2010-04-15 |
| 8 | 2137-CHENP-2010-HearingNoticeLetter-(DateOfHearing-03-03-2020).pdf | 2020-02-19 |
| 8 | 2137-chenp-2010 drawings 15-04-2010.pdf | 2010-04-15 |
| 9 | 2137-chenp-2010 description(complete) 15-04-2010.pdf | 2010-04-15 |
| 9 | 2137-CHENP-2010-CLAIMS [10-09-2018(online)].pdf | 2018-09-10 |
| 10 | 2137-chenp-2010 correspondence others 15-04-2010.pdf | 2010-04-15 |
| 10 | 2137-CHENP-2010-COMPLETE SPECIFICATION [10-09-2018(online)].pdf | 2018-09-10 |
| 11 | 2137-chenp-2010 abstract 15-04-2010.pdf | 2010-04-15 |
| 11 | 2137-CHENP-2010-CORRESPONDENCE [10-09-2018(online)].pdf | 2018-09-10 |
| 12 | 2137-chenp-2010 power of attorney 15-04-2010.pdf | 2010-04-15 |
| 12 | 2137-CHENP-2010-FER_SER_REPLY [10-09-2018(online)].pdf | 2018-09-10 |
| 13 | 2137-chenp-2010 form-2 15-04-2010.pdf | 2010-04-15 |
| 13 | 2137-CHENP-2010-OTHERS [10-09-2018(online)].pdf | 2018-09-10 |
| 14 | 2137-chenp-2010 form-3 12-10-2010.pdf | 2010-10-12 |
| 14 | 2137-CHENP-2010-FER.pdf | 2018-03-13 |
| 15 | 2137-CHENP-2010 FORM-18 11-10-2011.pdf | 2011-10-11 |
| 15 | FORM-6-1401-1500(KONPAL).30.pdf | 2015-03-13 |
| 16 | 2137-CHENP-2010 CORRESPONDENCE OTHERS 11-10-2011.pdf | 2011-10-11 |
| 16 | MS to MTL Assignment.pdf | 2015-03-13 |
| 17 | MTL-GPOA - KONPAL.pdf | 2015-03-13 |
| 17 | 2137-CHENP-2010 FORM-6 02-03-2015.pdf | 2015-03-02 |
| 18 | FORM-6-1401-1500(KONPAL).30.pdf ONLINE | 2015-03-09 |
| 18 | MTL-GPOA - KONPAL.pdf ONLINE | 2015-03-09 |
| 19 | MS to MTL Assignment.pdf ONLINE | 2015-03-09 |
| 20 | FORM-6-1401-1500(KONPAL).30.pdf ONLINE | 2015-03-09 |
| 20 | MTL-GPOA - KONPAL.pdf ONLINE | 2015-03-09 |
| 21 | 2137-CHENP-2010 FORM-6 02-03-2015.pdf | 2015-03-02 |
| 21 | MTL-GPOA - KONPAL.pdf | 2015-03-13 |
| 22 | 2137-CHENP-2010 CORRESPONDENCE OTHERS 11-10-2011.pdf | 2011-10-11 |
| 22 | MS to MTL Assignment.pdf | 2015-03-13 |
| 23 | 2137-CHENP-2010 FORM-18 11-10-2011.pdf | 2011-10-11 |
| 23 | FORM-6-1401-1500(KONPAL).30.pdf | 2015-03-13 |
| 24 | 2137-CHENP-2010-FER.pdf | 2018-03-13 |
| 24 | 2137-chenp-2010 form-3 12-10-2010.pdf | 2010-10-12 |
| 25 | 2137-CHENP-2010-OTHERS [10-09-2018(online)].pdf | 2018-09-10 |
| 25 | 2137-chenp-2010 form-2 15-04-2010.pdf | 2010-04-15 |
| 26 | 2137-chenp-2010 power of attorney 15-04-2010.pdf | 2010-04-15 |
| 26 | 2137-CHENP-2010-FER_SER_REPLY [10-09-2018(online)].pdf | 2018-09-10 |
| 27 | 2137-chenp-2010 abstract 15-04-2010.pdf | 2010-04-15 |
| 27 | 2137-CHENP-2010-CORRESPONDENCE [10-09-2018(online)].pdf | 2018-09-10 |
| 28 | 2137-chenp-2010 correspondence others 15-04-2010.pdf | 2010-04-15 |
| 28 | 2137-CHENP-2010-COMPLETE SPECIFICATION [10-09-2018(online)].pdf | 2018-09-10 |
| 29 | 2137-chenp-2010 description(complete) 15-04-2010.pdf | 2010-04-15 |
| 29 | 2137-CHENP-2010-CLAIMS [10-09-2018(online)].pdf | 2018-09-10 |
| 30 | 2137-chenp-2010 drawings 15-04-2010.pdf | 2010-04-15 |
| 30 | 2137-CHENP-2010-HearingNoticeLetter-(DateOfHearing-03-03-2020).pdf | 2020-02-19 |
| 31 | 2137-CHENP-2010-Correspondence to notify the Controller [25-02-2020(online)].pdf | 2020-02-25 |
| 31 | 2137-chenp-2010 pct 15-04-2010.pdf | 2010-04-15 |
| 32 | 2137-CHENP-2010-Written submissions and relevant documents [17-03-2020(online)].pdf | 2020-03-17 |
| 32 | 2137-chenp-2010 pct search report 15-04-2010.pdf | 2010-04-15 |
| 33 | 2137-CHENP-2010-PETITION UNDER RULE 137 [17-03-2020(online)].pdf | 2020-03-17 |
| 33 | 2137-chenp-2010 claims 15-04-2010.pdf | 2010-04-15 |
| 34 | 2137-CHENP-2010-FORM 3 [17-03-2020(online)].pdf | 2020-03-17 |
| 34 | 2137-chenp-2010 form-1 15-04-2010.pdf | 2010-04-15 |
| 35 | 2137-CHENP-2010-Correspondence to notify the Controller [08-12-2020(online)].pdf | 2020-12-08 |
| 35 | 2137-chenp-2010 form-3 15-04-2010.pdf | 2010-04-15 |
| 36 | 2137-CHENP-2010-Written submissions and relevant documents [05-01-2021(online)].pdf | 2021-01-05 |
| 36 | 2137-chenp-2010 form-5 15-04-2010.pdf | 2010-04-15 |
| 37 | 2137-CHENP-2010-US(14)-ExtendedHearingNotice-(HearingDate-21-12-2020).pdf | 2021-10-03 |
| 37 | abs 2137-chenp-2010 abstract 15-04-2010.jpg | 2010-04-15 |
| 1 | search_2137CHENP2010_15-12-2017.pdf |