Динамічне управління призначеними для користувача моделями в alfresco

Невелика колекція набитих гуль по динамічному управління власними типами даних для чайників.

Альфресо розвивається настільки швидко, що документація по ній часто не встигає за змінами. Стосується це і такої важливої ​​сфери, як кастомизация - включаючи створення користувальницьких моделей даних і процесів, а також управління їх відображенням в різних інтерфейсах. Класичні введення в предмет від Jeff Potts "Working with Custom Content Types" і "Advanced Workflows". відповідні сторінки Wiki Creating_A_Custom_Model. а також замітки шановних колег на цьому сайті детально і зрозуміло описують процеси створення моделей і бізнес процесів. При цьому впроваджувати власні розробки передбачається шляхом розміщення файлів в папках extention і web-extention з подальшим перезапуском сервера. На жаль, процес рестарту системи досить тривалий, і такий шлях підходить скоріше для втілення вже готової і налагодженої моделі, але ніяк для процесу розробки. Разом з тим, версії Альфреско, починаючи з 3-й, для впровадження ваших напрацювань взагалі не вимагають перезавантажень, і підтримують динамічне управління призначеними для користувача типами даних. Реалізується це за допомогою завантажень відповідних файлів в папки розділу Company Home / Data Dictionary. а також за допомогою ряду консолей.

де Ідентифікатор прівязивется до деякого елементу даних. За замовчуванням з елементом автоматично пов'язується ідентифікатор, що утворюється з повного найменування елемента (починаючи з неймспейса), заміною двокрапки на підкреслення. Наприклад MyModel: NewType.MyModel: NewProperty.title зв'язується з ідентифікатором MyModel_NewType.MyModel_NewProperty.title. Задавши в файлі webclient.properties рядок MyModel_NewType.MyModel_NewProperty.title = Це наше нове властивість, ми поставимо відображення елемента за замовчуванням. Але якщо захочеться, наприклад, у формі при редагуванні обізвати елемент по іншому, то можна вказати у файлі web-client-config-custom.xml щось на зразок

Тепер про workflow. Завантаження опису процесів проводиться в папку Workflow definition, процес впроваджується після позначки в метаданих прапорця Deployed. При цьому процес відразу стає доступний в списку вибору процесів, (поки у вигляді mywf: myproc). Для локалізації / екстерналізації потрібно файли myworkflow.properties і myworkflow_ru_RU.properties завантажити в папку Messages. Знову ж таки, для кіррілізаціі достоточно задати рядки в UTF-8, перекодування не потрібно. Потім в консолі управління репозитарием перенавантажуємо файли властивостей командою reload message myworkflow. При зміні опису процесу потрібно спочатку видалити всі завдання, створені ним.

Ось в принципі і все про динамічному управлінні совбственнимі типами. При редагуванні моделей намагайтеся де тільки можливо, користуватися вбудованими засобами Альфреско, а не просто видаляти і завантажувати заново файл. Пов'язано це з тим, що при редагуванні файлу його UUID не змінюється, на відміну від завантаження нового, коли створюється новий вузол з новим UUID. У деяких випадках це викликає помилки із зазначенням на неіснуючі вузли (наприклад в списку процесів) і вимагає перезавантаження сервера для виправлення.

На жаль, мені не вистачило часу розібратися з можливістю динамічного управління зовнішнім виглядом в Share (файл share-custom-config.xml). І окремої розмови заслуговує консоль управління бізнес-процесами, що дає можливість динамічної налагодження процесів.

Для динамічного оновлення в Share досить освіжити файл share-custom-config.xml (повинен лежати в tomcat / shared / classes / alfresco / web-extension). зайти за посиланням / Share / page / index і натиснути кнопку "Refresh Web Scripts".

У мене є модель даних



cm: content


Reg nomer
d: text
false

У файлі myLabels.properties я написала ось так

sc_myModel.property .sc_regNum.title = Реєстраційний номер

завантажила в папку Messages

Але чомусь при відображенні значення з myLabels.properties не береться, хоча він файл від точно бачить, так як все labels для workflow описані в ньому, підставляються.

потрібна секція , всередині которй буде щось типу