КОМПИЛЯЦИЯ ПРЕОБРАЗОВАНИЙ В ПОЛЬЗОВАТЕЛЬСКОМ ИНТЕРФЕЙСЕ ПОВТОРНЫХ ВЫЧИСЛЕНИЙ
COMPILATION OF TRANSFORMATIONS IN RECALCULATION USER INTERFACE

Уровень техники
[0001] "Документ для повторных вычислений" представляет собой электронный документ, который показывает различные источники данных и приемники данных и обеспечивает возможность декларативного преобразования между источником данных и приемником данных. Для любого данного набора преобразований, соединяющих между собой различные источники данных и приемники данных, вывод источника данных может быть использован приемником данных, либо вывод источника данных может подвергаться преобразованиям до использования приемником данных. Эти различные преобразования оцениваются, что приводит к одному или более выводам, представляемым по всему документу для повторных вычислений.
[0002] Пользователь может добавлять и редактировать декларативные преобразования без углубленных знаний кодирования. Такое редактирование автоматически приводит к повторному вычислению преобразований, приводя к изменению одного из более выводов.
[0003] Конкретный пример документа для повторных вычислений представляет собой документ в форме электронной таблицы, который включает в себя сетку ячеек. Любая конкретная ячейка может включать в себя выражение, которое оценивается, чтобы выводить конкретное значение, которое отображается в ячейке. Выражение может означать источник данных, такой как одна или более других ячеек или значений.
Сущность изобретения
[0004] По меньшей мере, некоторые варианты осуществления, описанные в данном документе, относятся к компиляции цепочки преобразований пользовательского интерфейса повторных вычислений. Цепочка преобразований включает в себя декларативные преобразования между соответствующими источниками данных и приемниками данных. Например, в контексте электронной таблицы, приемник данных может представлять собой конкретную ячейку электронной таблицы, преобразование может представлять собой выражение, ассоциированное с конкретной ячейкой, а источник данных может представлять собой одну или более других ячеек или конкретных значений, на которые ссылаются в выражении. Редактирование пользователем пользовательского интерфейса повторных вычислений может приводить к повторному выполнению одного или более преобразований, в силу этого приводя к повторному вычислению.
[0005] Компиляция заключает в себе анализ цепочки преобразований пользовательского интерфейса повторных вычислений на предмет зависимостей, чтобы создавать граф зависимостей из зависимостей между объектами. Например, некоторые зависимости могут быть между объектами, так что они указывают то, что если оценивается один объект, то другой также должен оцениваться. Другие зависимости могут указывать пользовательские события, от которых зависит оценка объекта. Граф зависимостей затем используется для того, чтобы создавать нижний уровень этапов выполнения. Граф зависимостей дополнительно предоставлен в среду выполнения для программы, так что граф зависимостей может быть доступным в ходе работы пользовательского интерфейса повторных вычислений.
[0006] Это краткое изложение сущности изобретения не имеет намерение ни идентифицировать ключевые или важнейшие признаки заявленного изобретения, ни использоваться в качестве помощи при определении объема заявленного изобретения.
Краткое описание чертежей
[0007] Чтобы описывать способ, которым могут получаться вышеизложенные и другие признаки и преимущества, в частности, повышение эффективности компиляции преобразований в пользовательском интерфейсе повторных вычислений, приводится более подробное описание различных вариантов осуществления в отношении прилагаемых чертежей. При условии того, что эти чертежи изображают только примерные варианты осуществления и, следовательно, не должны рассматриваться как ограничивающие объем изобретения, изобретение описывается и поясняется с помощью дополнительной специфичности и подробностей посредством использования прилагаемых чертежей, на которых:
[0008] Фиг. 1 абстрактно иллюстрирует вычислительную систему, в которой могут использоваться некоторые варианты осуществления, описанные в данном документе;
[0009] Фиг. 2 абстрактно иллюстрирует примерный пользовательский интерфейс повторных вычислений, который иллюстрирует несколько источников данных и приемников данных с промежуточными преобразованиями и используется как конкретный пример, представленный для того, чтобы объяснять в широком смысле принципы, представленные в данном документе;
[0010] Фиг. 3 иллюстрирует примерное окружение компиляции, которое включает в себя компилятор, который осуществляет доступ к цепочке преобразований и формирует компилированный код, а также цепочку зависимостей; и
[0011] Фиг. 4 иллюстрирует блок-схему последовательности операций способа для компилирования цепочки преобразований пользовательского интерфейса повторных вычислений;
[0012] Фиг. 5 иллюстрирует окружение, в котором могут использоваться принципы настоящего изобретения, включающее в себя управляемую данными композиционную инфраструктуру, которая составляет композицию представлений, которая зависит от входных данных;
[0013] Фиг. 6 иллюстрирует конвейерное окружение, которое представляет один пример окружения по фиг. 5;
[0014] Фиг. 7 схематично иллюстрирует вариант осуществления части данных конвейера по фиг. 6;
[0015] Фиг. 8 схематично иллюстрирует вариант осуществления части аналитики конвейера по фиг. 6; и
[0016] Фиг. 9 схематично иллюстрирует вариант осуществления части представлений конвейера по фиг. 6.
Подробное описание изобретения
[0017] По меньшей мере, некоторые варианты осуществления, описанные в данном документе, относятся к компиляции цепочки преобразований пользовательского интерфейса повторных вычислений. Пользовательский интерфейс повторных вычислений, например, может представлять собой документ для повторных вычислений, такой как электронная таблица. Тем не менее, пользовательский интерфейс повторных вычислений может представлять собой любое отображаемое электронное полотно, которое включает в себя один или более отображаемых результатов цепочки преобразований. Цепочка преобразований включает в себя множество преобразований между соответствующим источником данных и приемником данных. Редактирование пользователем пользовательского интерфейса повторных вычислений может приводить к повторному выполнению одного или более преобразований, в силу этого приводя к повторному вычислению.
[0018] Компиляция заключает в себе анализ цепочки преобразований пользовательского интерфейса повторных вычислений на предмет зависимостей, чтобы создавать граф зависимостей из зависимостей между объектами. Например, некоторые зависимости могут быть между объектами, так что они указывают то, что если оценивается один объект, то другой также должен оцениваться. Граф зависимостей затем используется для того, чтобы создавать нижний уровень этапов выполнения. Граф зависимостей дополнительно предоставлен в среду выполнения для программы, так что граф зависимостей может быть доступным в ходе работы пользовательского интерфейса повторных вычислений.
[0019] Ниже описывается некоторое вводное пояснение вычислительной системы относительно фиг. 1. После этого описывается компилирование цепочки преобразований пользовательского интерфейса повторных вычислений относительно последующих чертежей.
[0020] Вычислительные системы сегодня все в большей степени принимают множество форм. Вычислительные системы могут представлять собой, например, карманные устройства, бытовые приборы, переносные компьютеры, настольные компьютеры, мейнфреймы, распределенные вычислительные системы или даже устройства, которые традиционно не считаются вычислительной системой. В этом описании и в формуле изобретения, термин "вычислительная система" задается в широком смысле как включающий в себя любое устройство или систему (либо их комбинацию), которая включает в себя, по меньшей мере, один физический и материальный процессор и физическое и материальное запоминающее устройство, допускающее наличие машиноисполняемых команд, которые могут выполняться посредством процессора. Запоминающее устройство может принимать любую форму и может зависеть от характера и формы вычислительной системы. Вычислительная система может быть распределена по сетевому окружению и может иметь несколько составляющих вычислительных систем.
[0021] Как проиллюстрировано на фиг. 1, в своей самой базовой конфигурации вычислительная система 100 типично включает в себя, по меньшей мере, один процессор 102 и запоминающее устройство 104. Запоминающее устройство 104 может представлять собой физическое системное запоминающее устройство, которое может быть энергозависимым, энергонезависимым либо комбинацией вышеозначенного. Термин "запоминающее устройство" также может быть использован в данном документе для того, чтобы ссылаться на энергонезависимое устройство хранения большой емкости, такое как физические носители хранения данных. Если вычислительная система является распределенной, возможности обработки, запоминающего устройства и/или хранения также могут быть распределенными. При использовании в данном документе, термин "выполняемый модуль" или "выполняемый компонент" может означать программные объекты, маршрутизации или способы, которые могут выполняться в вычислительной системе. Различные компоненты, модули, механизмы и службы, описанные в данном документе, могут быть реализованы как объекты или процессы, которые выполняются в вычислительной системе (к примеру, как отдельные подпроцессы).
[0022] В нижеследующем описании, варианты осуществления поясняются со ссылкой на этапы, которые выполняются посредством одной или более вычислительных систем. Если эти этапы реализованы в программном обеспечении, один или более процессоров ассоциативно связанной вычислительной системы, которая выполняет этап, управляют работой вычислительной системы в ответ на выполнение машиночитаемых инструкций. Например, такие машиноисполняемые инструкции могут быть осуществлены на одном или более машиночитаемых носителей, которые формируют компьютерный программный продукт. Пример такой операции заключает в себе обработку данных. Машиноисполняемые инструкции (и обработанные данные) могут сохраняться в запоминающем устройстве 104 вычислительной системы 100. Вычислительная система 100 также может содержать каналы 108 связи, которые дают возможность вычислительной системе 100 обмениваться данными с другими процессорами сообщений, например, по сети 110. Вычислительная система 100 также включает в себя дисплей 112, который может использоваться для того, чтобы отображать визуальные представления пользователю.
[0023] Варианты осуществления, описанные в данном документе, могут содержать или использовать компьютер специального назначения или общего назначения, включающий в себя компьютерные аппаратные средства, такие как, например, один или более процессоров и системное запоминающее устройство, как подробнее поясняется ниже. Варианты осуществления, описанные в данном документе, также включают в себя физические и другие машиночитаемые носители для переноса или сохранения машиноисполняемых инструкций и/или структур данных. Эти машиночитаемые носители могу представлять собой любые доступные носители, к которым можно осуществлять доступ посредством компьютерной системы общего назначения или специального назначения. Машиночитаемые носители, которые сохраняют машиноисполняемые инструкции, представляют собой физические носители хранения данных. Машиночитаемые носители, которые переносят машиноисполняемые инструкции, представляют собой среды передачи. Таким образом, в качестве примера, а не ограничения, варианты осуществления изобретения могут содержать, по меньшей мере, два совершенно различных типа машиночитаемых носителей: компьютерные носители хранения данных и среды передачи.
[0024] Компьютерные носители хранения данных включают в себя RAM, ROM, EEPROM, CD-ROM или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках либо другие магнитные устройства хранения данных или любой другой материальный носитель, который может использоваться для того, чтобы сохранять требуемое средство программного кода в форме машиноисполняемых инструкций или структур данных и к которому может осуществляться доступ посредством компьютера общего назначения или специального назначения.
[0025] "Сеть" определена как одна или более линий передачи данных, которые допускают передачу электронных данных между компьютерными системами и/или модулями и/или другими электронными устройствами. Когда информация передается или предоставляется по сети или другим соединениям связи (проводным, беспроводным либо комбинации проводных и беспроводных) в компьютер, компьютер надлежащим образом рассматривает соединение в качестве среды передачи. Среды передачи могут включать в себя сеть и/или линии связи для передачи данных, которые могут использоваться для того, чтобы переносить требуемое средство программного кода в форме машиноисполняемых инструкций или структур данных и к которым может осуществляться доступ посредством компьютера общего назначения или специального назначения. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.
[0026] Дополнительно, после достижения различных компонентов компьютерной системы, средство программного кода в форме машиноисполняемых инструкций или структур данных может передаваться автоматически из сред передачи в компьютерные носители хранения данных (или наоборот). Например, машиноисполняемые инструкции или структуры данных, принятые по сети или линии связи для передачи данных, могут быть буферизованы в RAM в пределах сетевого интерфейсного модуля (например, NIC) и затем в конечном счете переданы в RAM компьютерной системы и/или в менее энергозависимые компьютерные носители хранения данных в компьютерной системе. Таким образом, следует понимать, что компьютерные носители хранения данных могут быть включены в компоненты компьютерной системы, которые также (или даже главным образом) используют среды передачи.
[0027] Машиночитаемые инструкции содержат, например, инструкции и данные, которые при выполнении в процессоре инструктируют компьютеру общего назначения, компьютеру специального назначения или устройству обработки специального назначения выполнять определенную функцию или группу функций. Машиноисполняемые инструкции, например, могут представлять собой двоичные файлы, инструкции в промежуточном формате, к примеру, на языке ассемблера или даже в исходном коде. Хотя изобретение описано на языке, характерном для структурных признаков и/или технологических этапов, следует понимать, что объем изобретения, определяемый прилагаемой формулой изобретения, не обязательно ограничен описанными признаками или этапами, описанными выше. Наоборот, описанные признаки и этапы раскрываются как примерные формы реализации формулы изобретения.
[0028] Специалисты в данной области техники должны принимать во внимание, что изобретение может осуществляться на практике в сетевых вычислительных окружениях с множеством типов конфигураций компьютерных систем, включающих в себя персональные компьютеры, настольные компьютеры, переносные компьютеры, процессоры сообщений, карманные устройства, многопроцессорные системы, микропроцессорные или программируемые бытовые электронные приборы, сетевые PC, миникомпьютеры, мэйнфреймы, мобильные телефоны, PDA, устройства поискового вызова, маршрутизаторы, коммутаторы и т.п. Изобретение также может осуществляться на практике в распределенных системных окружениях, в которых локальные и удаленные компьютерные системы, которые соединены (посредством проводных линий связи для передачи данных, беспроводных линий связи для передачи данных или посредством комбинации проводных и беспроводных линий связи для передачи данных) через сеть, выполняют задачи. В распределенном системном окружении, программные модули могут размещаться как в локальных, так и в удаленных запоминающих устройствах.
[0029] В этом описании и в формуле изобретения, "пользовательский интерфейс повторных вычислений" представляет собой интерфейс, с которым может взаимодействовать пользователь и который возникает в окружении, в котором существует один или более источников данных и один или более приемников данных. Кроме того, существует набор преобразований, которые могут быть декларативно заданы между одним или более источников данных и приемником данных. Например, вывод одного источника данных подается в преобразование, и результат из преобразования затем предоставляется в приемник данных, что потенциально приводит к некоторому изменению визуализации пользователю.
[0030] Преобразования являются "декларативными" в том смысле, что пользователь без специальных знаний кодирования может записывать объявления, которые задают преобразование. Поскольку преобразование задается декларативно, пользователь может изменять декларативное преобразование. В ответ, выполняется повторное вычисление, что приводит, возможно, к предоставлению различных данных в приемники данных.
[0031] Классический пример пользовательского интерфейса повторных вычислений представляет собой документ в форме электронной таблицы. Документ в форме электронной таблицы включает в себя сетку ячеек. Первоначально, ячейки являются пустыми, и в силу этого ячейка программы электронных таблиц имеет потенциал для того, чтобы представлять собой источник данных или приемник данных, в зависимости от смысла и контекста декларативных выражений, введенных пользователем. Например, пользователь может выбирать данную ячейку и вводить выражение в эту ячейку. Выражение может заключаться просто в выражаемом скалярном значении, которое должно назначаться этой ячейке. Эта ячейка впоследствии может использоваться в качестве источника данных. Альтернативно, выражение для данной ячейки может иметь форму уравнения, в котором входные значения принимаются из одной или более других ячеек. В этом случае, данная ячейка представляет собой приемник данных, который отображает результат преобразования. Тем не менее, в ходе длительной авторской разработки, эта ячейка может использоваться в качестве приемника данных для еще одних других преобразований, декларативно выполняемых автором.
[0032] Автор документа в форме электронной таблицы не должен быть обязательно экспертом по императивному коду. Автор просто выполняет объявления, которые задают преобразование и выбор соответствующих приемников данных и источников данных. Фиг. 5-9, описанные в дальнейшем, предоставляют более обобщенную декларативную среду разработки, в которой описывается более обобщенный пользовательский интерфейс повторных вычислений. В этом нижеописанном окружении, визуализированные элементы управления могут служить как в качестве источников данных, так и в качестве приемников данных. Кроме того, авторская разработка декларативных преобразований может более интуитивно создаваться посредством простых обработок этих элементов управления.
[0033] Фиг. 2 абстрактно иллюстрирует примерный пользовательский интерфейс 200 повторных вычислений, который является конкретным примером, предоставленным для того, чтобы пояснять более широкие принципы, описанные в данном документе. Пользовательский интерфейс 200 повторных вычислений является просто примером, поскольку принципы, описанные в данном документе, могут применяться к любому пользовательскому интерфейсу повторных вычислений, чтобы создавать множество пользовательских интерфейсов повторных вычислений для множества вариантов применения.
[0034] Пользовательский интерфейс 200 повторных вычислений включает в себя несколько декларативных преобразований 211-215. Пунктирная окружность вокруг каждой из стрелок, представляющих преобразования 211-216, символизирует то, что преобразования выполняются в декларативной форме.
[0035] В этом конкретном примере по фиг. 2, преобразование 211 включает в себя соответствующий источник 201 данных и приемник 202 данных. Следует отметить, что приемник данных для одного преобразования также может представлять собой источник данных для другого преобразования. Например, приемник 202 данных для преобразования 211 также служит в качестве источника данных для преобразования 212. Кроме того, преобразование может иметь несколько источников данных. Таким образом, цепочка преобразования может задаваться иерархической и в силу этого достаточно сложной. Например, преобразование 212 включает в себя источник 202 данных и приемник 203 данных. Приемник 203 данных включает в себя два источника данных; а именно, источник 202 данных для преобразования 212 и источник 205 данных для преобразования 214. Тем не менее, возможно одно преобразование приводит два источника 202 и 205 данных в приемник 203 данных. Преобразование 213 включает в себя источник 204 данных и приемник 205 данных.
[0036] Если пользовательский интерфейс повторных вычислений представляет собой документ в форме электронной таблицы, например, различные источники/приемники 201-205 данных могут представлять собой ячейки электронной таблицы, и в этом случае преобразования представляют выражение, которое должно быть ассоциировано с каждым приемником данных. Вывод каждого выражения отображается в ячейке. Таким образом, в случае электронной таблицы. Источники/приемники данных могут представлять собой сложные визуализированные элементы управления, которые имеют и включают в себя входные параметры и выходные параметры в/из цепочки преобразований. Например, на фиг. 2, предусмотрено дополнительное декларативное преобразование 215, которое приводит из источника 205 данных в приемник 201 данных. Таким образом, источник/приемник 201 данных может визуализировать информацию, представляющую вывод из преобразования 215, а также предоставлять дополнительные данные в другие приемники данных.
[0037] Пользовательские интерфейсы повторных вычислений не должны обязательно иметь элементов управления визуализацией. Один пример этого представляет собой пользовательский интерфейс повторных вычислений, предназначенный для того, чтобы выполнять вычисление на основе преобразования, потребляющее данные источника и обновляющее данные приемника, без отображения пользователю информации в отношении вычисления в нормальном случае. Например, пользовательский интерфейс повторных вычислений может поддерживать фоновое вычисление. Второй пример представляет собой пользовательский интерфейс повторных вычислений, который имеет элементы управления выводом, которые управляют внешними актуаторами, такими как клапаны, в примере управления технологическим процессом. Такие элементы управления являются аналогичными элементам управления отображением в том, что их состояния управляются посредством результатов вычисления преобразования и для входных сигналов. Тем не менее, здесь, вывод представляет собой управляющий сигнал в устройство, а не визуализацию на дисплее. Рассмотрим, например, пользовательский интерфейс повторных вычислений для управления роботом. Этот пользовательский интерфейс повторных вычислений может иметь правила для действий робота и поведения, которые зависят от вводов датчиков робота, таких как позиции и скорости сервомеханизмов, ультразвуковые измерения дальности и т.д. Альтернативно, рассмотрим приложение для управления технологическим процессом на основе пользовательского интерфейса повторных вычислений, который принимает сигналы из датчиков оборудования, такие как позиции клапанов, расходы жидкостей и т.д.
[0038] Фиг. 3 иллюстрирует примерное окружение 300 компиляции, которое включает в себя компилятор 310, который осуществляет доступ к цепочке 301 преобразований. Например, цепочки 301 преобразований представляет собой цепочку 200 преобразований по фиг. 2. Фиг. 4 иллюстрирует блок-схему последовательности операций способа 400 для компилирования цепочки преобразований пользовательского интерфейса повторных вычислений. Способ 400 может осуществляться посредством компилятора 310 по фиг. 3. В одном варианте осуществления, способ 400 может осуществляться посредством вычислительной системы 100 в ответ на выполнение посредством процессора(ов) 102 машиноисполняемых инструкций, осуществленных на одном или более машиночитаемых носителей хранения данных.
[0039] Способ 400 включает в себя анализ цепочки преобразований пользовательского интерфейса повторных вычислений на предмет зависимостей (этап 401). Например, ссылаясь на фиг. 2, компилятор 300 может анализировать каждое из преобразований 211-215. Преобразования являются декларативными, и в силу этого зависимости могут извлекаться проще, чем в случае, если преобразования выражены с использованием императивного машинного языка.
[0040] На основе анализа, создается (этап 402) граф зависимостей между объектами, на которые ссылаются в преобразованиях. По существу, зависимости имеют исходный объект, который представляет событие, и целевой объект, который представляет то, что оценка того целевого объекта зависит от события. Пример события может представлять собой пользовательское событие, в котором пользователь взаимодействует определенным способом с пользовательским интерфейсом повторных вычислений. В качестве другого примера, событием может представлять собой межобъектное событие, в котором если оценивается исходный объект, то целевой объект зависимости также должен оцениваться.
[0042] В качестве примера, фиг. 3 также иллюстрирует, что компилятор 310 формирует низкоуровневый код 311. Такой низкоуровневый код 311 включает в себя компиляцию каждого из преобразований в цепочке преобразований. Например, низкоуровневый код 311 проиллюстрирован как включающий в себя элемент 321, представляющий компиляцию каждого из преобразований в цепочке преобразований. В контексте по фиг. 2, элемент 321 должен включать в себя компиляцию каждого из преобразований 211-215. Низкоуровневый код 311 также включает в себя множество функций 322. Функция формируется для каждой зависимости в графе зависимостей. Функции могут представлять собой функции императивного языка.
[0043] Когда среда выполнения императивного языка обнаруживает событие, которое перечислено в графе зависимостей, соответствующая функция в компилированных функциях 322 также выполняется. Соответственно, если все преобразования надлежащим образом компилированы, и каждая из зависимостей от конкретных событий принудительно активируется посредством выделенных функций, декларативный пользовательский интерфейс повторных вычислений надлежащим образом представлен в качестве императивного языкового кода.
[0044] Соответственно, описан эффективный механизм для компилирования декларативного пользовательского интерфейса повторных вычислений. Помимо этого, среда выполнения содержит граф зависимостей, а не более развернутый интерпретатор.
[0045] Ниже описывается конкретный пример конвейера авторской разработки для предоставления возможности непрограммистам создавать авторскую разработку программ, имеющих сложные поведения, с использованием пользовательского интерфейса повторных вычислений, относительно фиг. 5-9.
[0046] Фиг. 5 иллюстрирует визуальное композиционное окружение 500, которое может использоваться для того, чтобы составлять интерактивную визуальную композицию в форме пользовательского интерфейса повторных вычислений. Составление пользовательского интерфейса повторных вычислений выполняется с использованием управляемой данными аналитики и визуализации аналитических результатов. Окружение 500 включает в себя композиционную инфраструктуру 510, которая выполняет логику, которая выполняется независимо от проблемной области композиции 530 представлений. Например, идентичная композиционная инфраструктура 510 может использоваться для того, чтобы составлять интерактивные композиции представлений для планов города, молекулярных моделей, размещений товаров на полках магазинов, анализа работы или сборки машинного оборудования либо других зависящих от предметной области рендерингов.
[0047] Тем не менее, композиционная инфраструктура 510 использует зависящие от предметной области данные 520 для того, чтобы составлять фактическую визуальную композицию 530, которая является зависящей от предметной области. Соответственно, идентичная композиционная инфраструктура 510 может использоваться для того, чтобы составлять пользовательские интерфейсы повторных вычислений для любого числа различных предметных областей посредством изменения зависящих от предметной области данных 520, вместо необходимости перекодировать непосредственно композиционную инфраструктуру 510. Таким образом, композиционная инфраструктура 510 конвейера 500 может применяться к потенциально неограниченному количеству проблемных областей или, по меньшей мере, к широкому спектру проблемных областей, посредством изменения данных, вместо перекодирования и перекомпиляции. Композиция 530 представлений затем может предоставляться в качестве инструкций в надлежащий модуль двумерного или трехмерного рендеринга. Архитектура, описанная в данном документе, также обеспечивает возможность удобного встраивания уже существующих моделей композиций представлений в качестве стандартных блоков в новые модели композиций представлений. В одном варианте осуществления, несколько композиций представлений могут быть включены в интегрированную композицию представлений, чтобы предоставлять возможность простого сравнения между двумя возможными решениями модели.
[0048] Фиг. 6 иллюстрирует примерную архитектуру композиционной инфраструктуры 510 в форме конвейерного окружения 600. Конвейерное окружение 600 включает в себя, в числе прочего, сам конвейер 601. Конвейер 601 включает в себя часть 610 данных, часть 620 аналитики и часть 630 представлений, каждая из которых подробно описывается относительно последующих чертежей 7-9, соответственно, и прилагаемого описания. На данный момент, на общем уровне, часть 610 данных конвейера 601 может принимать множество различных типов данных и представляет эти данные в канонической форме в часть 620 аналитики конвейера 601. Часть 620 аналитики привязывает данные в различные параметры модели и находит решение для неизвестных в параметрах модели с использованием аналитики по модели. Различные значения параметров затем предоставляются в часть 630 представлений, которая составляет составное представление с использованием этих значений параметров модели.
[0049] Конвейерное окружение 600 также включает в себя компонент 640 авторской разработки, который дает возможность автору или другому пользователю конвейера 601 формулировать и/или выбирать данные, которые следует предоставлять в конвейер 601. Например, компонент 640 авторской разработки может использоваться для того, чтобы предоставлять данные в каждую из части 610 данных (представлена посредством входных данных 611), части 620 аналитики (представлена посредством данных 621 аналитики) и части 630 представлений (представлена посредством данных 631 представлений). Различные данные 611, 621 и 631 представляют пример зависящих от предметной области данных 520 по фиг. 5 и подробнее описываются в дальнейшем. Компонент 640 авторской разработки поддерживает предоставление широкого спектра данных, включающих в себя, например, схемы данных, фактические данные, которые использоваться посредством модели, местоположение или диапазон возможных местоположений данных, которые должны быть введены из внешних источников, визуальные (графические или анимационные) объекты, взаимодействия пользовательского интерфейса, которые могут выполняться для визуальных выражений моделирования (например, представлений, уравнений, ограничений), привязки и т.д. В одном варианте осуществления, компонент авторской разработки является всего лишь одной частью функциональности, предоставленной посредством общего компонента диспетчера (не показан на фиг. 6, но представлен посредством композиционной инфраструктуры 510 по фиг. 5). Диспетчер представляет собой общий модуль управления, который управляет и упорядочивает работу всех других компонентов (таких как модули соединения данных, решающие модули, модули просмотра и т.д.) в ответ на события (к примеру, события пользовательского взаимодействия, события, инициируемые внешними данными, и события из любых других компонентов, таких как решающие модули, операционная система и т.д.).
[0050] В конвейерном окружении 600 по фиг. 6, компонент 640 авторской разработки используется для того, чтобы предоставлять данные в существующий конвейер 601, причем они представляют собой данные, которые регулируют весь процесс от задания входных данных до задания аналитической модели (называется выше "цепочкой преобразований"), и до задания того, как результаты цепочки преобразований визуализируются в композиции представлений. Соответственно, не обязательно требуется выполнять кодирование, чтобы адаптировать конвейер 601 к любой из широкого спектра предметных областей и проблем. Только данные, предоставленные для конвейера 601, представляют собой то, что должно изменяться, чтобы применять конвейер 601 для того, чтобы визуализировать другую композицию представлений вообще из другой проблемной области или возможно регулировать решение проблемы для текущей предметной области. Дополнительно, поскольку данные могут изменяться во время использования (т.е. во время выполнения), а также во время авторской разработки, модель может модифицироваться и/или расширяться в среде выполнения. Таким образом, имеется меньшее, если вообще имеется, различие между авторской разработкой модели и выполнением модели. Поскольку вся авторская разработка заключает в себе редактирование элементов данных, и поскольку программное обеспечение выполняет все свое поведение из данных, каждое изменение данных сразу влияет на поведение без необходимости в перекодировании и перекомпиляции.
[0051] Конвейерное окружение 600 также включает в себя модуль 650 реакции на пользовательское взаимодействие, который обнаруживает, когда пользователь взаимодействует с отображаемой композицией представлений, а затем определяет то, что следует выполнять в ответ. Например, некоторые типы взаимодействий могут не требовать изменения данных, предоставленных для конвейера 601, и в силу этого не требовать изменения композиции представлений. Другие типы взаимодействий могут изменять одно или более из данных 611, 621 или 631. В этом случае, эти новые или модифицированные данные могут инструктировать новым входным данным предоставляться в часть 610 данных, могут требовать повторного анализа входных данных посредством части 620 аналитики и/или могут требовать повторной визуализации композиции представлений посредством части 630 представлений.
[0052] Соответственно, конвейер 601 может использоваться для того, чтобы расширять управляемые данными аналитические визуализации, возможно, на неограниченное количество проблемных областей или, по меньшей мере, на широкий спектр проблемных областей. Кроме того, не обязательно следует быть программистом, чтобы изменять композицию представлений, чтобы разрешать широкий спектр проблем. Ниже описывается каждая из части 610 данных, части 620 аналитики и части 630 представлений конвейера 601 относительно соответствующей части 700 данных по фиг. 7, части 800 аналитики по фиг. 8 и части 900 представлений по фиг. 9, в этом порядке. Как должно быть очевидным из фиг. 7-9, конвейер 601 может иметь структуру последовательности компонентов преобразований, причем каждый из них 1) принимает некоторые надлежащие входные данные, 2) выполняет некоторое действие в ответ на эти входные данные (к примеру, выполняет преобразование для входных данных) и 3) выводит данные, которые затем служат в качестве входных данных в следующий компонент преобразований.
[0053] Фиг. 7 иллюстрирует только один из множества возможных вариантов осуществления части 700 данных конвейера 601 по фиг. 6. Одна из функций части 700 данных заключается в том, чтобы предоставлять данные в каноническом формате, который является согласованным со схемами, понимаемыми посредством части 800 аналитики конвейера, поясненного относительно фиг. 8. Часть данных включает в себя компонент 710 доступа к данным, который осуществляет доступ к гетерогенным данным 701. Входные данные 701 могут быть "гетерогенными" в том смысле, что данные могут (но обязательно должны) представляться в компонент 710 доступа к данным в канонической форме. Фактически, часть 700 данных имеет такую структуру, что гетерогенные данные могут иметь широкий спектр форматов. Примеры различных видов данных предметных областей, к которым может осуществляться доступ и которые могут управляться посредством моделей, включают в себя текстовые документы и XML-документы, таблицы, списки, иерархии (деревья), результаты SQL-запросов к базе данных, результаты запросов к кубам BI (бизнес-аналитики), графическую информацию, к примеру, двумерные чертежи и трехмерные визуальные модели в различных форматах, и комбинации вышеозначенного (т.е. составные объекты). Дополнительно, вид данных, к которым может осуществляться доступ, может быть расширен декларативно, посредством предоставления определения (например, схемы) для данных, к которым должен осуществляться доступ. Соответственно, часть 700 данных разрешает широкий спектр гетерогенного ввода в модель и также поддерживает декларативное расширение в среде выполнения доступных типов данных.
[0054] В одном варианте осуществления, часть 700 доступа к данным включает в себя ряд модулей соединения для получения данных из ряда различных источников данных. Поскольку одна из первичных функций модуля соединения заключается в том, чтобы переводить соответствующие данные в каноническую форму, такие модули соединения зачастую в дальнейшем и на чертежах упоминаются в качестве "модулей канонизации". Каждый модуль канонизации может иметь понимание конкретных интерфейсов прикладного программирования (API) соответствующего источника данных. Модуль канонизации также может включать в себя соответствующую логику для взаимодействия через интерфейс с этим соответствующим API, чтобы считывать и/или записывать данные с/на источник данных. Таким образом, модули канонизации организуют соединение между внешними источниками данных и отображением запоминающего устройства данных.
[0055] Компонент 710 доступа к данным оценивает входные данные 701. Если входные данные уже являются каноническими и в силу этого обрабатываемыми посредством части 800 аналитики, то входные данные могут непосредственно предоставляться в качестве канонических данных 740, которые должны вводиться в часть 800 аналитики.
[0056] Тем не менее, если входные данные 701 не являются каноническими, то надлежащий компонент 730 канонизации данных имеет возможность преобразовывать входные данные 701 в канонический формат. Компоненты 730 канонизации данных фактически представляют собой совокупность компонентов 730 канонизации данных, каждый из которых допускает преобразование входных данных, имеющих конкретные характеристики, в каноническую форму. Совокупность компонентов канонизации 730 проиллюстрирована как включающая в себя четыре компонента 731, 732, 733 и 734 канонизации. Тем не менее, многоточие 735 представляет то, что также могут быть предусмотрены другие числа компонентов канонизации, возможно даже меньше проиллюстрированных четырех.
[0057] Входные данные 701 могут даже включать в себя непосредственно модуль канонизации, а также идентификацию коррелированной характеристики данных. Часть 700 данных затем может регистрировать коррелированные характеристики данных и предоставлять компонент канонизации в совокупность 730 компонентов канонизации данных, при этом он может добавляться в доступные компоненты канонизации. Если впоследствии приняты входные данные, которые имеют эти коррелированные характеристики, часть 710 данных затем может назначать входные данные коррелированному компоненту канонизации. Компоненты канонизации также могут быть найдены динамически из внешних источников, к примеру, из заданных библиотек компонентов по Интернету. Например, если схема для определенного источника данных известна, но необходимый модуль канонизации не присутствует, модуль канонизации может быть обнаружен из внешней библиотеки компонентов, если такая библиотека может быть найдена и содержит необходимые компоненты. Конвейер также может синтаксически анализировать данные, для которых еще не известна схема, и сравнивать результаты синтаксического анализа с информацией схемы в известных библиотеках компонентов, чтобы выполнять попытку динамического определения типа данных и за счет этого находить необходимые компоненты модуля канонизации.
[0058] Альтернативно, вместо входных данных, включающих в себя весь компонент канонизации, входные данные вместо этого могут предоставлять определение преобразования, задающее преобразования канонизации. Совокупность 730 затем может быть выполнена с возможностью преобразовывать это определение преобразований в соответствующий компонент канонизации, который принудительно активирует преобразования вместе с нулем или более стандартных преобразований канонизации по умолчанию. Это представляет пример случая, в котором часть 700 данных использует входные данные и не предоставляет соответствующие канонические данные далее вниз по конвейеру. Тем не менее, возможно, в большинстве случаев, входные данные 701 приводят к формированию соответствующих канонических данных 740.
[0059] В одном варианте осуществления, часть 710 данных может быть выполнена с возможностью назначать входные данные компоненту канонизации данных на основе типа файла и/или типа формата входных данных. Другие характеристики могут включать в себя, например, источник входных данных. Компонент канонизации по умолчанию может назначаться входным данным, которые не имеют обозначенного соответствующего компонента канонизации. Компонент канонизации по умолчанию может применять набор правил, чтобы пытаться канонизировать входные данные. Если компонент канонизации по умолчанию не имеет возможность канонизировать данные, компонент канонизации по умолчанию может инициировать компонент 540 авторской разработки по фиг. 5, чтобы указывать пользователю предоставлять определение схемы для входных данных. Если определение схемы уже не существует, компонент 540 авторской разработки может представлять помощник определения схемы, чтобы помогать автору формировать соответствующее определение схемы, которое может использоваться для того, чтобы преобразовывать входные данные в каноническую форму. После того, как данные находятся в канонической форме, схема, которая сопровождает данные, предоставляет достаточное описание данных, так что остальной части конвейера 601 не требуется новый код для того, чтобы интерпретировать данные. Вместо этого, конвейер 601 включает в себя код, который имеет возможность интерпретировать данные в свете любой схемы, которая может выражаться на доступном языке объявления схем.
[0060] Независимо от этого, канонические данные 740 предоставляются в качестве выходных данных из части 700 данных и в качестве входных данных в часть 800 аналитики. Канонические данные могут включать в себя поля, которые включают в себя множество типов данных. Например, поля могут включать в себя простые типы данных, такие как целые числа, числа с плавающей точкой, строки, векторы, матрицы, совокупности, иерархические структуры, текст, XML-документы, таблицы, списки, результаты SQL-запросов к базе данных, результаты запросов к кубам BI (бизнес-аналитики), графическую информацию, к примеру, двумерные чертежи и трехмерные визуальные модели в различных форматах либо даже сложные комбинации этих различных типов данных. В качестве другого преимущества, процесс канонизации имеет возможность канонизировать широкий спектр входных данных. Кроме того, множество входных данных, которые часть 700 данных имеет возможность принимать, является расширяемым. Это полезно в случае, если несколько моделей комбинируются, как поясняется ниже в этом описании.
[0061] Фиг. 8 иллюстрирует часть 800 аналитики, которая представляет пример части 620 аналитики конвейера 601 по фиг. 6. Часть 700 данных предоставляет канонические данные 801 в компонент 810 привязки моделей данных. Хотя канонические данные 801 могут иметь любую каноническую форму и любое число параметров, при этом форма и число параметров могут даже отличаться для каждого фрагмента входных данных. Тем не менее, для целей пояснения, канонические данные 801 имеют поля 802А-802H, которые могут совместно упоминаться в данном документе как "поля 802".
[0062] С другой стороны, часть 800 аналитики включает в себя ряд параметров 811 модели. Тип и число параметров модели могут отличаться согласно модели. Тем не менее, для целей пояснения конкретного примера, параметры 811 модели поясняются как включающие в себя параметры 811А, 811B, 811C и 811D модели. В одном варианте осуществления, идентификационные данные параметров модели и аналитические взаимосвязи между параметрами модели могут декларативно задаваться без использования императивного кодирования.
[0063] Компонент 810 привязки моделей данных выступает посредником между полями 802 канонических данных и параметрами 811 модели, чтобы за счет этого предоставлять привязки между полями. В этом случае, поле 802B данных привязывается к параметру 811А модели, как представлено посредством стрелки 803 А. Другими словами, значение из поля 802B данных используется для того, чтобы заполнять параметр 811А модели. Кроме того, в этом примере, поле 802E данных привязывается к параметру 811B модели (как представлено посредством стрелки 803B), и поле 802H данных привязывается к параметру 811C модели (как представлено посредством стрелки 803C).
[0064] Поля 802A, 802C, 802D, 802F и 802G данных не показаны как привязанные к каким-либо из параметров модели. Это должно подчеркивать, что не все поля данных из входных данных всегда должны использоваться в качестве параметров модели. В одном варианте осуществления, одно или более полей данных могут использоваться для того, чтобы предоставлять инструкции в компонент 810 привязки моделей данных в отношении того, какие поля из канонических данных (для этих канонических данных или возможно любых будущих аналогичных канонических данных) должны привязываться к какому параметру модели. Это представляет пример вида данных 621 аналитики, которые могут предоставляться в часть 620 аналитики по фиг. 6. Определение того, какие поля данных из канонических данных привязываются к каким параметрам модели, может формулироваться рядом способов. Например, привязки могут быть 1) явно заданы автором во время авторской разработки, 2) явно заданы пользователем во время использования (с учетом всех ограничений, налагаемых автором), 3) автоматически привязаны посредством компонента 640 авторской разработки на основе алгоритмической эвристики, и/или 4) указаны посредством компонента авторской разработки автора и/или пользователя, чтобы указывать привязку, когда определяется то, что привязка не может выполняться алгоритмически. Таким образом, привязки также могут разрешаться в качестве части самой логики модели.
[0065] Возможность автору задавать то, какие поля данных увязываются с какими параметрами модели, обеспечивает для автора значительную гибкость касательно возможности использовать символы, которые являются удобными для автора, с тем чтобы задавать параметры модели. Например, если один из параметров модели представляет давление, автор может называть этот параметр модели "Pressure (Давление)", или "P" или как любой другой символ, который имеет смысл для автора. Автор может даже переименовывать параметр модели, что, в одном варианте осуществления, может инструктировать компоненту 810 привязки моделей данных автоматически обновлять для того, чтобы разрешать привязки, которые ранее выполнены к параметру модели со старым именем, с тем чтобы вместо этого привязываться к параметру модели с новым именем, за счет этого сохраняя требуемые привязки. Этот механизм для привязки также дает возможность изменения декларативного привязки в среде выполнения.
[0066] Параметр 811D модели проиллюстрирован со звездочкой, чтобы подчеркивать, что в этом примере, параметру 811D модели не назначено значение посредством компонента 810 привязки моделей данных. Соответственно, параметр 811D модели остается неизвестным. Другими словами, параметру 811D модели не назначается значение.
[0067] Компонент 820 моделирования выполняет ряд функций. Во-первых, компонент 820 моделирования задает аналитические взаимосвязи 821 между параметрами 811 модели. Аналитические взаимосвязи 821 классифицируются на три общих категории, включающие в себя уравнения 831, правила 832 и ограничения 833. Тем не менее, список решающих модулей является расширяемым. В одном варианте осуществления, например, одно или более моделирований могут быть включены в качестве части аналитических взаимосвязей, если соответствующий механизм моделирования предоставляется и регистрируется в качестве решающего модуля.
[0068] Термин "уравнение" при использовании в данном документе совпадает с термином, используемым в области техники математики.
[0069] Термин "правила" при использовании в данном документе означает условное выражение, в котором если одно или более условий удовлетворяются (условная часть, или часть "if", условного выражения), то должно предприниматься одно или более действий (часть следствия, или "then", условного выражения). Правило применяется к параметрам модели, если один или более параметров модели выражаются в условном выражении, или один или более параметров модели выражаются в выражении следствия.
[0070] Термин "ограничение" при использовании в данном документе означает, что ограничение применяется к одному или более параметров модели. Например, в модели городского планирования, конкретный элемент дома может ограничиваться помещением в местоположение на карте, которое имеет поднабор полных возможных обозначений зонирования. Элемент моста может ограничиваться ниже определенной максимальной длины или определенного числа маршрутов.
[0071] Автор, который знаком с моделью, может предоставлять выражения этих уравнений, правил и ограничения, которые применяются к этой модели. В случае моделирований, автор может предоставлять надлежащий механизм моделирования, который предоставляет надлежащие взаимосвязи моделирования между параметрами модели. Компонент 820 моделирования может предоставлять механизм для автора, чтобы предоставлять символьное выражение на естественном языке для уравнений, правил и ограничений. Например, автор связанной с термодинамикой модели может просто копировать и вставлять уравнения из учебника по термодинамике. Возможность привязывать параметры модели к полям данных дает возможность автору использовать любые символы, с которыми знаком автор (к примеру, точные символы, используемые в базовых учебниках автора), либо точные символы, которые автор хочет использовать.
[0072] До решения, компонент 820 моделирования также идентифицирует то, для каких из параметров модели должно быть найдено решение (т.е. в дальнейшем в этом документе, "выходную переменную модели", если в единственном числе, или "выходные переменные модели", если во множественном числе, или "выходную переменную(ые) модели", если может быть одна или несколько выходных переменных модели). Выходные переменные модели могут быть неизвестными параметрами, либо они могут быть известными параметрами модели, при этом значение известного параметра модели подлежит изменению в операции решения. В примере по фиг. 8, после операции привязки моделей данных, параметры 811А, 811B и 811C модели известны, и параметр 811D модели неизвестен. Соответственно, неизвестный параметр 811D модели может быть одной из выходных переменных модели. Альтернативно или помимо этого, один или более известных параметров 811А, 811B и 811C модели также могут представлять собой выходные переменные модели. Решающий модуль 840 затем находит решение для выходной переменной(ых) модели, если это возможно. В одном варианте осуществления, описанном в дальнейшем в этом документе, решающий модуль 840 имеет возможность находить решения для множества выходных переменных модели, даже в одной модели, до тех пор, пока предоставляется достаточно входных переменных модели, чтобы обеспечивать возможность выполнения операции решения. Входные переменные модели, например, могут представлять собой известные параметры модели, значения которых не подвержены изменениям во время операции решения. Например, на фиг. 8, если параметры 811А и 811D модели вместо этого представляют собой входные переменные модели, решающий модуль вместо этого может находить решения для выходных переменных 811B и 811C модели. В одном варианте осуществления, решающий модуль может выводить любые из ряда различных типов данных для одного параметра модели. Например, некоторые операции уравнения (к примеру, сложение, вычитание и т.п.) применяются независимо от того, являются операнды целыми числами, числами плавающей запятой, их векторами или их матрицами.
[0073] В одном варианте осуществления, даже когда решающий модуль 840 не может находить решение для конкретных выходных переменных модели, решающий модуль 800 по-прежнему может представлять частичное решение для этой выходной переменной модели, даже полное решение в фактический числовой результат (или безотносительно решенного типа данных) является невозможным. Это дает возможность конвейеру упрощать поэтапную разработку посредством указания автором в отношении того, какая информация необходима, чтобы приходить к полному решению. Это также помогает исключать различие между временем авторской разработки и временем использования, поскольку, по меньшей мере, частичное решение доступно на различных стадиях авторской разработки. В качестве абстрактного примера, предположим, что модель аналитики включает в себя уравнение a=b+c+d. Теперь предположим, что a, c и d представляют собой выходные переменные модели, а b представляет собой входную переменную модели, имеющую известное значение 5 (целое число в этом случае). В процессе решения, решающий модуль 840 имеет возможность находить решения только для одной из выходных переменных модели "d" и назначать значение 6 (целое число) параметру модели, называемому "d", но решающий модуль 840 не имеет возможность находить решения для "c". Поскольку "a" зависит от "c", параметр модели, называемый "a", также остается неизвестным и нерешенным. В этом случае, вместо назначения целочисленного значения для "a", решающий модуль может находить частичное решение и выводить значение строки "c+11" в параметр "a" модели. Как упомянуто выше, это может быть, в частности, полезно, когда эксперт по проблемной области создает авторскую разработку модели аналитики, и, по сути, служит для того, чтобы предоставлять частичную информацию относительно контента параметра "a" модели, а также служит для того, чтобы отмечать для автора, что должна предоставляться некоторая дополнительная аналитика по модели, которая предоставляет возможность нахождения решения для параметра "c" модели. Этот частичный результат решения, возможно, может выводиться некоторым способом в композиции представлений, чтобы давать возможность эксперту по проблемной области видеть частичный результат.
[0074] Решающий модуль 840 показан в упрощенной форме на фиг. 8. Тем не менее, решающий модуль 840 может направлять работу нескольких составляющих решающих модулей, как описано относительно фиг. 9. На фиг. 8, компонент 820 моделирования затем делает параметры модели (включающие в себя теперь известные и решенные выходные переменные модели) доступными в качестве вывода, который должен предоставляться в часть 900 представлений по фиг. 9.
[0075] Фиг. 9 иллюстрирует часть 900 представлений, которая представляет пример части 630 представлений по фиг. 6 и представляет пример визуализированных элементов управления в пользовательском интерфейсе 200 повторных вычислений. Часть 900 представлений принимает параметры 811 модели из части 800 аналитики по фиг. 8. Часть представлений также включает в себя репозиторий 920 компонентов представлений, который содержит совокупность компонентов представлений. Например, репозиторий 920 компонентов представлений в этом примере проиллюстрирован как включающий в себя компоненты 921-924 представлений, хотя репозиторий 920 компонентов представлений может содержать любое число компонентов представлений. Компоненты представлений могут включать в себя нуль или более входных параметров. Например, компонент 921 представлений не включает в себя входные параметры. Тем не менее, компонент 922 представлений включает в себя два входных параметра 942А и 942B. Компонент 923 представлений включает в себя один входной параметр 943, и компонент 924 представлений включает в себя один входной параметр 944. Тем не менее, это представляет собой просто пример. Входные параметры могут, но не обязательно, влиять на то, как видеоэлемент подготовлен посредством рендеринга. Тот факт, что компонент 921 представлений не включает в себя входные параметры, подчеркивает то, что могут быть представления, которые формируются вообще независимо от параметров модели. Рассмотрим представление, которое содержит просто фиксированные (встроенные) данные, которые не изменяются. Такое представление, например, может составлять ссылочную информацию для пользователя. Альтернативно, рассмотрим представление, которое просто предоставляет способ для того чтобы просматривать каталог, так что элементы могут выбираться из него для импорта в модель.
[0076] Каждый компонент 921-924 представлений включает в себя или ассоциирован с соответствующей логикой, которая при выполнении посредством компонента 940 композиций представлений с использованием соответствующего входного параметра(ов) компонента представлений, если таковые имеются, инструктирует размещение соответствующего элемента представления в виртуальном пространстве 950. Этот виртуальный элемент может представлять собой статическое изображение или объект либо может представлять собой динамический анимированный виртуальный элемент или объект. Например, каждый из компонентов 921-924 представлений ассоциирован с соответствующей логикой 931-934, которая при выполнении инструктирует рендеринг соответствующего виртуального элемента 951-954, соответственно, в виртуальном пространстве 950. Виртуальные элементы проиллюстрированы в качестве простых форм. Тем не менее, виртуальные элементы могут иметь довольно сложную форму, возможно, даже включать в себя анимацию. В этом описании, когда элемент представления подготовлен посредством рендеринга в виртуальном пространстве, что означает то, что компонент композиции представлений создает авторскую разработку достаточных инструкций, так что при предоставлении для механизма рендеринга, механизм рендеринга допускает отображение элемента представления на дисплее в обозначенном местоположении и обозначенным способом.
[0077] Компоненты 921-924 представлений могут предоставляться, возможно, даже в качестве данных представлений в часть 900 представлений с использованием, например, компонента 640 авторской разработки по фиг. 6. Например, компонент 640 авторской разработки может предоставлять модуль выбора, который обеспечивает возможность автору выбирать из нескольких геометрических форм или возможно составлять другие геометрические формы. Автор также может указывать типы входных параметров для каждого компонента представлений, тогда как некоторые входные параметры могут быть входными параметрами по умолчанию, налагаемыми посредством части 900 представлений. Логика, которая ассоциирована с каждым компонентом 921-924 представлений, может предоставляться также как данные представлений и/или также может включать в себя некоторую функциональность по умолчанию, предоставленную посредством самой части 900 представлений.
[0078] Часть 900 представлений включает в себя компонент 910 привязки представлений модели, который выполнен с возможностью привязывать, по меньшей мере, некоторые параметры модели к соответствующим входным параметрам компонентов 921-924 представлений. Например, параметр 811А модели привязывается к входному параметру 942А компонента 922 представлений, как представлено посредством стрелки 911А. Параметр 811B модели привязывается к входному параметру 942B компонента 922 представлений, как представлено посредством стрелки 911B. Кроме того, параметр 811D модели привязывается к входным параметрам 943 и 944 компонентов 923 и 924 представлений, соответственно, как представлено посредством стрелки 911C. Параметр 811C модели не показан как привязанный к какому-либо соответствующему параметру компонента представлений, подчеркивая то, что не все параметры модели должны использоваться посредством части представлений конвейера, даже если эти параметры модели важны в части аналитики. Кроме того, параметр 811D модели показан как привязанный к двум различным входным параметрам компонентов представлений, что представляет то, что параметры модели могут привязываться к нескольким параметрам компонентов представлений. В одном варианте осуществления, определение привязок между параметрами модели и параметрами компонентов представлений может формулироваться посредством 1) явного задания автором во время авторской разработки, 2) явного задания пользователем во время использования (с учетом всех ограничений, налагаемых автором), 3) автоматической привязки посредством компонента 640 авторской разработки на основе алгоритмической эвристики, и/или 4) указания посредством компонента авторской разработки автора и/или пользователя, чтобы указывать привязку, когда определяется то, что привязка не может выполняться алгоритмически.
[0079] Настоящее изобретение может быть осуществлено в других характерных формах без отступления от своего духа или неотъемлемых характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях только как иллюстративные, а не ограничивающие. Следовательно, объем изобретения определяется прилагаемой формулой изобретения, а не вышеприведенным описанием. Все изменения, которые подпадают под смысл и рамки эквивалентности формулы изобретения, должны охватываться ее объемом.