// Setup
//
'dependencies' => array(
'itop-change-mgmt-itil/2.2.0',
),
Прописал.
Toolkit дал добро во вкладке Data Model Consistency
Ok, no problem detected.
Теперь обновляйте и идите смотреть Стандартное Изменение.
https://wiki.openitop.org/doku.php?id=2_2_0:customization:start#using_the_toolkit
А какие должны быть?
Вкладки убираются переопределением presentation.
Переходы переопределяются в livecycle. Посмотрите как там сделаны переходы в transations и сделайте свой переход Назначен → Реализован в обход Запланирован аналогично переходу из Реализован → Закрыт.
Что-то я не понял:(
вот весь код моего модуля
<?xml version="1.0" encoding="UTF-8"?>
<itop_design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<constants>
</constants>
<classes>
<class id="RoutineChange">
<parent>Change</parent>
<properties>
<category>bizmodel,searchable,changemgmt</category>
<abstract>false</abstract>
<key_type>autoincrement</key_type>
<db_table>change_routine</db_table>
<db_key_field>id</db_key_field>
<db_final_class_field/>
<naming>
<attributes>
<attribute id="ref"/>
</attributes>
</naming>
<display_template/>
<icon>images/change.png</icon>
<reconciliation>
<attributes>
<attribute id="ref"/>
</attributes>
</reconciliation>
<order>
<columns>
<column id="ref" ascending="false"/>
</columns>
</order>
</properties>
<fields/>
<lifecycle>
<attribute>status</attribute>
<stimuli>
<stimulus id="ev_assign" xsi:type="StimulusUserAction"/>
<stimulus id="ev_reopen" xsi:type="StimulusUserAction"/>
<stimulus id="ev_plan" xsi:type="StimulusUserAction"/>
<stimulus id="ev_approve" xsi:type="StimulusUserAction"/>
<stimulus id="ev_replan" xsi:type="StimulusUserAction"/>
<stimulus id="ev_notapprove" xsi:type="StimulusUserAction"/>
<stimulus id="ev_implement" xsi:type="StimulusUserAction"/>
<stimulus id="ev_monitor" xsi:type="StimulusUserAction"/>
<stimulus id="ev_finish" xsi:type="StimulusUserAction"/>
</stimuli>
<states>
<state id="new">
<flags>
<attribute id="ref">
<read_only/>
</attribute>
<attribute id="agent_id">
<hidden/>
</attribute>
<attribute id="team_id">
<hidden/>
</attribute>
<attribute id="title">
<mandatory/>
</attribute>
<attribute id="start_date">
<hidden/>
</attribute>
<attribute id="end_date">
<hidden/>
</attribute>
<attribute id="last_update">
<read_only/>
</attribute>
<attribute id="close_date">
<hidden/>
</attribute>
<attribute id="reason">
<hidden/>
</attribute>
<attribute id="requestor_id">
<mandatory/>
</attribute>
<attribute id="creation_date">
<read_only/>
</attribute>
<attribute id="impact">
<hidden/>
</attribute>
<attribute id="supervisor_group_id">
<hidden/>
</attribute>
<attribute id="supervisor_id">
<hidden/>
</attribute>
<attribute id="manager_group_id">
<hidden/>
</attribute>
<attribute id="manager_id">
<hidden/>
</attribute>
<attribute id="outage">
<hidden/>
</attribute>
<attribute id="fallback">
<hidden/>
</attribute>
</flags>
<transitions>
<transition id="ev_assign">
<target>assigned</target>
<actions/>
</transition>
</transitions>
</state>
<state id="validated">
<flags>
<attribute id="ref">
<read_only/>
</attribute>
<attribute id="agent_id">
<hidden/>
</attribute>
<attribute id="title">
<mandatory/>
</attribute>
<attribute id="description">
<read_only/>
</attribute>
<attribute id="start_date">
<hidden/>
</attribute>
<attribute id="end_date">
<hidden/>
</attribute>
<attribute id="last_update">
<read_only/>
</attribute>
<attribute id="close_date">
<hidden/>
</attribute>
<attribute id="reason">
<read_only/>
</attribute>
<attribute id="requestor_id">
<read_only/>
</attribute>
<attribute id="creation_date">
<read_only/>
</attribute>
<attribute id="impact">
<hidden/>
</attribute>
<attribute id="team_id">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="supervisor_group_id">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="supervisor_id">
<hidden/>
</attribute>
<attribute id="manager_group_id">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="manager_id">
<hidden/>
</attribute>
<attribute id="outage">
<hidden/>
</attribute>
<attribute id="fallback">
<hidden/>
</attribute>
</flags>
<transitions/>
</state>
<state id="rejected">
<flags>
<attribute id="ref">
<read_only/>
</attribute>
<attribute id="agent_id">
<hidden/>
</attribute>
<attribute id="title">
<mandatory/>
</attribute>
<attribute id="start_date">
<hidden/>
</attribute>
<attribute id="end_date">
<hidden/>
</attribute>
<attribute id="last_update">
<read_only/>
</attribute>
<attribute id="close_date">
<hidden/>
</attribute>
<attribute id="reason">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="requestor_id">
<mandatory/>
</attribute>
<attribute id="creation_date">
<read_only/>
</attribute>
<attribute id="impact">
<hidden/>
</attribute>
<attribute id="supervisor_group_id">
<hidden/>
</attribute>
<attribute id="supervisor_id">
<hidden/>
</attribute>
<attribute id="manager_group_id">
<hidden/>
</attribute>
<attribute id="manager_id">
<hidden/>
</attribute>
<attribute id="outage">
<hidden/>
</attribute>
<attribute id="fallback">
<hidden/>
</attribute>
</flags>
<transitions/>
</state>
<state id="assigned">
<inherit_flags_from>new</inherit_flags_from>
<flags>
<attribute id="description">
<read_only/>
</attribute>
<attribute id="team_id">
<must_prompt/>
<mandatory/>
</attribute>
<attribute id="agent_id">
<must_prompt/>
<mandatory/>
</attribute>
<attribute id="reason">
<read_only/>
</attribute>
<attribute id="requestor_id">
<read_only/>
</attribute>
<attribute id="supervisor_group_id">
<mandatory/>
</attribute>
<attribute id="supervisor_id">
<must_prompt/>
<mandatory/>
</attribute>
<attribute id="manager_group_id">
<mandatory/>
</attribute>
<attribute id="manager_id">
<must_prompt/>
<mandatory/>
</attribute>
</flags>
<transitions>
<transition id="ev_plan">
<target>plannedscheduled</target>
<actions/>
</transition>
</transitions>
</state>
<state id="plannedscheduled">
<inherit_flags_from>assigned</inherit_flags_from>
<flags>
<attribute id="org_id">
<read_only/>
</attribute>
<attribute id="team_id">
<mandatory/>
</attribute>
<attribute id="agent_id">
<mandatory/>
</attribute>
<attribute id="start_date">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="end_date">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="impact">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="supervisor_id">
<mandatory/>
</attribute>
<attribute id="manager_id">
<mandatory/>
</attribute>
<attribute id="outage">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="fallback">
<mandatory/>
<must_prompt/>
</attribute>
</flags>
<transitions>
<transition id="ev_implement">
<target>implemented</target>
<actions/>
</transition>
</transitions>
</state>
<state id="approved">
<flags>
<attribute id="ref">
<read_only/>
</attribute>
<attribute id="org_id">
<read_only/>
</attribute>
<attribute id="team_id">
<mandatory/>
</attribute>
<attribute id="agent_id">
<mandatory/>
</attribute>
<attribute id="title">
<mandatory/>
</attribute>
<attribute id="description">
<read_only/>
</attribute>
<attribute id="start_date">
<mandatory/>
</attribute>
<attribute id="end_date">
<mandatory/>
</attribute>
<attribute id="last_update">
<read_only/>
</attribute>
<attribute id="close_date">
<hidden/>
</attribute>
<attribute id="reason">
<read_only/>
</attribute>
<attribute id="requestor_id">
<read_only/>
</attribute>
<attribute id="creation_date">
<read_only/>
</attribute>
<attribute id="impact">
<read_only/>
</attribute>
<attribute id="supervisor_group_id">
<read_only/>
</attribute>
<attribute id="supervisor_id">
<read_only/>
</attribute>
<attribute id="manager_group_id">
<read_only/>
</attribute>
<attribute id="manager_id">
<read_only/>
</attribute>
<attribute id="outage">
<read_only/>
</attribute>
<attribute id="fallback">
<mandatory/>
</attribute>
</flags>
<transitions/>
</state>
<state id="notapproved">
<flags>
<attribute id="ref">
<read_only/>
</attribute>
<attribute id="org_id">
<read_only/>
</attribute>
<attribute id="team_id">
<mandatory/>
</attribute>
<attribute id="agent_id">
<mandatory/>
</attribute>
<attribute id="title">
<mandatory/>
</attribute>
<attribute id="description">
<read_only/>
</attribute>
<attribute id="start_date">
<mandatory/>
</attribute>
<attribute id="end_date">
<mandatory/>
</attribute>
<attribute id="last_update">
<read_only/>
</attribute>
<attribute id="close_date">
<hidden/>
</attribute>
<attribute id="reason">
<mandatory/>
<must_prompt/>
</attribute>
<attribute id="requestor_id">
<read_only/>
</attribute>
<attribute id="creation_date">
<read_only/>
</attribute>
<attribute id="impact">
<read_only/>
</attribute>
<attribute id="supervisor_group_id">
<read_only/>
</attribute>
<attribute id="supervisor_id">
<read_only/>
</attribute>
<attribute id="manager_group_id">
<read_only/>
</attribute>
<attribute id="manager_id">
<read_only/>
</attribute>
<attribute id="outage">
<mandatory/>
</attribute>
<attribute id="fallback">
<mandatory/>
</attribute>
</flags>
<transitions/>
</state>
<state id="implemented">
<inherit_flags_from>plannedscheduled</inherit_flags_from>
<flags>
<attribute id="title">
<read_only/>
</attribute>
<attribute id="start_date">
<read_only/>
</attribute>
<attribute id="impact">
<read_only/>
</attribute>
<attribute id="supervisor_group_id">
<read_only/>
</attribute>
<attribute id="supervisor_id">
<read_only/>
</attribute>
<attribute id="manager_group_id">
<read_only/>
</attribute>
<attribute id="manager_id">
<read_only/>
</attribute>
<attribute id="outage">
<read_only/>
</attribute>
</flags>
<transitions>
<transition id="ev_monitor">
<target>monitored</target>
<actions/>
</transition>
<transition id="ev_finish">
<target>closed</target>
<actions>
<action>
<verb>SetCurrentDate</verb>
<params>
<param xsi:type="attcode">close_date</param>
</params>
</action>
</actions>
</transition>
</transitions>
</state>
<state id="monitored">
<inherit_flags_from>implemented</inherit_flags_from>
<flags>
<attribute id="caller_id">
<read_only/>
</attribute>
<attribute id="parent_id">
<read_only/>
</attribute>
<attribute id="team_id">
<read_only/>
<read_only/>
</attribute>
<attribute id="agent_id">
<read_only/>
</attribute>
<attribute id="end_date">
<read_only/>
</attribute>
<attribute id="fallback">
<read_only/>
</attribute>
</flags>
<transitions>
<transition id="ev_finish">
<target>closed</target>
<actions>
<action>
<verb>SetCurrentDate</verb>
<params>
<param xsi:type="attcode">close_date</param>
</params>
</action>
</actions>
</transition>
</transitions>
</state>
<state id="closed">
<inherit_flags_from>implemented</inherit_flags_from>
<flags>
<attribute id="caller_id">
<read_only/>
</attribute>
<attribute id="private_log">
<read_only/>
</attribute>
<attribute id="parent_id">
<read_only/>
</attribute>
<attribute id="team_id">
<read_only/>
<read_only/>
</attribute>
<attribute id="agent_id">
<read_only/>
</attribute>
<attribute id="end_date">
<read_only/>
</attribute>
<attribute id="close_date">
<read_only/>
</attribute>
<attribute id="fallback">
<read_only/>
</attribute>
</flags>
<transitions/>
</state>
</states>
</lifecycle>
<methods/>
<presentation _delta="redefine">
<details>
<items>
<item id="functionalcis_list">
<rank>10</rank>
</item>
<item id="contacts_list">
<rank>20</rank>
</item>
<item id="workorders_list">
<rank>30</rank>
</item>
<item id="related_request_list">
<rank>40</rank>
</item>
<item id="related_incident_list">
<rank>50</rank>
</item>
<item id="related_problems_list">
<rank>60</rank>
</item>
<item id="child_changes_list">
<rank>70</rank>
</item>
<item id="col:col1">
<rank>80</rank>
<items>
<item id="fieldset:Ticket:baseinfo">
<rank>10</rank>
<items>
<item id="ref">
<rank>10</rank>
</item>
<item id="org_id">
<rank>20</rank>
</item>
<item id="status">
<rank>30</rank>
</item>
<item id="title">
<rank>40</rank>
</item>
<item id="description">
<rank>50</rank>
</item>
</items>
</item>
<item id="fieldset:Ticket:contact">
<rank>20</rank>
<items>
<item id="caller_id">
<rank>10</rank>
</item>
<item id="team_id">
<rank>20</rank>
</item>
<item id="agent_id">
<rank>30</rank>
</item>
<item id="supervisor_group_id">
<rank>40</rank>
</item>
<item id="supervisor_id">
<rank>50</rank>
</item>
<item id="manager_group_id">
<rank>60</rank>
</item>
<item id="manager_id">
<rank>70</rank>
</item>
</items>
</item>
</items>
</item>
<item id="col:col2">
<rank>90</rank>
<items>
<item id="fieldset:Ticket:resolution">
<rank>10</rank>
<items>
<item id="reason">
<rank>10</rank>
</item>
<item id="impact">
<rank>20</rank>
</item>
<item id="outage">
<rank>30</rank>
</item>
<item id="fallback">
<rank>40</rank>
</item>
</items>
</item>
<item id="fieldset:Ticket:relation">
<rank>20</rank>
<items>
<item id="parent_id">
<rank>10</rank>
</item>
</items>
</item>
</items>
</item>
<item id="col:col3">
<rank>100</rank>
<items>
<item id="fieldset:Ticket:date">
<rank>10</rank>
<items>
<item id="creation_date">
<rank>10</rank>
</item>
<item id="start_date">
<rank>20</rank>
</item>
<item id="end_date">
<rank>30</rank>
</item>
<item id="last_update">
<rank>40</rank>
</item>
<item id="close_date">
<rank>50</rank>
</item>
</items>
</item>
</items>
</item>
</items>
</details>
<search>
<items>
<item id="ref">
<rank>10</rank>
</item>
<item id="org_id">
<rank>20</rank>
</item>
<item id="status">
<rank>30</rank>
</item>
<item id="title">
<rank>40</rank>
</item>
<item id="description">
<rank>50</rank>
</item>
<item id="caller_id">
<rank>60</rank>
</item>
<item id="team_id">
<rank>70</rank>
</item>
<item id="agent_id">
<rank>80</rank>
</item>
<item id="supervisor_group_id">
<rank>90</rank>
</item>
<item id="supervisor_id">
<rank>100</rank>
</item>
<item id="manager_group_id">
<rank>110</rank>
</item>
<item id="manager_id">
<rank>120</rank>
</item>
<item id="reason">
<rank>130</rank>
</item>
<item id="impact">
<rank>140</rank>
</item>
<item id="outage">
<rank>150</rank>
</item>
<item id="parent_id">
<rank>160</rank>
</item>
<item id="creation_date">
<rank>170</rank>
</item>
<item id="start_date">
<rank>180</rank>
</item>
<item id="end_date">
<rank>190</rank>
</item>
<item id="last_update">
<rank>200</rank>
</item>
<item id="close_date">
<rank>210</rank>
</item>
</items>
</search>
<list>
<items>
<item id="finalclass">
<rank>10</rank>
</item>
<item id="title">
<rank>20</rank>
</item>
<item id="org_id">
<rank>30</rank>
</item>
<item id="start_date">
<rank>40</rank>
</item>
<item id="end_date">
<rank>50</rank>
</item>
<item id="status">
<rank>60</rank>
</item>
<item id="agent_id">
<rank>70</rank>
</item>
</items>
</list>
</presentation>
</class>
</classes>
<menus>
</menus>
<user_rights>
<groups>
</groups>
<profiles>
</profiles>
</user_rights>
</itop_design>
Замечательно.
Что в этом коде вы изменили?
Пока ничего. я спрашивал как правильно это сделать.
предполагаю так:
сократить число статусов в блоке stimuli
<stimuli>
<stimulus id="ev_assign" xsi:type="StimulusUserAction"/>
<stimulus id="ev_implement" xsi:type="StimulusUserAction"/>
<stimulus id="ev_finish" xsi:type="StimulusUserAction"/>
</stimuli>
Удалить лишние блоки state, а именно:
<state id="validated">
<state id="rejected">
<state id="plannedscheduled">
<state id="approved">
<state id="notapproved">
<state id="monitored">
Правильно будет удалить лишние transitions (переходы). Нет перехода — нет статуса и стимула.
<state id="assigned">
<transitions _delta="redefine">
<transition id="ev_implement">
<target>implemented</target>
<actions/>
</transition>
</transitions>
</state>
Выше переход из Назначен в Реализован напрямую.
Получилось @vladimir, работает!
Переход выполняется, как и требовалось
назначен>реализация>закрыт
спасибо.
а для того чтобы при назначении оставить выбор только команды исполнителя(агент), достаточно удалить атрибуты в блоке state id=“assigned” ?
везде закомментрировал атрибуты
<!-- <attribute id="supervisor_group_id">
<read_only/>
</attribute>
<attribute id="supervisor_id">
<read_only/>
</attribute>
<attribute id="manager_group_id">
<read_only/>
</attribute>
<attribute id="manager_id">
<read_only/>
</attribute> -->
но не помогло
<attribute id="supervisor_id">
<hidden/>
</attribute>
https://wiki.openitop.org/doku.php?id=2_2_0:customization:xml_reference#xml_general_structure
Смотрите lifecycle и ниже.
@vladimir во всех атрибутах выставил значения для: supervisor_group_id, supervisor_id, manager_group_id, manager_id значение hidden, но все равно при назначении тикета, требует указывать эти роли.
Что не так?
Как скрыть item’ы в presentation?
@igsao10, значит что-то забыли, чудес не бывает. delta=“redefine”? Обновление в toolkit?
Покажите содержимое lifecycle и содержимое вкладки Модель данных >> Тикет (Ticket) >> Изменение (Change) >> RoutineChange >> Жизненный цикл.
Сделать redefine всего presentation или delete на отдельных item.
Убрать роли получилось. Я не сделал redefine для states.
а вот скрыть вкладки не вышло.
<presentation _delta="redefine">
<details>
<items>
<item id="functionalcis_list">
<rank>10</rank>
</item>
<item id="contacts_list">
<rank>20</rank>
</item>
<item id="workorders_list" _delta="delete">
<rank>30</rank>
</item>
<item id="related_request_list" _delta="delete">
<rank>40</rank>
</item>
<item id="related_incident_list" _delta="delete">
<rank>50</rank>
</item>
<item id="related_problems_list" _delta="delete">
<rank>60</rank>
</item>
<item id="child_changes_list" _delta="delete">
<rank>70</rank>
</item>
<item id="col:col1">
<rank>80</rank>
<items>
Либо redefine всего представления, либо delete конкретных item. Если делаете переопределение вышестоящего узла (presentetion), то ненужные нижестоящие узлы просто не указываете.
<presentation _delta="redefine">
<details>
<items>
<item id="functionalcis_list">
<rank>10</rank>
</item>
<item id="contacts_list">
<rank>20</rank>
</item>
<item id="col:col1">
<rank>80</rank>
<items>
```
Понял, спасибо.
@vladimir я тут строку текстовую попытался добавить в данный тикет:
<fields>
<field id="jira_id" xsi:type="AttributeText" _delta="define">
<sql>jira_id</sql>
<default_value>jira_id</default_value>
<is_null_allowed>true</is_null_allowed>
<width>100px</width>
<height>30px</height>
</field>
</fields>
видимость вставил в зависимость
<item id="fieldset:Ticket:relation">
<rank>20</rank>
<items>
<item id="parent_id">
<rank>10</rank>
</item>
<item id="jira_id">
<rank>20</rank>
</item>
</items>
</item>
toolkit не сругнулся и пропустил на компиляцию. после компиляции открываю тикет, а там вываливается “фатальная ошибка”
mysql_error = Unknown column 'RoutineChange_change_routine.jira_id' in 'field list', mysql_errno = 1054.
Что я не правильно сделал?
Скорее всего выбрали не ту кнопку на второй вкладке toolkit. Базу обновляли?