понедельник, 22 апреля 2013 г.

Про "микросхемы" и UML

Вот тут - http://18delphi.blogspot.com/2013/04/uml_19.html была "вода" про UML и "микросхемы".

Теперь приведу иллюстрацию из самого, что ни на есть реального проекта.

Диаграмма:
<<VCMApplication>> - приложение
<<VCMUseCaseRealization>> - и есть те самые "микросхемы", точнее - БИС.
Приложение КОНСТРУИРУЕТСЯ из разработанных ранее МОДУЛЕЙ.

Теперь код, который из этого ГЕНЕРИРУЕТСЯ:

unit NemesisRes;
 
interface
 
uses
...
  ;
 
type
TNemesisRes = {final} class(TPrimNemesisRes)
 {* [$90440042] }
protected
   procedure RegisterFormSetFactories; override;
   class procedure RegisterModules(aMain: TvcmMainForm); override;
...
end;//TNemesisRes
 
 
implementation
 
uses
  moCompareEditions,
  moInternetAgent,
  moFolders,
  moChat,
  moWorkJournal,
  moMonitorings,
  moCommon,
  moDocument,
  moList,
  moDiction,
  moTips,
  moInpharm,
  moRubricator,
  moSettings,
  moMainMenu,
  moConsultations,
  moBaseSearch,
  moFilters,
  moUnderControl,
  moDocumentListFromFile,
  moChangesBetweenEditions,
  moSearch,
  moAAC,
...
  fsCompareEditions,
  fsInternetAgent,
  fsFolders,
  fsAutoreferat,
  fsAutoreferatAfterSearch,
  fsDocument,
  fsDocumentWithFlash,
  fsList,
  fsDiction,
  fsTips,
  fsMedicDiction,
  fsMedicFirmDocument,
  fsDrugDocument,
  fsDrugList,
  fsMedicFirmList,
  fsSimpleMainMenu,
  fsSendConsultation,
  fsConsultation,
  fsViewChangedFragments,
  fsSituationSearch,
  fsSituationFilter,
  fsAACContents,
  fsAAC
  ;
 
// start class TNemesisRes
 
procedure TNemesisRes.RegisterFormSetFactories;
begin
 inherited;
 RegisterFormSetFactory(Tfs_CompareEditions);
 RegisterFormSetFactory(Tfs_InternetAgent);
 RegisterFormSetFactory(Tfs_Folders);
 RegisterFormSetFactory(Tfs_Autoreferat);
 RegisterFormSetFactory(Tfs_AutoreferatAfterSearch);
 RegisterFormSetFactory(Tfs_Document);
 RegisterFormSetFactory(Tfs_DocumentWithFlash);
 RegisterFormSetFactory(Tfs_List);
 RegisterFormSetFactory(Tfs_Diction);
 RegisterFormSetFactory(Tfs_Tips);
 RegisterFormSetFactory(Tfs_MedicDiction);
 RegisterFormSetFactory(Tfs_MedicFirmDocument);
 RegisterFormSetFactory(Tfs_DrugDocument);
 RegisterFormSetFactory(Tfs_DrugList);
 RegisterFormSetFactory(Tfs_MedicFirmList);
 RegisterFormSetFactory(Tfs_SimpleMainMenu);
 RegisterFormSetFactory(Tfs_SendConsultation);
 RegisterFormSetFactory(Tfs_Consultation);
 RegisterFormSetFactory(Tfs_ViewChangedFragments);
 RegisterFormSetFactory(Tfs_SituationSearch);
 RegisterFormSetFactory(Tfs_SituationFilter);
 RegisterFormSetFactory(Tfs_AACContents);
 RegisterFormSetFactory(Tfs_AAC);
end;
 
class procedure TNemesisRes.RegisterModules(aMain: TvcmMainForm);
begin
 inherited;
 aMain.RegisterModule(Tmo_CompareEditions);
 aMain.RegisterModule(Tmo_InternetAgent);
 aMain.RegisterModule(Tmo_Folders);
 aMain.RegisterModule(Tmo_Chat);
 aMain.RegisterModule(Tmo_WorkJournal);
 aMain.RegisterModule(Tmo_Monitorings);
 aMain.RegisterModule(Tmo_Common);
 aMain.RegisterModule(Tmo_Document);
 aMain.RegisterModule(Tmo_List);
 aMain.RegisterModule(Tmo_Diction);
 aMain.RegisterModule(Tmo_Tips);
 aMain.RegisterModule(Tmo_Inpharm);
 aMain.RegisterModule(Tmo_Rubricator);
 aMain.RegisterModule(Tmo_Settings);
 aMain.RegisterModule(Tmo_MainMenu);
 aMain.RegisterModule(Tmo_Consultations);
 aMain.RegisterModule(Tmo_BaseSearch);
 aMain.RegisterModule(Tmo_Filters);
 aMain.RegisterModule(Tmo_UnderControl);
 aMain.RegisterModule(Tmo_DocumentListFromFile);
 aMain.RegisterModule(Tmo_ChangesBetweenEditions);
 aMain.RegisterModule(Tmo_Search);
 aMain.RegisterModule(Tmo_AAC);
end;
 
var
 g_opcode_Document_ShowJurorComments : TvcmOpID;
 g_opcode_Document_ShowUserComments : TvcmOpID;
 g_opcode_Document_ShowVersionComments : TvcmOpID;
 g_opcode_Finder_GotoPara : TvcmOpID;
 g_opcode_Finder_DisableForceDrawFocusRect : TvcmOpID;
 g_opcode_File_Print : TvcmOpID;
 g_opcode_File_PrintDialog : TvcmOpID;
 g_opcode_File_PrintPreview : TvcmOpID;
 g_opcode_File_Save : TvcmOpID;
 g_opcode_Document_OpenEditionLocalLink : TvcmOpID;
 g_opcode_ControlCenter_Refresh : TvcmOpID;
 g_opcode_Document_SetPosition : TvcmOpID;
 g_opcode_RightEdition_ReturnToDocument : TvcmOpID;
 g_opcode_RightEdition_SetFocusToText : TvcmOpID;
 g_opcode_RightEdition_IsCurrentPara : TvcmOpID;
 g_opcode_Document_GetParaForPositionning : TvcmOpID;
 g_opcode_Edition_PrevChange : TvcmOpID;
 g_opcode_Edition_NextChange : TvcmOpID;
 g_opcode_Edition_ReturnToDocument : TvcmOpID;
 g_opcode_Document_ViewChangedFragments : TvcmOpID;
 g_opcode_Redactions_OpenRedactionListFrmAct : TvcmOpID;
 g_opcode_Redactions_RedactionOnID : TvcmOpID;
 g_opcode_Redactions_ActualRedaction : TvcmOpID;
 g_opcode_Redactions_PrevRedaction : TvcmOpID;
 g_opcode_Redactions_NextRedaction : TvcmOpID;
 g_opcode_Scalable_ChangeScale : TvcmOpID;
 g_opcode_Scalable_CanChangeScale : TvcmOpID;
 g_module_opcode_InternetAgent_InternetAgent : TvcmMOpID;
 g_opcode_Result_Cancel : TvcmOpID;
 g_opcode_FoldersControl_EditElement : TvcmOpID;
 g_opcode_FoldersControl_DeleteElement : TvcmOpID;
 g_opcode_Result_Ok : TvcmOpID;
...
 
procedure TNemesisRes.Loaded;
begin
 inherited;
 PublishModule(Tmo_CompareEditions, 'Сравнение редакций');
 PublishModule(Tmo_InternetAgent, 'Интернет-агент');
 PublishModule(Tmo_Folders, 'Папки');
 PublishModule(Tmo_Chat, 'Чат');
 PublishModule(Tmo_WorkJournal, 'Журнал работы');
 PublishModule(Tmo_Monitorings, 'Мониторинги');
 PublishModule(Tmo_Common, 'Окна');
 PublishModule(Tmo_Document, 'Документ');
 PublishModule(Tmo_List, 'Список');
 PublishModule(Tmo_Diction, 'Толковый словарь');
 PublishModule(Tmo_Tips, 'Совет дня');
 PublishModule(Tmo_Inpharm, 'Инфарм');
 PublishModule(Tmo_Rubricator, 'Правовой навигатор');
 PublishModule(Tmo_Settings, 'Установки');
 PublishModule(Tmo_MainMenu, 'Основное меню');
 PublishModule(Tmo_Consultations, 'Консультации');
 PublishModule(Tmo_BaseSearch, 'Базовый поиск');
 PublishModule(Tmo_Filters, 'Фильтры');
 PublishModule(Tmo_UnderControl, 'Документы на контроле');
 PublishModule(Tmo_DocumentListFromFile, 'Список документов из файла');
 PublishModule(Tmo_ChangesBetweenEditions, 'Просмотр только измененных фрагментов');
 PublishModule(Tmo_Search, 'Поиск');
 PublishModule(Tmo_AAC, 'Актуальная аналитика')
...
 g_opcode_Document_ShowVersionComments :=
  PublishOperation(en_Document,
                    op_ShowVersionComments,
                    en_capDocument,
                    op_capShowVersionComments);
  with PublishOperationState(en_Document, op_ShowVersionComments, 'Hide') do
  begin
   st_user_Document_ShowVersionComments_Hide := StateIndex;
   Caption := 'Выключить информацию об изменениях документа';
   Checked := true;
  end;//with PublishOperationState(en_Document, op_ShowVersionComments, 'Hide')
  with PublishOperationState(en_Document, op_ShowVersionComments, 'Show') do
  begin
   st_user_Document_ShowVersionComments_Show := StateIndex;
   Caption := 'Включить информацию об изменениях документа';
  end;//with PublishOperationState(en_Document, op_ShowVersionComments, 'Show')
 PublishOperation(en_Document,
                    op_ShowCommentsGroup,
                    en_capDocument,
                    op_capShowCommentsGroup);
 PublishOperation(en_SubPanelSettings,
                    op_ShowSpecial,
                    en_capSubPanelSettings,
                    op_capShowSpecial);
 PublishOperation(en_SubPanelSettings,
                    op_ShowInfo,
                    en_capSubPanelSettings,
                    op_capShowInfo);
 g_opcode_Finder_GotoPara :=
  PublishInternalOperation(en_Finder,
                    op_GotoPara,
                    en_capFinder,
                    op_capGotoPara);
 g_opcode_Finder_DisableForceDrawFocusRect :=
  PublishInternalOperation(en_Finder,
                    op_DisableForceDrawFocusRect,
                    en_capFinder,
                    op_capDisableForceDrawFocusRect);
 PublishOperation(en_File,
                    op_ToMSWord,
                    en_capFile,
                    op_capToMSWord);
 PublishOperation(en_File,
                    op_SendMailAsAttachment,
                    en_capFile,
                    op_capSendMailAsAttachment, true);
 g_opcode_File_Print :=
  PublishOperation(en_File,
                    op_Print,
                    en_capFile,
                    op_capPrint);
 g_opcode_File_PrintDialog :=
  PublishOperation(en_File,
                    op_PrintDialog,
                    en_capFile,
                    op_capPrintDialog);
 g_opcode_File_PrintPreview :=
  PublishOperation(en_File,
                    op_PrintPreview,
                    en_capFile,
                    op_capPrintPreview);
 g_opcode_File_Save :=
  PublishOperation(en_File,
                    op_Save,
                    en_capFile,
                    op_capSave);
 g_opcode_Document_OpenEditionLocalLink :=
  PublishInternalOperation(en_Document,
                    op_OpenEditionLocalLink,
                    en_capDocument,
                    op_capOpenEditionLocalLink);
 PublishOperation(en_Edit,
                    op_Copy,
                    en_capEdit,
                    op_capCopy);
  with PublishOperationState(en_Edit, op_Copy, 'AttributesCopy') do
  begin
   st_user_Edit_Copy_AttributesCopy := StateIndex;
   Caption := 'Копировать все атрибуты документа в буфер обмена';
  end;//with PublishOperationState(en_Edit, op_Copy, 'AttributesCopy')
 PublishOperation(en_Edit,
                    op_Cut,
                    en_capEdit,
                    op_capCut);
 PublishOperation(en_Edit,
                    op_FindContext,
                    en_capEdit,
                    op_capFindContext);
 PublishOperation(en_Edit,
                    op_FindNext,
                    en_capEdit,
                    op_capFindNext);
 PublishOperation(en_Edit,
                    op_Paste,
                    en_capEdit,
                    op_capPaste);
 PublishOperation(en_Edit,
                    op_Undo,
                    en_capEdit,
                    op_capUndo);
 PublishOperation(en_Edit,
                    op_Redo,
                    en_capEdit,
                    op_capRedo);
 PublishOperation(en_Edit,
                    op_SelectAll,
                    en_capEdit,
                    op_capSelectAll);
 PublishOperation(en_Edit,
                    op_Deselect,
                    en_capEdit,
                    op_capDeselect);
 PublishOperation(en_Edit,
                    op_FindPrev,
                    en_capEdit,
                    op_capFindPrev);
 g_opcode_ControlCenter_Refresh :=
  PublishInternalOperation(en_ControlCenter,
                    op_Refresh,
                    en_capControlCenter,
                    op_capRefresh);
 g_opcode_Document_SetPosition :=
  PublishInternalOperation(en_Document,
                    op_SetPosition,
                    en_capDocument,
                    op_capSetPosition);
 PublishOperation(en_HyperLink,
                    op_Open,
                    en_capHyperLink,
                    op_capOpen);
 PublishOperation(en_HyperLink,
                    op_OpenNewWindow,
                    en_capHyperLink,
                    op_capOpenNewWindow);
 PublishOperation(en_HyperLink,
                    op_NextHyperLink,
                    en_capHyperLink,
                    op_capNextHyperLink);
 PublishOperation(en_HyperLink,
                    op_PrevHyperLink,
                    en_capHyperLink,
                    op_capPrevHyperLink);
 PublishOperation(en_HyperLink,
                    op_Delete,
                    en_capHyperLink,
                    op_capDelete, true);
 g_opcode_RightEdition_ReturnToDocument :=
  PublishInternalOperation(en_RightEdition,
                    op_ReturnToDocument,
                    en_capRightEdition,
                    op_capReturnToDocument);
 g_opcode_RightEdition_SetFocusToText :=
  PublishInternalOperation(en_RightEdition,
                    op_SetFocusToText,
                    en_capRightEdition,
                    op_capSetFocusToText);
 g_opcode_RightEdition_IsCurrentPara :=
  PublishInternalOperation(en_RightEdition,
                    op_IsCurrentPara,
                    en_capRightEdition,
                    op_capIsCurrentPara);
 g_opcode_Document_GetParaForPositionning :=
  PublishInternalOperation(en_Document,
                    op_GetParaForPositionning,
                    en_capDocument,
                    op_capGetParaForPositionning);
 g_opcode_Edition_PrevChange :=
  PublishOperation(en_Edition,
                    op_PrevChange,
                    en_capEdition,
                    op_capPrevChange);
 g_opcode_Edition_NextChange :=
  PublishOperation(en_Edition,
                    op_NextChange,
                    en_capEdition,
                    op_capNextChange);
 g_opcode_Edition_ReturnToDocument :=
  PublishOperation(en_Edition,
                    op_ReturnToDocument,
                    en_capEdition,
                    op_capReturnToDocument);
 g_opcode_Document_ViewChangedFragments :=
  PublishOperation(en_Document,
                    op_ViewChangedFragments,
                    en_capDocument,
                    op_capViewChangedFragments);
 g_opcode_Redactions_OpenRedactionListFrmAct :=
  PublishOperation(en_Redactions,
                    op_OpenRedactionListFrmAct,
                    en_capRedactions,
                    op_capOpenRedactionListFrmAct);
  with PublishOperationState(en_Redactions, op_OpenRedactionListFrmAct, 'ChooseAnotherEditions') do
  begin
   st_user_Redactions_OpenRedactionListFrmAct_ChooseAnotherEditions := StateIndex;
   Caption := 'Выбрать другие редакции';
  end;//with PublishOperationState(en_Redactions, op_OpenRedactionListFrmAct, 'ChooseAnotherEditions')
 g_opcode_Redactions_RedactionOnID :=
  PublishInternalOperation(en_Redactions,
                    op_RedactionOnID,
                    en_capRedactions,
                    op_capRedactionOnID);
 g_opcode_Redactions_ActualRedaction :=
  PublishOperation(en_Redactions,
                    op_ActualRedaction,
                    en_capRedactions,
                    op_capActualRedaction);
 g_opcode_Redactions_PrevRedaction :=
  PublishOperation(en_Redactions,
                    op_PrevRedaction,
                    en_capRedactions,
                    op_capPrevRedaction);
 g_opcode_Redactions_NextRedaction :=
  PublishOperation(en_Redactions,
                    op_NextRedaction,
                    en_capRedactions,
                    op_capNextRedaction);
 PublishOperation(en_Edit,
                    op_Delete,
                    en_capEdit,
                    op_capDelete);
  with PublishOperationState(en_Edit, op_Delete, 'Controlled') do
  begin
   st_user_Edit_Delete_Controlled := StateIndex;
   Caption := 'Снять с контроля';
  end;//with PublishOperationState(en_Edit, op_Delete, 'Controlled')
...
  with PublishOperationState(en_Edit, op_Delete, 'Contact') do
  begin
   st_user_Edit_Delete_Contact := StateIndex;
   Caption := 'Удалить пользователя';
  end;//with PublishOperationState(en_Edit, op_Delete, 'Contact')
 g_opcode_Scalable_ChangeScale :=
  PublishInternalOperation(en_Scalable,
                    op_ChangeScale,
                    en_capScalable,
                    op_capChangeScale);
 g_opcode_Scalable_CanChangeScale :=
  PublishInternalOperation(en_Scalable,
                    op_CanChangeScale,
                    en_capScalable,
                    op_capCanChangeScale);
 g_module_opcode_InternetAgent_InternetAgent := 
  PublishModuleOperation(Tmo_InternetAgent, 'InternetAgent', 'Новости онлайн');
 g_opcode_Result_Cancel :=
  PublishOperation(en_Result,
                    op_Cancel,
                    en_capResult,
                    op_capCancel);
 g_opcode_FoldersControl_EditElement :=
  PublishInternalOperation(en_FoldersControl,
                    op_EditElement,
                    en_capFoldersControl,
                    op_capEditElement);
 g_opcode_FoldersControl_DeleteElement :=
  PublishInternalOperation(en_FoldersControl,
                    op_DeleteElement,
                    en_capFoldersControl,
                    op_capDeleteElement);
 g_opcode_Result_Ok :=
  PublishOperation(en_Result,
                    op_Ok,
                    en_capResult,
                    op_capOk);
  with PublishOperationState(en_Result, op_Ok, 'Search') do
  begin
   st_user_Result_Ok_Search := StateIndex;
   Caption := 'Искать';
   Hint := 'Провести поиск по выбранным параметрам';
  end;//with PublishOperationState(en_Result, op_Ok, 'Search')
  with PublishOperationState(en_Result, op_Ok, 'Print') do
  begin
   st_user_Result_Ok_Print := StateIndex;
   Caption := 'Печать';
   ImageIndex := 3;
  end;//with PublishOperationState(en_Result, op_Ok, 'Print')
  with PublishOperationState(en_Result, op_Ok, 'AttributesSelect') do
  begin
   st_user_Result_Ok_AttributesSelect := StateIndex;
   Caption := 'Подтвердить выбор элементов';
  end;//with PublishOperationState(en_Result, op_Ok, 'AttributesSelect')
  with PublishOperationState(en_Result, op_Ok, 'ConsultationMark') do
  begin
   st_user_Result_Ok_ConsultationMark := StateIndex;
   Caption := 'Оценить';
  end;//with PublishOperationState(en_Result, op_Ok, 'ConsultationMark')
  with PublishOperationState(en_Result, op_Ok, 'Analize') do
  begin
   st_user_Result_Ok_Analize := StateIndex;
   Caption := 'Построить';
  end;//with PublishOperationState(en_Result, op_Ok, 'Analize')
 PublishOperation(en_Result,
                    op_Append,
                    en_capResult,
                    op_capAppend);
 g_opcode_AdditionInfo_Show :=
  PublishInternalOperation(en_AdditionInfo,
                    op_Show,
                    en_capAdditionInfo,
                    op_capShow);
 g_opcode_AdditionInfo_Hide :=
  PublishInternalOperation(en_AdditionInfo,
                    op_Hide,
                    en_capAdditionInfo,
                    op_capHide);
 g_opcode_AdditionInfo_SetCaption :=
  PublishInternalOperation(en_AdditionInfo,
                    op_SetCaption,
                    en_capAdditionInfo,
                    op_capSetCaption);
 g_opcode_AdditionInfo_Close :=
  PublishInternalOperation(en_AdditionInfo,
                    op_Close,
                    en_capAdditionInfo,
                    op_capClose);
 g_opcode_Switcher_BecomeActive :=
  PublishInternalOperation(en_Switcher,
                    op_BecomeActive,
                    en_capSwitcher,
                    op_capBecomeActive);
 g_opcode_ResultExt_Ok :=
  PublishOperation(en_ResultExt,
                    op_Ok,
                    en_capResultExt,
                    op_capOk);
  with PublishOperationState(en_ResultExt, op_Ok, 'None') do
  begin
   st_user_ResultExt_Ok_None := StateIndex;
   Hint := 'Подтвердить выбор';
   Enabled := false;
  end;//with PublishOperationState(en_ResultExt, op_Ok, 'None')
  with PublishOperationState(en_ResultExt, op_Ok, 'NewFolder') do
  begin
   st_user_ResultExt_Ok_NewFolder := StateIndex;
   Hint := 'Создать папку';
  end;//with PublishOperationState(en_ResultExt, op_Ok, 'NewFolder')
  with PublishOperationState(en_ResultExt, op_Ok, 'Edit') do
  begin
   st_user_ResultExt_Ok_Edit := StateIndex;
   Hint := 'Сохранить отредактированные параметры';
  end;//with PublishOperationState(en_ResultExt, op_Ok, 'Edit')
...
 g_opcode_Document_ExportBlock :=
  PublishInternalOperation(en_Document,
                    op_ExportBlock,
                    en_capDocument,
                    op_capExportBlock);
 g_opcode_Document_GetCurrentPosition :=
  PublishInternalOperation(en_Document,
                    op_GetCurrentPosition,
                    en_capDocument,
                    op_capGetCurrentPosition);
 g_opcode_Document_SelectBlock :=
  PublishInternalOperation(en_Document,
                    op_SelectBlock,
                    en_capDocument,
                    op_capSelectBlock);
 g_opcode_Document_CopyBlock :=
  PublishInternalOperation(en_Document,
                    op_CopyBlock,
                    en_capDocument,
                    op_capCopyBlock);
 g_opcode_Document_PrintBlock :=
  PublishInternalOperation(en_Document,
                    op_PrintBlock,
                    en_capDocument,
                    op_capPrintBlock);
 g_opcode_Document_PrintDialogBlock :=
  PublishInternalOperation(en_Document,
                    op_PrintDialogBlock,
                    en_capDocument,
                    op_capPrintDialogBlock);
 g_opcode_Document_PreviewBlock :=
  PublishInternalOperation(en_Document,
                    op_PreviewBlock,
                    en_capDocument,
                    op_capPreviewBlock);
 g_opcode_Document_ShowRespondentListToPart :=
  PublishInternalOperation(en_Document,
                    op_ShowRespondentListToPart,
                    en_capDocument,
                    op_capShowRespondentListToPart);
 g_opcode_Document_ShowCorrespondentListToPart :=
  PublishInternalOperation(en_Document,
                    op_ShowCorrespondentListToPart,
                    en_capDocument,
                    op_capShowCorrespondentListToPart);
 g_opcode_Document_ModifyBookmarkNotify :=
  PublishInternalOperation(en_Document,
                    op_ModifyBookmarkNotify,
                    en_capDocument,
                    op_capModifyBookmarkNotify);
 g_opcode_Document_AddBookmarkFromContents :=
  PublishInternalOperation(en_Document,
                    op_AddBookmarkFromContents,
                    en_capDocument,
                    op_capAddBookmarkFromContents);
 g_opcode_Document_OpenNotSureTopic :=
  PublishInternalOperation(en_Document,
                    op_OpenNotSureTopic,
                    en_capDocument,
                    op_capOpenNotSureTopic);
 g_opcode_Document_GotoPara :=
  PublishInternalOperation(en_Document,
                    op_GotoPara,
                    en_capDocument,
                    op_capGotoPara);
...
 PublishOperation(en_UserComment,
                    op_Delete,
                    en_capUserComment,
                    op_capDelete);
 g_opcode_Text_AddUserComment :=
  PublishOperation(en_Text,
                    op_AddUserComment,
                    en_capText,
                    op_capAddUserComment);
 g_opcode_Text_DeleteBookmark :=
  PublishOperation(en_Text,
                    op_DeleteBookmark,
                    en_capText,
                    op_capDeleteBookmark);
 g_opcode_Text_EditBookmark :=
  PublishOperation(en_Text,
                    op_EditBookmark,
                    en_capText,
                    op_capEditBookmark);
 g_opcode_Text_AddBookmark :=
  PublishOperation(en_Text,
                    op_AddBookmark,
                    en_capText,
                    op_capAddBookmark);
 g_opcode_Text_OpenNewWindow :=
  PublishOperation(en_Text,
                    op_OpenNewWindow,
                    en_capText,
                    op_capOpenNewWindow);
 g_opcode_DocumentSubPanel_UpdateSubPanel :=
  PublishInternalOperation(en_DocumentSubPanel,
                    op_UpdateSubPanel,
                    en_capDocumentSubPanel,
                    op_capUpdateSubPanel);
 PublishOperation(en_DocumentBlockBookmarks,
                    op_AddBookmark,
                    en_capDocumentBlockBookmarks,
                    op_capAddBookmark);
 PublishOperation(en_IntranetSourcePoint,
                    op_GoToIntranet,
                    en_capIntranetSourcePoint,
                    op_capGoToIntranet);
 PublishOperation(en_Picture,
                    op_Open,
                    en_capPicture,
                    op_capOpen);
 PublishOperation(en_Picture,
                    op_OpenNewWindow,
                    en_capPicture,
                    op_capOpenNewWindow);
...
end;
 
...
 
// modules operations
 
class procedure TNemesisRes.MakeCompareEditions(const aDoc: IDocument;
  const aPara: IeeLeafPara;
  aEditionForCompare: Integer;
  const aDocumentForReturn: TnsDocumentForReturnInfo);
begin
 TBaseEditionsModule.MakeCompareEditions(aDoc, aPara, aEditionForCompare, aDocumentForReturn);
end;
 
class procedure TNemesisRes.MakeCompareEditions(const aDoc: IDocument;
  const aPara: IeeLeafPara);
begin
 TBaseEditionsModule.MakeCompareEditions(aDoc, aPara);
end;
 
class procedure TNemesisRes.MakeCompareEditions(const aLeft: IDocument;
  const aRight: IDocument;
  const aPara: IeeLeafPara);
begin
 TBaseEditionsModule.MakeCompareEditions(aLeft, aRight, aPara);
end;
 
class procedure TNemesisRes.MakeCompareEditions(const aDoc: IDocument;
  const aPara: IeeLeafPara;
  aEditionForCompare: Integer);
begin
 TBaseEditionsModule.MakeCompareEditions(aDoc, aPara, aEditionForCompare);
end;
 
class procedure TNemesisRes.OpenDocument(const aDocInfo: IdeDocInfo;
  const aContainer: IvcmContainer);
begin
 TDocumentModule.OpenDocument(aDocInfo, aContainer);
end;
 
class function TNemesisRes.OpenEntityAsDocument(const anEntity: IUnknown;
  const aContainer: IvcmContainer): IDocument;
begin
 Result := TDocumentModule.OpenEntityAsDocument(anEntity, aContainer);
end;
 
class function TNemesisRes.SafeOpenDocument(const aBaseEntity: IUnknown): IDocument;
begin
 Result := TDocumentModule.SafeOpenDocument(aBaseEntity);
end;
 
class procedure TNemesisRes.OpenDocumentWithCheck(const aDocInfo: IdeDocInfo;
  const aContainer: IvcmContainer);
begin
 TDocumentModule.OpenDocumentWithCheck(aDocInfo, aContainer);
end;
 
class function TNemesisRes.OpenExternalObject(const aContainer: IvcmContainer;
  const aData: InsLinkedObjectData): IvcmEntityForm;
begin
 Result := TDocumentModule.OpenExternalObject(aContainer, aData);
end;
 
class function TNemesisRes.OpenPicture(const aContainer: IvcmContainer;
  const aData: InsLinkedObjectData): IvcmEntityForm;
begin
 Result := TDocumentModule.OpenPicture(aContainer, aData);
end;
 
class function TNemesisRes.OpenPictureInfo(const aContainer: IvcmContainer;
  const aData: InsLinkedObjectDescription): IvcmEntityForm;
begin
 Result := TDocumentModule.OpenPictureInfo(aContainer, aData);
end;
 
class function TNemesisRes.OpenTurnOnTimeMachine(const anIntf: InsTurnOnTimeMachine): IvcmEntityForm;
begin
 Result := TDocumentModule.OpenTurnOnTimeMachine(anIntf);
end;
 
class function TNemesisRes.OpenEditionsListModal(const anEditionsHolder: IsdsEditionsHolder;
  const anAggregate: IvcmAggregate): IvcmEntityForm;
begin
 Result := TDocumentModule.OpenEditionsListModal(anEditionsHolder, anAggregate);
end;
 
class function TNemesisRes.MakeBaloonForm(aCaller: TvcmContainerForm;
  aUserType: TvcmEffectiveUserType;
  const aWarning: IdsWarning): IvcmEntityForm;
begin
 Result := TDocumentModule.MakeBaloonForm(aCaller, aUserType, aWarning);
end;
 
class function TNemesisRes.DocumentUseFixedFontForPrintAndExportSetting: Boolean;
begin
 Result := TDocumentModule.DocumentUseFixedFontForPrintAndExportSetting;
end;
 
class procedure TNemesisRes.WriteDocumentUseFixedFontForPrintAndExportSetting(aValue: Boolean);
begin
 TDocumentModule.WriteDocumentUseFixedFontForPrintAndExportSetting(aValue);
end;
 
class function TNemesisRes.DocumentShowChangesInfoSetting: Boolean;
begin
 Result := TDocumentModule.DocumentShowChangesInfoSetting;
end;
 
class procedure TNemesisRes.WriteDocumentShowChangesInfoSetting(aValue: Boolean);
begin
 TDocumentModule.WriteDocumentShowChangesInfoSetting(aValue);
end;
 
class procedure TNemesisRes.OpenTermByContext(const aContext: Il3CString;
  aLanguage: TbsLanguage);
begin
 TDictionModule.OpenTermByContext(aContext, aLanguage);
end;
 
class procedure TNemesisRes.OpenDictionary(const aDocInfo: IdeDocInfo;
  const aContainer: IvcmContainer);
begin
 TDictionModule.OpenDictionary(aDocInfo, aContainer);
end;
 
class procedure TNemesisRes.MakeInternetAgent(const anURL: Il3CString;
  const aContainer: IvcmContainer);
begin
 TPrimInternetAgentModule.MakeInternetAgent(anURL, aContainer);
end;
 
class function TNemesisRes.OpenFolders(const aContainer: IvcmContainer;
  aCanCreate: Boolean): IvcmEntityForm;
begin
 Result := TPrimFoldersModule.OpenFolders(aContainer, aCanCreate);
end;
 
class procedure TNemesisRes.OpenAutoreferat(const aDoc: IDocument;
  const aContainer: IvcmContainer);
begin
 TPrimMonitoringsModule.OpenAutoreferat(aDoc, aContainer);
end;
 
class procedure TNemesisRes.OpenAutoreferatAfterSearch(const aList: IMonitoringList;
  const aContainer: IvcmContainer);
begin
 TPrimMonitoringsModule.OpenAutoreferatAfterSearch(aList, aContainer);
end;
 
class function TNemesisRes.OpenNewsLine: IvcmEntityForm;
begin
 Result := TPrimMonitoringsModule.OpenNewsLine;
end;
 
class function TNemesisRes.OpenPostingOrder(const aQuery: IQuery): IvcmEntityForm;
begin
 Result := TCommonPostModule.OpenPostingOrder(aQuery);
end;
 
class procedure TNemesisRes.OpenSendConsultation(const aQuery: IQuery);
begin
 TConsultationModule.OpenSendConsultation(aQuery);
end;
 
class procedure TNemesisRes.OpenEntityAsConsultation(const aCons: IUnknown;
  const aContainer: IvcmContainer);
begin
 TConsultationModule.OpenEntityAsConsultation(aCons, aContainer);
end;
 
class procedure TNemesisRes.OpenConsultation(const aCons: IbsConsultation;
  const aContainer: IvcmContainer);
begin
 TConsultationModule.OpenConsultation(aCons, aContainer);
end;
 
class procedure TNemesisRes.FiltersOpen(const aData: IucpFilters);
begin
 TFiltersModule.FiltersOpen(aData);
end;
 
class function TNemesisRes.CreateFilter(const aQuery: IQuery): Integer;
begin
 Result := TFiltersModule.CreateFilter(aQuery);
end;
 
class procedure TNemesisRes.RenameFilter(const aFilter: IFilterFromQuery);
begin
 TFiltersModule.RenameFilter(aFilter);
end;
 
class function TNemesisRes.MakeChatDispatcher: IbsChatDispatcher;
begin
 Result := TBaseChatModule.MakeChatDispatcher;
end;
 
class function TNemesisRes.OpenChatWindow(anUID: TbsUserID;
  const aName: Il3CString): IvcmEntityForm;
begin
 Result := TBaseChatModule.OpenChatWindow(anUID, aName);
end;
 
class function TNemesisRes.OpenAddUserDialog: IvcmEntityForm;
begin
 Result := TBaseChatModule.OpenAddUserDialog;
end;
 
class function TNemesisRes.OpenHistoryWindow(anUID: TbsUserID;
  const aName: Il3CString): IvcmEntityForm;
begin
 Result := TBaseChatModule.OpenHistoryWindow(anUID, aName);
end;
 
...
 
end.

Заглянем внутрь? Одной из "микросхем".

Например:

И ещё внутрь:

Обратите кстати внимание на стрелки "реализации" к требованиям (<<UseCasRequiriement>>). Я о них позже - расскажу.

5 комментариев:

  1. Очень интересно.
    НО! все таки не догоняю. :(
    На чем рисовать, какую кнопку нажать....
    Мне, чайнику, нужна что-то вроде "Автогенерация кода по UML" шаг за шагом.

    Наверно не судьба....

    ОтветитьУдалить
  2. Как раз таки - судьба. Коллективный разум родил проект. Сегодня вечером напишу вводную. Следите за обновлениями, если интересно.

    ОтветитьУдалить
  3. Вот тут - http://18delphi.blogspot.com/2013/04/0-rup-uml-mda-etc-al.html - "вводная". Дальше - по ссылкам. И следите за обновлениями.

    ОтветитьУдалить
  4. последняя диаграмма идиотизм, и насилье над мозгом. я то прочел но в целом, вы это по памяти уже понмните просто ?

    ОтветитьУдалить