Имеется возможность редактирования значений и других свойств атрибутов, уже связанных с вставленными в чертеж блоками.
Изменение атрибутов определений блоков выполняется с помощью Диспетчер атрибутов блоков . Например, в нем можно редактировать:
- Свойства, определяющие порядок присваивания значений атрибутам и отвечающие за вывод или подавление отображения значений в графической области
- Свойства, управляющие отображением текста атрибутов на чертеже
- Свойства, определяющие слой, цвет, вес и тип линий для вывода атрибутов
По умолчанию изменение атрибутов оказывает действие на все имеющиеся вхождения блоков в текущем чертеже.
Изменение свойств атрибутов существующих вхождений блоков не влияет на значения, связанные с этими блоками. Например, если атрибут блока имеет имя "Стоимость" со значением 19,99, то после изменения имени атрибута на "Стоимость единицы" значение останется прежним.
Обновление атрибутов с одинаковыми именами может привести к непредсказуемым результатам. Для выявления одинаковых имен и их изменения можно воспользоваться Диспетчером атрибутов блоков.
Для обновления вхождений блоков в графической области после изменения их постоянных атрибутов и атрибутов вложенных блоков используется команда РЕГЕН .
Изменение порядка запросов на ввод значений атрибутов
Во время создания определения блока порядок выбора атрибутов задает порядок следования запросов на ввод их значений при вставке блока. Изменить этот порядок можно с помощью Диспетчера атрибутов блоков.
Удаление атрибутов блока
В текущем чертеже пользователь может удалять атрибуты из определений блоков, а также из всех существующих вхождений блоков. Атрибуты, удаленные из вхождений блоков, не исчезают в области рисования до регенерации чертежа пользователем с помощью команды РЕГЕН.
Нельзя таким способом удалить все атрибуты из блока; хотя бы один атрибут в блоке должен остаться. Если необходимо удалить все атрибуты, следует переопределить блок.
Обновление вхождений блоков
После внесения изменений в описания блоков пользователь может обновлять вхождения блоков в текущем чертеже. При редактировании свойств атрибутов в описаниях блоков с помощью Диспетчера атрибутов блоков автоматического обновления в чертеже существующих вхождений блоков не происходит. После завершения внесения изменений пользователь может применить изменения ко всем блокам текущего чертежа.
Можно также использовать АТРОБНОВИТЬ для обновления свойств атрибутов во вхождениях блоков с целью согласования с определениями блоков либо для обновления экземпляра блока после переопределения атрибута блока с помощью команд БЛОК , -БЛОК или БЛОКРЕД .
Обновление свойств атрибутов во вхождениях блоков не оказывает никакого влияния на значения этих атрибутов.
Редактирование атрибутов во вхождениях блоков
Можно выбрать атрибут во вхождении блока и использовать палитру "Свойства" с целью изменения их свойств либо можно использовать Дополнительный редактор атрибутов с целью изменения всех атрибутов в выбранном вхождении блока.
- Выберите вкладку "Главная" панель "Блок" "Управление атрибутами" . В командной строке введите "диспатблк".
- В Диспетчере атрибутов блоков выбрать блок из списка или нажать "Выбрать блок" для указания блока в графической области.
- В списке атрибутов дважды щелкнуть мышью на имени редактируемого атрибута или, выделив его, нажать "Редактировать".
- В диалоговом окне "Редактирование атрибута" внести все необходимые изменения и нажать "OK".
- Выберите вкладку "Главная" панель "Блок" "Управление атрибутами" . В командной строке введите "диспатблк".
- В Диспетчере атрибутов блоков нажать "Параметры".
- В диалоговом окне "Параметры" выполнить одно из действий:
- Для применения внесенных изменений к существующим вхождениям блоков установите флажок "Применять к имеющимся вхождениям".
- Для применения внесенных изменений только к новым вхождениям блоков снимите флажок "Применять к имеющимся вхождениям".
- Нажмите "ОК".
- Выберите вкладку "Главная" панель "Блок" "Управление атрибутами" . В командной строке введите "диспатблк".
- В Диспетчере атрибутов блоков нажать "Параметры".
- В диалоговом окне "Параметры" установить опцию "Выделять повторные имена".
- Нажмите "ОК".
- Выберите вкладку "Главная" панель "Блок" "Управление атрибутами" . В командной строке введите "диспатблк".
- В Диспетчере атрибутов блоков выбрать блок из списка или нажать "Выбрать блок" для указания блока в графической области.
Для выбранного блока выводится список атрибутов в порядке выполнения запросов на ввод их значений.
Для изменения положения атрибута в списке выделить его и нажать кнопку "Вверх" для перемещения вверх по списку или кнопку "Вниз" для перемещения вниз.
- Выберите вкладку "Главная" панель "Блок" "Управление атрибутами" . В командной строке введите "диспатблк".
- В Диспетчере атрибутов блоков выбрать блок из списка или нажать "Выбрать блок" для указания блока в графической области.
- (Не обязательно) Если атрибуты не нужно удалять из существующих экземпляров блока, щелкните "Настройки" и в диалоговом окне настроек снимите флажок "Применять к имеющимся вхождениям".
- В Диспетчере атрибутов блоков выделить атрибут в списке и нажать "Удалить".
Атрибуты, удаленные из имеющихся экземпляров блоков, не исчезают в графической области до регенерации чертежа пользователем с помощью команды РЕГЕН.
- Выберите вкладку "Главная" панель "Блок" "Управление атрибутами" . В командной строке введите "диспатблк".
- В Диспетчере атрибутов блоков выбрать блок из списка или нажать "Выбрать блок" для указания блока в графической области.
- Нажать "Обновить" для обновления измененных атрибутов во всех вхождениях, связанных с выбранным блоком.
- Выберите вкладку "Главная" панель "Блок" "Обновить атрибуты" . В командной строке введите атробновить.
- Выполнить одно из действий:
- Ввести имя, затем ввести имя блока, вхождения которого следует обновить.
- Введите ? для получения списка блоков, затем введите имя и имя блока.
- Нажмите Enter и затем укажите блок в области чертежа с помощью устройства указания.
При вводе имени несуществующего блока или при выборе блока, не имеющего атрибутов, появляется сообщение об ошибке.
- Выберите вкладку "Главная" панель "Блок" "Редактирование отдельного атрибута" . В командной строке введите "атредакт".
- В графической области выбрать блок для редактирования.
- В Редакторе атрибутов блоков выбрать атрибут для редактирования. Пользователь может изменить значение атрибута или перейти на другую вкладку для редактирования других свойств атрибута.
- Внести необходимые изменения и затем выполнить одно из следующих действий:
- Нажать "Применить" для сохранения изменений. Редактор атрибутов блоков остается открытым.
При нажатии кнопки "Отмена" для выхода из Редактора атрибутов блоков все изменения, сохраненные нажатием кнопки "Применить", остаются в силе.
Изменение текстового содержимого атрибута в блоке.
Обновление вхождений блоков с учетом новых и измененных атрибутов из указанного определения блока.
Управление атрибутами выбранного определения блока.
Редактирование атрибутов во вхождениях блоков.
Определяет, какие панели "Форматирование текста" используются совместно с контекстным редактором для изменения многострочных атрибутов.
Управляет возможностью создания многострочных атрибутов.
Многие помнят то чувство, когда компания расширяется до тех размеров, когда рабочих групп недостаточно, и поднимается первый домен Active Directory: «О, уж теперь-то все будет как следует!» Ан нет, домен потихонечку разрастается, создаются новые учетки, блокируются старые, добавляются, удаляются компьютеры, девушки выходят замуж, меняют фамилии и, в конце концов, база данных службы каталогов выглядит, как полный швах. В этом топике мы наладим связь между базой Active Directory и кадровой системой предприятия, а также создадим механизм для поддержания данных сотрудников в AD в актуальном состоянии.
Первым делом, мы опишем требования, которые мы должны предъявить к учетным записям сотрудников. А эти требования мы постараемся прикинуть, исходя из потребностей пользователя. Не секрет, что многие корпоративные системы, использующие аутентификацию через Active Directory, для отображения и в своих админках, и просто в ходе работы зачастую используют разнообразные поля учетных записей AD: это и Sharepoint, и Citrix, и многие-многие другие. В качестве примера такой системы я возьму известный всем MS Outlook, да не полностью, а лишь его адресную книгу, которая черпает свои данные напрямую из Active Directory.
Что использует пользователь? У нас в организации он зачастую ищет по имени телефон, адрес электронной почты и название подразделения. Конечно, неплохо заполнить еще и адресную информацию, но в связи с тем, что топик у нас о связке с абстрактной кадровой системой, мы адреса и телефоны оставим за скобками.
Первое, мы выписываем список полей, которые мы желаем забирать из кадровой системы, у нас это будут:
- Фамилия Имя Отчество
- Должность
- Организация
- Подразделение
- Почтовый индекс
- Тип занятости
На этом этапе полезно закрепить наш перечень полей и издать Приказ Именем Самого Большого Директора, обязывающий кадровиков и администраторов поддерживать эти данные в актуальном состоянии.
Механизм
Само собой ясно, что для того, чтобы связать персону из кадровой системы и персону из Active Directory, необходимо иметь некий идентификатор, связывающий эти две записи. Обычно таким идентификатором является табельный номер сотрудника, он присваивается при приеме на работу и более никогда не меняется, вместе с тем, я встречался с ситуациями, когда и табельный номер не статичен, в этом случае такой идентификатор следует выдумать.
Сведения о пользователе Active Directory не исчерпываются сведениями, которые можно увидеть в оснастке Active Directory Users and Computers (устоявшееся сокращение ADUC), причем очень далеко не исчерпываются. На самом деле объект пользователя имеет триллион атрибутов, и эти атрибуты даже могут быть добавлены администратором схемы. Например, есть такой атрибут, как carLicense, содержащий информацию о водительском удостоверении, или drink, характеризующий любимый напиток пользователя. В общем, Microsoft в этом смысле предусмотрела многое.
Использовать в моем примере я буду атрибуты employeeID для хранения идентификатора пользователя, и flags, для чего именно, сообщу чуть позже.
Также для заполнения полей пользователя мы будем использовать атрибуты:
- displayName и CN для хранения ФИО
- department для хранения подразделения
- company для хранения организации
- title для хранения должности
- employeeType для хранения типа сотрудника
- postalCode для хранения индекса
Педанты могут, конечно, дополнительно использовать givenName, initials и sn для хранения имени, инициалов и фамилии соответственно, но я думаю, что это уже тонкости.
Итак, наше приложение будет работать таким образом:
- Перечислять учетные записи, у которых заполнен employeeID
- Искать в кадровой системе для каждой учетной записи изменившиеся данные
- Обновлять данные в Active Directory
- Протоколировать изменения в файле
К делу
Первым делом следует проставить employeeID, который у нас представляет табельный номер, всем пользователям. Если пользователей мало, то сделать это проще всего через ADSI Edit, если их чуть больше, то можно прикрутить скрипт для прописывания, например вот так. А если пользователей много, расстановку идентификаторов необходимо делегировать, хочется приятный интерфейс и используются дополнительные фенечки, то можно создать вот такую дополнительную вкладку в ADUC:
впрочем, создание такой вкладки это само по себе тема для отдельного топика.
Второе тонкое место в том, что иногда случается так, что для некоторых людей менять следует только некоторые атрибуты. Есть, например, у нас сотрудник, назовем его Кудрымунбеков Садруддин Фатхулларович, но все его называют просто Сан Саныч. А есть генеральный директор, должность которого в кадрах записана не иначе, как Генеральный Директор Открытого Акционерного Общества Дальней Космической Связи «Рога И Копыта», которого в AD лучше бы просто оставить точно со связью, но точно без рогов и копыт. Таким образом, мы видим необходимость в закладывании в логику работы нашего приложения некоторых исключений, а хранить эти исключения мы будем там же, в Active Directory в атрибуте flags. Этот атрибут имеет величину в четыре байта, а значит, устанавливая тот или иной бит в то или иное значение, мы сможем при необходимости запомнить аж 32 исключения. Впрочем, использовать мы все равно будем только шесть.
Переходим к реализации на powershell:
Создадим тестовую среду, абсолютно произвольно присвоим имена учетным записям:
Теперь запускаем скрипт с параметрами. Разумеется, его можно зашедулить и выполнять по расписанию, только не забыть учетной записи, от имени которой выполняется задание, присвоить право входа в качестве пакетного задания:
Как видим, после выполнения, мы получили хорошие читаемые имена, отличные должности и великолепные наименования компаний:
Конечно, путем неглубокой модификации скрипта, мы можем заполнять пользователю все: от телефонов и адресов до пресловутых любимых напитков, был бы источник. А если скрипт запускать с определенной регулярностью, то мы добиваемся того, что все данные о пользователях будут актуальны.
upd Подправил маленькую ошибочку, перенес обнуление флажков во внутрь цикла
Объекты и классы
Объектная модель системы
Объектная модель описывает структуру объектов, составляющих систему, их атрибуты, операции, взаимосвязи с другими объектами. В объектной модели должны быть отражены те понятия и объекты реального мира, которые важны для разрабатываемой системы. В объектной модели отражается прежде всего прагматика разрабатываемой системы, что выражается в использовании терминологии прикладной области, связанной с использованием разрабатываемой системы.
По определению будем называть объектом понятие, абстракцию или любую вещь с четко очерченными границами, имеющую смысл в контексте рассматриваемой прикладной проблемы. Введение объектов преследует две цели:
- понимание прикладной задачи (проблемы);
- введение основы для реализации на компьютере.
Примеры объектов: форточка, Банк "Империал", Петр Сидоров, дело № 7461, сберкнижка и т.д.
Цель разработки объектной модели — описать объекты, составляющие в совокупности проектируемую систему, а также выявить и указать различные зависимости между объектами. Декомпозиция проблемы на объекты — творческий, плохо формализуемый процесс.
Все объекты могут быть отличены один от другого: пусть у нас есть два яблока, имеющие одинаковый цвет, форму, вес и вкус; все равно это два яблока (а не одно), в чем легко убедиться, съев одно из них (другое останется). Между объектами можно установить отношение тождества: объекты, удовлетворяющие этому отношению, одинаковы (тождественны), как вышеупомянутые яблоки. В случае с яблоками иногда говорят о двух экземплярах объекта яблоко. Мы будем считать здесь, что объект и экземпляр объекта — это одно и то же.
Два яблока из предыдущего примера принадлежат одному и тому же классу объектов (именно с этим связана их одинаковость). Цвет, форма, вес и вкус яблока — это его атрибуты: совокупность атрибутов и их значений (например, красное, овальное, стограммовое, кисло-сладкое) характеризует объект.
Все объекты одного и того же класса характеризуются одинаковыми наборами атрибутов. Однако объединение объектов в классы определяется не наборами атрибутов, а семантикой. Так, например, объекты конюшня и лошадь могут иметь одинаковые атрибуты: цена и возраст. При этом они могут относиться к одному классу, если рассматриваются в задаче просто как товар, либо к разным классам, что более естественно.
Рис. 2.1. Пример класса и объекта этого класса
Объединение объектов в классы позволяет ввести в задачу абстракцию и рассмотреть ее в более общей постановке. Класс имеет имя (например лошадь), которое относится ко всем объектам этого класса. Кроме того, в классе вводятся имена атрибутов, которые определены для объектов. В этом смысле описание класса аналогично описанию типа структуры (записи); при этом каждый объект имеет тот же смысл, что и экземпляр структуры (переменная или константа соответствующего типа). Пример класса и объекта этого класса приведен на рисунке 2.1.
Атрибут — это значение, характеризующее объект в его классе. Примеры атрибутов: категория, баланс, кредит (атрибуты объектов класса счет); имя, возраст, вес (атрибуты объектов класса человек) и т.д.
Среди атрибутов различаются постоянные атрибуты (константы) и переменные атрибуты. Постоянные атрибуты характеризуют объект в его классе (например, номер счета, категория, имя человека и т.п.). Текущие значения переменных атрибутов характеризуют текущее состояние объекта (например, баланс счета, возраст человека и т.п.); изменяя значения этих атрибутов, мы изменяем состояние объекта.
Атрибуты перечисляются во второй части прямоугольника, изображающего класс (см. рисунок 2.1). Иногда указывается тип атрибутов (ведь каждый атрибут — это некоторое значение) и начальное значение переменных атрибутов (совокупность начальных значений этих атрибутов задает начальное состояние объекта).
Следует отметить, что, говоря об объектах и их классах, мы не подразумеваем никакого объектно-ориентированного языка программирования. Это, в частности, выражается в том, что на данном этапе разработки программной системы следует рассматривать только такие атрибуты, которые имеют смысл в реальности (все атрибуты объектов класса счет — рисунок 2.1 — обладают этим свойством). Атрибуты связаны с особенностями общей реализации. Например, если известно, что будет использоваться база данных, в которой каждый объект имеет уникальный идентификатор, то включать этот идентификатор в число атрибутов объекта на данном этапе не следует. Дело в том, что, вводя такие атрибуты, мы ограничиваем возможности реализации системы. Так, вводя в качестве атрибута уникальный идентификатор объекта в базе данных, мы уже в самом начале проектирования отказываемся от использования СУБД, которые такой идентификатор не поддерживают.
Не нашли то, что искали? Воспользуйтесь поиском:
Лучшие изречения: Для студента самое главное не сдать экзамен, а вовремя вспомнить про него. 10074 — | 7514 — или читать все.