Компиляция преобразований в пользовательском интерфейсе повторных вычислений

Иллюстрации

Показать все

Изобретение относится к компиляции цепочки преобразований пользовательского интерфейса повторных вычислений. Технический результат - повышение эффективности компиляции преобразований в пользовательском интерфейсе повторных вычислений. Способ компиляции цепочки преобразований пользовательского интерфейса повторных вычислений, содержит этапы на которых назначают каждый из множества объектов компоненту, предназначенному для приведения данных в канонический вид, для преобразования каждого из множества объектов, который имеет одну или более конкретных характеристик, в канонический формат, определяют зависимости между всеми из множества объектов, приведенных в канонический вид, на основе цепочки преобразований пользовательского интерфейса повторных вычислений, формируют граф зависимостей на основе этих определенных зависимостей, формируют нижний уровень этапов выполнения на основе данных, принятых из графа зависимостей, предоставляют граф зависимостей в среду выполнения для программы, и когда средой выполнения обнаруживается событие, которое приведено в графе зависимостей, выполняют соответствующую по меньшей мере одну выделенную функцию. 3 н. и 21 з.п ф-лы, 9 ил.

Реферат

Уровень техники

[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) граф зависимостей между объектами, на которые ссылаются в преобразованиях. По существу, зависимости имеют исходный объект, который представляет событие, и целевой объект, который представляет то, что оценка того целевого объекта зависит от события. Пример события может представлять собой пользовательское событие, в котором пользователь взаимодействует определенным способом с пользовательским интерфейсом повторных вычислений. В качестве другого примера, событием может представлять собой межобъектное событие, в котором если оценивается исходный объект, то целевой объект зависимости также должен оцениваться.

[0041] Компилятор затем создает низкоуровневые этапы выполнения на основе графа зависимостей (этап 403). Низкоуровневые этапы выполнения, например, могут представлять собой императивный языковой код. Императивный языковой код выполнен с возможностью отвечать таким образом, чтобы обнаруживать события, обращаться к схеме событий, чтобы определять функцию, которую следует выполнять, и выполнять эту функцию. Соответственно, каждая из зависимостей в графе зависимостей может уменьшаться до функции. Непосредственно граф зависимостей может предоставляться в среду выполнения (этап 404). Императивный языковой код, например, может представлять собой язык подготовки сценариев, такой как JAVASCRIPT. Тем не менее, принципы, описанные в данном документе, не ограничены императивным языковым кодом, представляющим собой какой-либо конкретный язык.

[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 может использоваться для того, чтобы расширять управляемые данными аналитические визуализации, возможно, на неограниченное количество проблемных областей или, по меньшей мере, на широкий спектр проблемных областей. Кроме того, не обязательно следует быть программистом, чтобы изменять композицию представлений, чтобы разрешат