Press "Enter" to skip to content

Загрузка файлов в таблицу SQL с помощью К2

0
В этой публикации я постараюсь рассказать об интересной особенности К2 SmartForms, с помощью которой можно изменять смартобъекты К2, тем самым позволяя сохранять файлы в обычной таблице SQL.
Когда вы создаете таблицу в SQL, а потом делаете из этой таблицы СмартОбъект, то К2 на распознает такие типы полей, как image и VARBINARY. Вместо этого мы создадим поле типа NVARCHAR(MAX) для хранения файлов в двоичном виде.
ЭТАП 1: СОЗДАНИЕ ТАБЛИЦЫ ДЛЯ ХРАНЕНИЯ ФАЙЛОВ
Создайте новую базу данных в SQL. Свою я назову также, как и в указанной выше статье, – K2Demo. Теперь создадим таблицу с 2 полями – ID (int – автоинкрементное, первичный ключ) и поле FileData(NVARCHAR(MAX)). Именно поле FileData будет использоваться для хранения файла в двоичном виде.

Скрипт для создания таблицы:
USE [K2Demo]
GO
 
/****** Object:  Table [dbo].[FileDataDemo]    Script Date: 12/7/2013 3:04:21 AM ******/
SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TABLE [dbo].[FileDataDemo](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [FileData] [nvarchar](max) NULL,
 CONSTRAINT [PK_FileDataDemo] PRIMARY KEY CLUSTERED 
(
 [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
 
GO


ЭТАП 2: СОЗДАНИЕ SQL SERVICE INSTANCE ВАШЕЙ БАЗЫ ДАННЫХ (K2)


Поскольку у нас уже есть таблица SQL, мы теперь можем зарегистрировать инстанс БД SQL в К2 SmartObject Service Tester (C:Program Files (x86)K2 blackpearlBinSmartObject Service Tester.exe”). Раскройте раздел ServiceObject Explorer и кликните правой кнопкой мыши на SQL Server Service и выберите Register ServiceInstance.



В появившемся окне Add Service Instance укажите всю необходимую информацию (базу данных, сервер SQL, режим аутентификации для доступа к БД и т.д.). Также не забудьте предоставить соответствующие разрешения в SQL для доступа К2 к БД. Нажмите Next. В следующем появившемся окне укажите отображаемое имя своего Service Instance. Нажмите Next. Ваш SQL Service Instance готов.



ЭТАП 3: СОЗДАНИЕ СМАРТОБЪЕКТА ИЗ ТАБЛИЦЫ


В созданном вами SQL Service Instance выберите свою таблицу, нажмите на ней правкой кнопкой мыши и и выберите Create SmartObject.





В появившемся окне нажмите соответствующее имя для вашего СмартОбъекта, выберите группу и нажмите Publish SmartObject. Обратите внимание, что в свойствах поля FileData указан тип memo, мы изменим это на следующем этапе с помощью К2 SmartForms. После получения сообщения “Successfully added the SmartObject” можно закрыть тестер и перейти к следующему этапу.




ЭТАП 4: ИЗМЕНЕНИЕ ДВОИЧНОГО ПОЛЯ C ПОМОЩЬЮ К2 SMARTFORMS

Откройте дизайнер K2 и найдите ваш только что созданный СмартОбъект.
Выберите СмартОбъект и кликните Edit. Перед вами появится список столбцов под вкладками со свойствами. Выберите столбец FileData (1) и нажмите Edit (2). Измените Тип на File (3) и кликните OK (4).
Сохраните СмартОбъект, кликнув на кнопку Finish в нижнем правом углу.
ЭТАП 5: СОЗДАНИЕ ПРЕДСТАВЛЕНИЯ
Кликните “Generate a View” для создания нового представления из текущего СмартОбъекта. Мы создадим представление для элемента и списка. Выберите 2 чекбокса рядом с элементом – Item (1) и списком – List (2) и кликните ОК(3).
ЭТАП 6: ТЕСТИРОВАНИЕ РЕШЕНИЯ
В папке у вас теперь появились 2 новых представления – для элемента и списка.Кликните на представление элемент (1) и запустите его (2). Добавьте новый элемент и загрузите файл. После этого выберите представление списка (3) и запустите его. Представление отобразит элементы, которые вы добавили при тестировании представления для элемента. Если вы нажмете на гиперссылку, вам будет предложено скачать файл.
Кроме этого, вы можете опять открыть SmartObject Service Tester, выбрать СмартОбъект, созданный на Этапе 3, кликнуть правой кнопкой мыши на нем и выбрать Execute. В появившемся окне вы можете увидеть, что на этот раз возле поля FileData отображается тип данных File. Можно аналогичным образом протестировать СмартОбъект в Сервис Тестере. Таким образом, этот преобразованный СмартОбъект можно использовать не только в контексте SmartForms, но и в других методах интеграции.
Надеюсь, будет полезно! Если возникнут вопросы – пишите.
Отдельное спасибо Джону Мейеру за его статью!

Leave a Reply

Your email address will not be published. Required fields are marked *

17 − 15 =