Использование скриптов для расширения функционала ИС
Встретилась интересная проблема: в информационной системе требуется сделать гибкий механизм управления документами.
Что должно получится в результате: программист, не прибегая к редактированию ядра системы должен получить возможность добавить в систему необходимый документ, описать его данные, связанные с ним отчеты, а также поведение документа и способ его проведения/сторнирования.
Если с описанием документа все понятно (используем xml для описания данных), да и с отчетами все в принципе не сложно (в xml даем ссылки на отчеты FastReport), то вот как раз с поведением и проведением большой вопрос.
Единственный выход я вижу в прикручивании к системе скриптового движка, который позволит в отдельных файлах записать нужный код (ориентир не на пользователя, а на программиста-"сопровождателя"). Все это в итоге будет запаковываться в пакет, который будет подгружаться системой (пакет будет готовится в специальном редакторе). [COLOR="silver"]В общем, полный адынэс ;)[/COLOR]
Что требуется от движка:
1) Стабильность и производительность (объемы обрабатываемой информации достаточно велики).
2) Возможность взаимодействия не с ядром системы, а с некоей "виртуальной машиной", которая позволит выполнять строго определенные функции, не зависящие от работы ядра.
3) Поддержка различных ЯП.
В данный момент рассматривается два варианта движков:
1. Pascalc
+ Довольно быстрый
+ Простой
+ Полностью работает на определенных функциях, предоставленных системой
- Только один, паскале-подобный язык программирования
- Дурацкая типизация
- Не поддерживает классы в принципе....
2. FastScript (он есть купленный, лицензионный, так что финансовый аспект не интересует)
+ 4 языка, возможность использования в одном языке скриптовых пакетов, написанных на другом языке
+ Стабильность (по сравнению с паскалком)
+ Работа с классами
- Предоставляет доступ к объектам программы, что может привести к плохим последствиям
- Довольно сложно как в плане подключения в проект, так и в плане дальнейшей работы
Прошу знающих людей посоветовать: кто что использовал? Что "лучше"? Как можно решить проблему "управляемой ВиртМашины"? Может быть я упустил более простой (гибкий, удобный) способ решения задачи?