A form may be generated by using a variety of techniques. Once such technique may include dragging and dropping blocks of information into a user interface. Once the blocks of information are dragged and dropped into the user interface, the information may be analyzed to generate a static form. In this regard, it is technically challenging to build a complex form that is not limited to such blocks of information that are available to generate a form. Once a static form is generated, the form may need to be edited. In this regard, the environment in which the static form was generated may be redeployed to modify the static form. In this regard, it is technically challenging to build and edit a complex form in a live environment, without having to redeploy the live environment.
Features of the present disclosure are illustrated by way of example and not limited in the following figure(s), in which like numerals indicate like elements, in which:
For simplicity and illustrative purposes, the present disclosure is described by referring mainly to examples. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. It will be readily apparent however, that the present disclosure may be practiced without limitation to these specific details. In other instances, some methods and structures have not been described in detail so as not to unnecessarily obscure the present disclosure.
Throughout the present disclosure, the terms “a” and “an” are intended to denote at least one of a particular element. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on.
Dynamic responsive form creation apparatuses, methods for dynamic responsive form creation, and non-transitory computer readable media having stored thereon machine readable instructions to provide dynamic responsive form creation are disclosed herein. The apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the definition and generation of responsive forms. The responsive forms may be used, for example, to collect and validate data for a project. Based on the utilization of the responsive forms, any changes with respect to a project may be readily implemented and displayed at a production level environment. In this regard, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the building of dynamic forms on the fly in a live environment, without having to redeploy the environment.
As disclosed herein, a form may be generated, for example, by dragging and dropping blocks of information into a user interface. Once the blocks of information are dragged and dropped into the user interface, the information may be analyzed to generate a static form. In this regard, it is technically challenging to build a complex form that is not limited to such blocks of information that are available to generate a form. Once a static form is generated, the form may need to be edited. In this regard, the environment in which the static form was generated may be redeployed to modify the static form. In this regard, it is technically challenging to build and edit a complex form in a live environment, without having to redeploy the live environment.
Yet further, with respect to dynamic responsive form creation, an example of operation of the apparatuses, methods, and non-transitory computer readable media is disclosed herein with respect to a portal, such as the Microsoft™ Cloud Partner Portal™, that may be utilized to manage how a company's products and services are displayed across different websites. In this regard, the portal may be utilized by a user, such as an Internet service provider (ISP) or a publisher, to define projects. A project may be described as details of products or services of a company. As disclosed herein, the process of defining a project may include implementation of code to define the project, testing of the code, and a multi-day procedure for deployment of the project. If the project is to be modified for reasons such as changes to the project, bug fixes, etc., such a modification may also iclude modification of the code, testing of the modified code, and a further multi-day procedure for deployment of the modified project. For example, with respect to services such as Azure™ compute, Azure™ storage, and other such services, if an update is made to a service, the update may also need to be made to support virtual machines, test applications, or other products that are being offered. In this regard, it is technically challenging to implement a project in an efficient and expedited manner, without implementation of code to define the project, testing of the code, and a multi-day procedure for deployment of the project. It is also technically challenging to implement modifications to an existing project in an efficient and expedited manner, without modification of the code, testing of the modified code, and the further multi-day procedure for deployment of the modified project.
In order to address at least the aforementioned technical challenges, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the definition and generation of responsive forms. A form may be described as a list of fields (e.g., text fields, image upload fields, drop-down values, toggle fields, etc.). For example, the fields may define a project type. A form may be defined and generated, for example, via JavaScript Object Notation (JSON), and may include unique styles, workflows, and conditional rules. The apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the definition of fields that may show up in a portal, such as the Microsoft™ Cloud Partner Portal™, where a user, such as a publisher, may input information for their project. The field as disclosed herein may be defined via a JSON file, input, and any changes may be immediately shown downstream, for example, on a production web application. For example, any change that is made to a project type definition, which may be referred to as a JSON definition that defines contents of a form, may be immediately shown to a user, such as a publisher. Moreover, the fields may be saved on-the-fly (e.g., in a live environment), as opposed to the need for a user to wait for a code change, deployment, testing, and rollout. With respect to projects, forms may also be used to display and validate inputs.
According to examples disclosed herein, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for definition of validations with respect to inputs, for example, on text fields, drop-down fields, image uploads, and other such fields.
According to examples disclosed herein, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for customization of the behavior of a form, and validation, for example, for each project type.
According to examples disclosed herein, certain operations of the apparatuses, methods, and non-transitory computer readable media disclosed herein may be controlled via a JSON object. The JSON object may be denoted a project type. A project type may include specifications of what the JSON object for the project looks like, the user interface used to collect data for the project, validations that are performed on fields of the project (e.g., both on the client and server side), locking that is performed on properties of the project, and scoping. The project type may also include specifications of locking that is applied to elements that are not to be changed after they have been published. Further, the project type may include specifications of conditions that are used to decide whether a property is needed/visible if another property (or properties) has a specified value.
Project types that share certain types of functionalities may be combined into one project type definition. In this regard, a project type may include another project type as a child by utilizing mixins. Mixins, as disclosed herein, may provide for the sharing of project type definitions amongst multiple different project types, for example, when the same type of data is to be collected. For example, with respect to projects such as virtual machines projects and test application projects as disclosed herein, such projects may share certain fields. In this regard, instead of duplicating code for such shared fields, a reference may be made to each of the project type definition JSONs, and the shared fields may show up in each of the forms in the portal. According to another example, with respect to examples of projects such as virtual machines projects and test application projects as disclosed herein, if the same data is to be collected for a “marketplace” storefront (e.g., an “Azure™ marketplace” storefront), these two projects may include a “marketplace” mixin.
With respect to examples of projects such as virtual machines projects, test application projects, and container projects as disclosed herein, JSON definitions of such projects may include fields, any validations, and/or conditional information. Fields may be described as any entries in a project in which data may be input, or a selection may be made. Validations may be described as any type of check that is performed on an entry with respect to a field to ensure that the entry is compliant with a rule related to the field. Conditional information may be described as information that may be utilized on a form to show or hide certain fields, depending on values of other fields, for example, within the project.
According to examples disclosed herein, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the building and editing of dynamic and complex forms on-the-fly (e.g., in a live environment). In this regard, a user, such as an administrator for a portal, may declare how the user would prefer to collect data for a project, which may make the project GET/PUT application programming interfaces (APIs) include customizable behaviors (e.g., different validations, different object shapes, etc.) for different types of projects.
According to examples disclosed herein, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the expedited conversion of new project type definitions to live projects. In this regard, development time with respect to a new project may be minimized. Similarly, modification of projects may be minimized with respect to bug fixes, and other such anomalies.
According to examples disclosed herein, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the generation of fully usable forms based on a single configuration file (e.g., a project type definition JSON). In this regard, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the elimination of code deployment. For example, an updated form may be shown in a portal by first proceeding to a project type definition page, inputting the JSON, and saving the input.
For the apparatuses, methods, and non-transitory computer readable media disclosed herein, modules, as described herein, may be any combination of hardware and programming to implement the functionalities of the respective modules. In some examples described herein, the combinations of hardware and programming may be implemented in a number of different ways. For example, the programming for the modules may be processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the modules may include a processing resource to execute those instructions. In these examples, a computing device implementing such modules may include the machine-readable storage medium storing the instructions and the processing resource to execute the instructions, or the machine-readable storage medium may be separately stored and accessible by the computing device and the processing resource. In some examples, some modules may be implemented in circuitry.
Referring to
According to examples disclosed herein, the indication of the modification to the field 106 of the form 104 may include the indication of an addition of a new field to the form 104, or the indication of a change to an existing field of the form 104.
A schema modification module 110 may determine, in the live environment and based on the indication of the modification to the field 106 of the form 104, a modification to a schema 112. According to examples disclosed herein, the schema 112 may be a schema of the project type 108.
According to examples disclosed herein, the schema 112 may include a JSON schema.
A schema transformation module 114 may transform, in the live environment, the modification to the schema 112 to generate a transformed schema 116. The transformed schema 116 may be in a format that is usable to modify the form 104.
An input analysis module 118 may obtain, in the live environment and based on a modified form 120 generated from the transformed schema 116, an input 122 associated with the field 106.
According to examples disclosed herein, the input analysis module 118 may determine, in the live environment, whether the input 122 is valid by analyzing a validation associated with the field 106.
Based on a determination that the input 122 is invalid, the input analysis module 118 may generate an indication of invalidity associated with the field 106.
According to examples disclosed herein, based on a determination that the input 122 is valid, a modified project generation module 124 may generate a modified project 126 associated with the project type 108.
According to examples disclosed herein, the indication of the modification to the field 106 of the form 104 may include the modification to the field 106 that includes a locking field. In this regard, based on a determination that the input 122 associated with the locking field is to be locked, for example, upon publication of the modified project 126, the input analysis module 118 may generate an indication that the input 122 is not changeable, for example, upon the publication of the modified project 126.
According to examples disclosed herein, the indication of the modification to the field 106 of the form 104 may include the modification to the field 106 that is a child (e.g., mixins as disclosed herein) of another form (or another project type). In this regard, the modified project generation module 124 may modify a field of the another form (or the another project type) based on the modification to the field 106 of the modified form (or the modified project 126).
According to examples disclosed herein, the indication of the modification to the field 106 of the form 104 may include the modification to a scope of the field 106 of the form 104. In this regard, the modified project generation module 124 may duplicate the modification to the field 106 within the modified form (or the modified project 126) based on the scope.
A form generation module 128 may obtain, in a live environment, a specification 130 of a field for a new form 132. For example, the new form 132 may be associated with a new form project type 134. In this regard, the schema modification module 110 may determine, in the live environment and based on the specification 130 of the field for the new form 132, a modification to a schema. For example, the schema may be of the new form project type 134. The schema transformation module 114 may transform, in the live environment, the modification to the schema (e.g., of the new form project type 134) to generate a transformed schema. The transformed schema may be in a format that is usable to generate the new form 132. The form generation module 128 may generate, in the live environment and from the transformed schema, the new form 132. For example, the new form 132 may be for display of the product or service on the specified website.
According to examples disclosed herein, the input analysis module 118 may obtain, based on the new form 132 generated from the transformed schema, an input associated with the field for the new form 132. Based on a determination that the input is valid, a project generation module 136 may generate a project 138 associated with the new form project type 134. The new form project type 134 may be for display of a specified product or service on a specified website.
According to examples disclosed herein, the specification 130 of the field for the new form 132 may include the specification 130 for the field that includes a locking field. In this regard, based on a determination that the input associated with the locking field is to be locked upon publication, for example, of the project 138, the input analysis module 118 may generate an indication that the input is not changeable, for example, upon the publication of the project 138.
According to examples disclosed herein, the specification 130 of the field for the new form 132 may include the specification 130 for the field that is a child of another form. In this regard, the form generation module 128 may modify a field of the another form based on the field of the new form 132.
According to examples disclosed herein, the specification 130 of the field for the new form 132 may include the specification 130 for a scope of the field for the new form 132. In this regard, the form generation module 128 may duplicate the field within the new form 132 based on the scope.
Operation of the apparatus 100 is described in further detail with reference to
Referring to
A project type may include specifications of what a JSON object for a project looks like, the user interface used to collect data for the project, validations that are performed in fields of the project (e.g., both on the client and server side), locking that is performed on properties of the project, and scoping. Examples of these aspects of a project type are disclosed herein with reference to
For example,
Referring to
With continued reference to
With respect to unique styles for forms as disclosed herein, features such as section headers, file names, etc., may be shown or hidden as needed.
With respect to workflows as disclosed herein, if certain fields such as “Hide this SKU” at 306 are toggled to yes, then the remainder of the form may not be hidden and may not proceed through validation. In this regard, if the field “Hide this SKU” is set to yes, downstream services may be notified to proceed to a different workflow.
With respect to specifications of what a JSON object for a project looks like, as disclosed herein, a form may be described as a list of fields (e.g., text fields, image upload fields, drop-down values, toggle fields, etc.) that define a project type. For example, the project settings at 308 may include different tabs such as “SKUs”, “Test Drive”, “Marketplace”, “Support”. Some of these tabs may represent different project type mixins. For example, referring to
With respect to validations, examples of validations may include “not the same as”, “limit values”, “cross reference rules”, “conditional info”, etc.
With respect to validations that include “not the same as”, such a validation may assert that all fields within a form set cannot have the same value.
With respect to validations that include “limit values”, such a validation may assert that a certain set of answers are not chosen when a condition is met. For example, for virtual machines, when an operating system family is “Family XYZ”, operating system type may be limited to “ABC”, “DEF”, etc.
With respect to validations that include “cross reference rules”, such rules may be defined on one field, but applied to a destination field. In this regard, the destination field may be within the same project type or a mixin that is included in the project type definition. Cross reference rules may be applied to other validations such as “not the same as”, “limit values”, “required when”, etc. The “required when” validation may specify a field value to be entered when another field value is specified. In order for the cross reference rules to be applied to two different fields, the destination field may be provided with access to the source field's value(s).
With respect to validations that include “conditional info”, this field may determine whether an element is visible based on a value of another field within a project. The “conditional info” validation may be utilized for fields that are mutually exclusive, or if a user answers a question that triggers follow-up questions that may not be needed for all users. For example, in virtual machines, a field may determine whether a project is private or not (e.g., is visible to users that are part of a specific subscription).
With respect to validations, referring to
With respect to locking (e.g., a locking field as disclosed herein) that is performed on properties of the project, referring to
With respect to scoping (e.g., scope as disclosed herein), certain fields may be available to a section of a project, or a SKU within a project (e.g., in the case of virtual machines). For example, referring to
Referring to
Referring again to
As disclosed herein, the apparatus 100 may also provide for features such as client service validations, cross form references, and state management of user interface elements based on global states.
With respect to client service validations, if a field is input with an invalid value (e.g., a string is too long as disclosed herein with respect to the “validation” field at 212 of
With respect to cross form references, referring, for example, to the container project 400, with respect to the different tabs such as “Project Settings”, “SKUs”, “Marketplace”, and “Support” at 404, validations may be defined via the project type JSON. For example, with respect to the SKU details at 406, the title may define the project title with respect to SKU details, as well as the title in other sections such as “Project Settings”, “Marketplace”, etc.
With respect to state management of user interface elements based on global states, a draft state may indicate that there are changes to a field of a project that have not been saved. A save state may indicate that there are no changes to any of the fields of a project. A publish state may indicate a project has been published, which may trigger the “lockOnPublish” at 222. Thus, global states may represent the draft, saved, and published states of a project.
Referring to
Referring to
Referring to
Referring to
Referring to
Referring to
The processor 802 of
Referring to
The processor 802 may fetch, decode, and execute the instructions 808 to determine, in the live environment and based on the indication of the modification to the field 106 of the form 104, a modification to a schema 112.
The processor 802 may fetch, decode, and execute the instructions 810 to transform, in the live environment, the modification to the schema 112 to generate a transformed schema 116.
The processor 802 may fetch, decode, and execute the instructions 812 to obtain, in the live environment and based on a modified form 120 generated from the transformed schema 116, an input 122 associated with the field.
The processor 802 may fetch, decode, and execute the instructions 814 to determine, in the live environment, whether the input 122 is valid by analyzing a validation associated with the field.
Referring to
At block 904, the method may include determining, in the live environment and based on the specification 130 of the field for the new form 132, a modification to a schema.
At block 906, the method may include transforming, in the live environment, the modification to the schema to generate a transformed schema.
At block 908, the method may include generating, in the live environment and from the transformed schema, the new form 132.
Referring to
The processor 1004 may fetch, decode, and execute the instructions 1008 to determine, in the live environment and based on the indication of the modification to the field 106 of the form 104, a modification to a schema 112.
The processor 1004 may fetch, decode, and execute the instructions 1010 to transform, in the live environment, the modification to the schema 112 to generate a transformed schema 116.
The processor 1004 may fetch, decode, and execute the instructions 1012 to generate, in the live environment and from the transformed schema 116, a modified form 120.
What has been described and illustrated herein is an example along with some of its variations. The terms, descriptions and figures used herein are set forth by way of illustration only and are not meant as limitations. Many variations are possible within the spirit and scope of the subject matter, which is intended to be defined by the following claims—and their equivalents—in which all terms are meant in their broadest reasonable sense unless otherwise indicated.