Мельница данных- Интерфейсы взаимодействия с внешними подсистемами (раздел целиком) (24.03.2023) | (одним файлом) |
Интерфейсы взаимодействия с внешними подсистемами |
Системный слой платформы "Мельница данных" предоставляет сторонним системам ряд интерфейсов, дающих возможность обращаться к объектам базы данных и их свойствам, вызывать методы классов и объектов, осуществлять запросы к базе данных, управлять поведением элементов управления и проч. |
1. Интерфейс IContext | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
01 IContext = interface(IDispatch) 02 ['{79847D79-A3BE-408F-B59F-662B91BC6350}'] 03 function Handle: Integer; 04 function getName(ID: OleVariant): WideString; 05 function getDescription(ID: OleVariant): WideString; 06 function createDataSet(const TargetClassName: WideString): 07 IContextDataSet; 08 function executeMethod(const ClassName: WideString; 09 const MethodName: WideString; 10 Params: OleVariant): OleVariant; 11 function executeReport(const ClassName: WideString; 12 const TemplateName: WideString; 13 Params: OleVariant): IDispatch; 14 function getPropValue(const ClassName: WideString; 15 const PropName: WideString; 16 const ID: OleVariant): OleVariant; 17 procedure setPropValue(const ClassName: WideString; 18 const PropName: WideString; 19 const ID: OleVariant; Value: OleVariant); 20 function select(const ClassName: WideString; 21 QueryItems: OleVariant): IDispatch; 22 function enumerationItem(ItemIdentifier: OleVariant): WideString; 23 function getClass(const ClassName: WideString): WideString; 24 function createGUID: WideString; 25 procedure processStart(const Description: WideString; 26 ItemCount: Integer); 27 procedure processStep; 28 procedure processStop; 29 function PlaceDataSet(const Range: IDispatch; 30 const DataSet: IContextDataSet; 31 ShiftRows: WordBool; ShiftColumns: WordBool): Integer; 32 procedure DebugString(const Message: WideString); 33 procedure ExportObject(var Document: OleVariant; const ID: WideString; 34 const ClassID: WideString); 35 function callRoutine(const ClassName, RoutineName: WideString; 36 var RetValue: OleVariant; const ScriptPart: OleVariant): WordBool; 37 function getOleObject(const ClassID, AccessibleFileName: WideString): IDispatch; 38 function getResource(const Name: WideString): WideString; 39 function getTempFileName(const Extension: WideString): WideString; 40 function selectVaue(const ClassDomain: WideString; 41 const ExpressionContext: IContextExpressionInfo; 42 var Value: OleVariant): WordBool; 43 procedure raiseManagedException(const ExceptionMessage: WideString); 44 function getCRC(Data: OleVariant): WideString; 45 function downloadData(const Host: WideString; const Url: WideString; 46 const UserName: WideString; const Password: WideString; 47 NegotiateAuth: WordBool; PostData: OleVariant; 48 const PostContentType: WideString; PostDataIsBinary: WordBool; 49 CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): OleVariant; 50 function createBinaryData: IDispatch; 51 function BinaryToBitmap(const Data: IDispatch): IDispatch; safecall; 52 function editValues(const ValuesList: WideString; const Title: WideString; 53 UseTabs: WordBool; HideOKButton: WordBool; 54 const ScriptPart: OleVariant): WordBool; 55 function MsgBox(const Prompt: WideString; Buttons: LongWord; 56 const Title: WideString; 57 const HelpFile: WideString; Context: LongWord): Integer; 58 function ShowMsgBox(const Prompt: WideString; Buttons: LongWord; 59 const Title: WideString; 60 const HelpFile: WideString; Context: LongWord): Integer; 61 function buildNamedFile(const Data: IDispatch; const StoredFileName: WideString; 62 Propmpt: WordBool; Compress: WordBool): IDispatch; 63 procedure parseNamedFile(const NamedFile: IDispatch; out FileName: OleVariant; 64 out Data: OleVariant); 65 procedure showView(const ViewName: WideString; Key: OleVariant; 66 const DetailPropertyName: WideString); 67 procedure showDataSet(const DataSet: ContextDataSet; const Caption: WideString; 68 ColumnCaptions: OleVariant; ColumnOnChangeHandlers: OleVariant; 69 TakeActionsFromView: OleVariant); 70 function executeConsoleProcess(const CommandLine: WideString; MaxDuration: Integer; 71 const OutputData: OleVariant): Integer; 72 function createRaster: IDispatch; 73 function createZIPArchive: IDispatch; 74 function ConvertExcel(Source: OleVariant; const Format: WideString): IDispatch; 75 property ContextObject: IDispatch; 76 property Language: WideString; 77 property UserName: WideString; 78 property NegotiateAuth: WordBool; 79 property Variable[const Name: WideString; Persistent: WordBool]: OleVariant; 80 end; Члены интерфейса доступны для использования в скриптах форм задания параметров, а также в отчетах как члены класса передаваемого контекстного объекта.
|
2. Интерфейс IContextDataSet | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
01 IContextDataSet = interface(IDispatch) 02 ['{466F3AF7-F899-4BC1-869D-1B17DCB86159}'] 03 procedure AddQueryItem(Part: TQueryPart; const Name: WideString; 04 Value: OleVariant; Special: TQuerySpecial; Context: OleVariant); 05 function Eof: WordBool; 06 function Field(const Name: WideString): OleVariant; 07 function FieldCount: Integer; 08 function FieldName(Index: Integer): WideString; 09 procedure Next; 10 end; Интерфейс предоставляет возможности формирования и выполнения запросов к базе данных с целью получения свойств объектов определенного класса, предоставляет доступ к объекту набора данных. Работа с объектом, реализующим интерфейс IContextDataSet заключается в формировании структуры набора данных и последующих обращениях к ним.
|
3. Интерфейс IConstants | ||||||||||||||||||||||||||||||||||||||||||
01 IConstants = interface(IDispatch) 02 ['{7E7B2D66-5E7C-496A-AE06-EFC485007500}'] 03 property qpWhat: Integer; 04 property qpWhere: Integer; 05 property qpOrder: Integer; 06 property qpGroup: Integer; 07 property qpHaving: Integer; 08 property qsNone: Integer; 09 property qsObjectID: Integer; 10 property qsParentID: Integer; 11 property qsHasChildren: Integer; 12 property qsFilterCondition: Integer; 13 property qsUplink: Integer; 14 property qsRootOnly: Integer; 15 property qsDescending: Integer; 16 property qsCount: Integer; 17 property qsSum: Integer; 18 property qsMin: Integer; 19 property qsMax: Integer; 20 property qsAverage: Integer; 21 property qsMasterLink: Integer; 22 property qsSelectedOnly: Integer; 23 end; Интерфейс предоставляет символические имена констант, необходимых для работы с объектом, реализующим интерфейс IContextDataSet.
|
4. Интерфейс IFormContext |
01 IFormContext = interface(IDispatch) 02 ['{1944F1C8-CAEA-4CF9-9A4D-CE3423508FF7}'] 03 function ChangedControl: OleVariant; 04 function ControlCount: Integer; 05 function ButtonCount: Integer; 06 function ID: WideString; 07 procedure Cancel; 08 function ControlExists(const Name: WideString): WordBool; 09 function ChangedControlName: WideString; 10 function ParentForm: OleVariant; 11 function RoutineID: WideString; 12 procedure PreInitControl(const Name: WideString; Value: OleVariant); 13 procedure NavigatorNext; 14 procedure NavigatorPrevious; 15 function NavigatorCanNext: WordBool; 16 function NavigatorCanPrevious: WordBool; 17 procedure RefreshView(RefreshAll: WordBool); 18 function ExpressionContextValue(const Name: WideString): OleVariant; safecall; 19 property Controls[Name: OleVariant]: IControl; 20 property Buttons[Name: OleVariant]: IButton; 21 property Enabled: WordBool; 22 end; Представляет собой модель формы задания параметров. Члены интерфейса доступны для использования в скриптах форм задания параметров.
|
5. Интерфейс IControl |
01 IControl = interface(IDispatch) 02 ['{0662001F-D3D5-4F28-98AC-9B499F70E856}'] 03 function Name: WideString; 04 procedure SetHint(const Value: WideString); 05 procedure RefreshLinkedView; 06 property Value: OleVariant; 07 property ReadOnly: WordBool; 08 property IsValid: WordBool; 09 property IsEmpty: WordBool; 10 end; Моделирует элемент управления на форме задания параметров. Позволяет управлять поведением элементов управления на форме.
|
6. Интерфейс IButton |
1 IButton = interface(IDispatch) 2 ['{1618406F-B9F1-4C5F-BC35-C2A154837CA9}'] 3 function Name: WideString; safecall; 4 procedure Click; safecall; 5 property Enabled: WordBool; 6 end; Моделирует командную кнопку на форме задания параметров. Позволяет управлять поведением кнопки на форме.
|
7. Интерфейс IBinaryData |
01 IBinaryData = interface(IDispatch) 02 ['{8A9F7CB3-230A-4048-B938-852CBF6ADB2D}'] 03 procedure Load(const Src: OleVariant); 04 procedure Append(const Src: OleVariant); 05 procedure Save(const Dst: OleVariant); 06 function Size: Cardinal; 07 function ToString(Encoding: WideString): WideString; 08 procedure FromString(Data: OleVariant); 09 procedure AppendString(Data: OleVariant); 10 function ToBase64: WideString; 11 procedure FromBase64(Data: OleVariant); Представляет набор двоичных данных.
|
8. Интерфейс IContextExpressionInfo |
1 IContextExpressionInfo = interface(IUnknown) 2 ['{C7518427-B515-4EB4-B698-88656E6CBF7C}'] 3 function Count: Integer; 4 function ItemName(Index: Integer): WideString; 5 function ItemValue(Index: Integer): OleVariant; 6 function ItemDomain(Index: Integer): OleVariant; 7 end; Через реализацию этого интерфейса передаются значения контекстных переменных при обращении к функции selectValueинтерфейса IContext.
|
9. Интерфейс IExceptionHandler |
1 IExceptionHandler = interface(IDispatch) 2 ['{3C3C7202-5ED5-4EB4-9CDD-A929C18CA8BD}'] 3 procedure HandleException(ContextObject: OleVariant; 4 const Message: WideString; 5 const ExtentedInfo: WideString); 6 end; Реализовав интерфейс IExceptionHandler разработчик решений может получать уведомления о возникающих при работе исключительных ситуациях. При возникновении исключения объект, реализующий интерфейс, получит текст сообщения об ошибке и расширенную информацию. Для реализации интерфеса используется библиотека hse.tlb, входящая в состав поставки решения. Перед началом работы с ней, необходимо зарегистрировать ее в операционной системе. Для установки настроек интерфейса необходимо открыть Системную форму раздела АДМИНИСТРАТОРУ, перейти на вкладку Настройки и в столбце "Заголовок закладки" установить фильтр "Обработка ошибок". После этого в качестве значения Идентификатора класса установить "IExceptionHandler" без кавычек. Для Библиотеки кода указать значение HSE.tlb |