Альтернативным подходом может быть получение клиента только из архивной таблицы, где у нас нет текущей. Что-то вроде:
WITH CurrentLastOrders(customer, last_order_date) AS -- Get current last orders
(
SELECT o.customer, max(o.dt_created) AS last_order_date
FROM orders s WITH (NOLOCK) ON c.customer = o.customer
GROUP BY o.customer
),
ArchiveLastOrders(customer, last_order_date) AS -- Get archived last orders where customer does not have a current order
(
SELECT o.customer, max(o.dt_created) AS last_order_date
FROM archive_orders o WITH (NOLOCK)
WHERE NOT EXISTS ( SELECT *
FROM CurrentLastOrders lo
WHERE o.customer = lo.customer)
GROUP BY o.customer
),
AllLastOrders(customer, last_order_date) AS -- All customers with orders
(
SELECT customer, last_order_date
FROM CurrentLastOrders
UNION ALL
SELECT customer, last_order_date
FROM ArchiveLastOrders
)
AllLastOrdersPlusCustomersWithNoOrders(customer, last_order_date) AS -- All customerswith latest order if they have one
(
SELECT customer, last_order_date
FROM AllLastOrders
UNION ALL
SELECT customer, null
FROM customers c WITH (NOLOCK)
WHERE NOT EXISTS ( SELECT *
FROM AllLastOrders lo
WHERE c.customer = lo.customer)
)
1) Да, возможно сделать управление байт-кодом в OSGi. Как несколько отличается, чем со стандартным Java, необходимо ли использовать шаблон расширителя, описывают здесь http://www.osgi.org/blog/2007/02/osgi-extender-model.html. Я полагаю, что Eclipse использует это в их проекте аспекта равноденствия: http://www.eclipse.org/equinox/incubator/aspects/. Spring DM определенно использует этот шаблон для автоматического конфигурирования osgi dm модуль.
2) это было бы до шаблона расширителя, который Вы используете. tha's, как пружинный расширитель работает, ища конфигурационные файлы в папке META-INF/spring пакета, прежде чем они будут запущены платформой.
3) Снова, это было бы до расширителя, который Вы определяете.
4) Я полагаю, что это было бы возможно прежде, чем пакет может быть запущен, он имеет к разрешенному и запущенным зависимостям, Ваш расширитель мог затем проанализировать зависимости от пакета и запустить управление кодом байта.