http://fv32.net/knowledge_base/library.htm#topics/izmen_struct_bd_astlu.htm

 

 

Изменение структуры БД АСТЛУ

 

 

  Таблица REPORT -

список отчетов, выполняемых в системе качества и разработанных в конструкторе отчетов

 

№ п.п.

Имя поля

Тип поля

Описание

1

REPORT_ID

NUMBER(10)

Идентификатор отчета

2

REPORT_NAME

VARCHAR2(30)

Наименование отчета

3

REPARENT_ID

NUMBER(10)

Идентификатор раздела

4

REP_KARTOTEKA

CHAR(1)

Признак отчета – журнал('F'), картотека('T')

5

FORM_ID

NUMBER(10)

Идентификатор формы отчета REPORT_FORM(FORM_ID)

6

REPORT_ACTION

VARCHAR2(50)

Доступ к отчету по группам защиты отчетов или по названию для технологических отчетов

7

TASK_ID

NUMBER(10)

Идентификатор приложения в системе авторизации

8

IS_FOLDER

CHAR(1)

Признак, является запись папкой или отчетом

 

 

Пакет 0.36.1.0  (06.08.2009) удаление поля REPORT_PARAMS.

   ALTER TABLE report  DROP COLUMN report_params;

 

Пакет 0.40.0.0  (15.04.2010) - добавление полей

ALTER TABLE Report ADD task_id NUMBER(10);

ALTER TABLE Report ADD is_folder CHAR(1) DEFAULT 'F' NOT NULL;

ALTER TABLE Report ADD CONSTRAINT CH_REPORT_FOLDER CHECK (IS_FOLDER IN ('T','F'));

 

 

Таблица REPORT_FORM -

список  форм для формирования отчетов

№  п.п.

Имя поля

Тип поля

Описание

1

FORM_ID

NUMBER(10)

Идентификатор формы отчета

2

FORM_NAME

VARCHAR2(30)

Наименование формы отчета

3

FORM_BLOB

BLOB

Форма отчета

4

IS_USER

CHAR(1)

Признак : технологическая форма 'F', пользовательская 'T'

5

TASK_ID

NUMBER(10)

Признак, является запись папкой или отчетом

 

 

Пакет 0.40.0.0  (15.04.2010) - добавление поля

ALTER TABLE Report_form ADD task_id NUMBER(10);

 

 

Таблица REPORT_PARAM -

набор идентификаторов параметров для  отчета

 

№ п.п.

Имя поля

Тип поля

Описание

1

REPORT_ID

NUMBER(10)

Идентификатор отчета REPORT(REPORT_ID)

2

PARAM_ID

NUMBER(10)

Идентификатор параметра REPORT_PARAMS(PARAM_ID)

 

Пакет 0.36.1.0  (06.08.2009) создание таблицы REPORT_PARAM.

 

create table REPORT_PARAM

(

  REPORT_ID NUMBER(10) not null,

  PARAM_ID  NUMBER(10) not null

);

 

alter table REPORT_PARAM

  add constraint FK_REPORT_PARAM_PARAM foreign key (PARAM_ID)

  references REPORT_PARAMS (PARAM_ID);

alter table REPORT_PARAM

  add constraint FK_REPORT_PARAM_REPORT foreign key (REPORT_ID)

  references REPORT (REPORT_ID);

 

CREATE INDEX FK_REPORT_PARAM_REPORT ON REPORT_PARAM (REPORT_ID)

  TABLESPACE INDX;

CREATE INDEX FK_REPORT_PARAM_PARAM ON REPORT_PARAM (PARAM_ID)

  TABLESPACE INDX;

 

comment on table REPORT_PARAM is 'Список параметров для отчета';

COMMENT ON COLUMN REPORT_PARAM.REPORT_ID IS ' Идентификатор отчета';

COMMENT ON COLUMN REPORT_PARAM.PARAM_ID  IS ' Идентификатор параметра';

Пакет0.38.0.0  (29.10.2009) изменение таблицыREPORT_PARAM

ALTER TABLE REPORT_PARAM

  ADD CONSTRAINT UQ_REPORT_PARAM UNIQUE (report_id,param_id)

  USING INDEX TABLESPACE INDX;

 

 

 

Таблица REPORT_PARAMS -

список параметров, которые используются при формировании отчетов

 

№  п.п.

Имя поля

Тип поля

Описание

1

PARAM_ID

NUMBER(10)

Идентификатор параметра

 

2

PARAM_NAME

VARCHAR2(30)

Наименование параметра

 

3

PARAM_TEXT

VARCHAR2(100)

Название параметра

 

4

PARAM_COUNT

CLOB

Текст запроса для расчета количества значений

 

5

PARAM_KART

CLOB

Текст запроса для вывода списка данных по параметру

 

6

FORM_ID

NUMBER(10)

Идентификатор формы отчета для списка данных по параметру REPORT_FORM(FORM_ID)

 

7

IS_USER

CHAR(1)

Признак : технологический параметр 'F', пользовательский 'T'

             

 

Таблица REPORT_TASKS -

список регулярных заданий формирования отчетов

 

№  п.п.

Имя поля

Тип поля

Описание

1

TASK_ID

NUMBER(10)

Идентификатор задания

 

2

TASK_NAME

VARCHAR2(40)

Наименование задания

 

3

REPORT_METHOD

 NUMBER(10)

Способ формирования отчетов в задании: 0-Общий,1-По датам,2-По регионам,3-По станциям,4-По участкам,5-Городской/Сельский

 

4

TASK_PERIOD

 NUMBER(10)

Период формирования отчетов в задании: 0-За текущую дату,1-За прошедшую дату,2-За текущую неделю,3-За прошедшую неделю,4-За текущий месяц,5-За прошедший месяц,6-За текущий квартал,7-За прошедший квартал,8-За текущий год,9-За прошедший год,10-С указанием периода

 

5

USER_ID

 NUMBER(10)

Пользователь, с параметрами которого формируются отчеты в задании

USERS(UID)

 

6

TASK_START

DATE

Дата начала периода отчета для TASK_PERIOD=10

 

7

TASK_END

DATE

Дата конца периода отчета для TASK_PERIOD=10

 

8

CORR_DATE

DATE

Дата последнего изменения задания

             

Пакет 0.36.1.0  (06.08.2009) создание таблицы REPORT_TASKS.

 

-- Create table

create table REPORT_TASKS

(

  TASK_ID       NUMBER(10) not null,

  TASK_NAME     VARCHAR2(40),

  REPORT_METHOD NUMBER(10) default 0 not null,

  TASK_PERIOD   NUMBER(10),

  USER_ID       NUMBER(10) not null,

  TASK_START    DATE,

  TASK_END      DATE,

  CORR_DATE     DATE default SYSDATE not null

);

 

ALTER TABLE REPORT_TASKS

  ADD CONSTRAINT PK_REPORT_TASKS PRIMARY KEY (TASK_ID)

  USING INDEX TABLESPACE INDX;

 

ALTER TABLE REPORT_TASKS

  ADD CONSTRAINT FK_REPORT_TASKS_USERS FOREIGN KEY (USER_ID)

  REFERENCES USERS ("UID");

 

CREATE INDEX FK_REPORT_TASKS_USERS ON REPORT_TASKS (USER_ID)

  TABLESPACE INDX;

 

 

ALTER TABLE REPORT_TASKS

  ADD CONSTRAINT CH_REPORT_METHOD  CHECK (REPORT_METHOD IN(0,1,2,3,4,5));

ALTER TABLE REPORT_TASKS

  ADD CONSTRAINT CH_REPORT_PERIOD CHECK (TASK_PERIOD IN(0,1,2,3,4,5,6,7,8,9,10));

 

comment on table REPORT_TASKS is 'Регулярные задания ';

COMMENT ON COLUMN REPORT_TASKS.TASK_ID IS ' Идентификатор задания';

COMMENT ON COLUMN REPORT_TASKS.TASK_NAME  IS ' Наименование задания';

COMMENT ON COLUMN REPORT_TASKS.REPORT_METHOD  IS 'Способ формирования отчетов в задании: 0-Общий,1-По датам,2-По регионам,3-По станциям,4-По участкам,5-Городской/Сельский';

COMMENT ON COLUMN REPORT_TASKS.TASK_PERIOD  IS ' Период формирования отчетов в задании: 0-За текущую дату,1-За прошедшую дату,2-За текущую неделю,3-За прошедшую неделю,4-За текущий месяц,5-За прошедший месяц,6-За текущий квартал,7-За прошедший квартал,8-За текущий год,9-За прошедший год,10-С указанием периода';

COMMENT ON COLUMN REPORT_TASKS.USER_ID  IS ' Пользователь с параметрами, которого формируются отчеты в задании';

COMMENT ONCOLUMN REPORT_TASKS.TASK_START  IS ' Дата начала периода отчета дляTASK_PERIOD=10 ';

COMMENT ONCOLUMN REPORT_TASKS.TASK_END  IS ' Дата конца периода отчета дляTASK_PERIOD=10';

COMMENT ON COLUMN REPORT_TASKS.CORR_DATE  IS ' Дата последнего изменения задания';

 

CREATE SEQUENCE GENREPORTTASK MINVALUE 1 MAXVALUE 2147483647 START WITH 1 INCREMENT BY 1 CACHE 20;

 

CREATE OR REPLACE TRIGGER TR_REPORTTASK_BI

  BEFORE INSERT ON REPORT_TASKS

  FOR EACH ROW

BEGIN

  IF (:new.task_id IS NULL) THEN

    SELECT GENREPORTTASK.NEXTVAL INTO :new.task_id FROM Dual;

  END IF;

END;

/

 

CREATE OR REPLACE TRIGGER TR_REPORT_TASKS_BU

  BEFORE UPDATE ON REPORT_TASKS

  FOR EACH ROW

BEGIN

  :new.corr_date := SYSDATE;

END;

/

 

Таблица REPORT_TASKS_FORM -

Результаты выполнения задания формирования отчетов

 

 

№  п.п.

Имя поля

Тип поля

Описание

1

TASK_ID

NUMBER(10)

Идентификатор задания REPORT_TASKS(TASK_ID)

 

2

REPORT_ID

NUMBER(10)

Идентификатор отчета REPORT(REPORT_ID)

 

3

REPORT_START

DATE

Начало периода формирования отчета

 

4

REPORT_END

DATE

Конец периода формирования отчета

 

5

CORR_DATE

DATE

Дата записи отчета

 

6

REPORT_FORM

BLOB

Форма выполненного отчета

 

7

REPORT_FORMHTML

BLOB

Форма выполненного отчета в формате HTML

             

 

Пакет 0.36.1.0  (06.08.2009) создание таблицы REPORT_TASKS_FORM.

create table REPORT_TASKS_FORM

(

  TASK_ID      NUMBER(10) not null,

  REPORT_ID    NUMBER(10) not null,

  REPORT_START DATE,

  REPORT_END   DATE,

  CORR_DATE    DATE default SYSDATE not null,

  REPORT_FORM  BLOB

);

 

ALTER TABLE REPORT_TASKS_FORM

  ADD CONSTRAINT FK_REPORTTASKFORM_TASK FOREIGN KEY (TASK_ID)

  REFERENCES REPORT_TASKS (TASK_ID) ON DELETE CASCADE;

 

ALTER TABLE REPORT_TASKS_FORM

  ADD CONSTRAINT FK_REPORTTASKFORM_REPORT FOREIGN KEY (REPORT_ID)

  REFERENCES REPORT (REPORT_ID) ON DELETE CASCADE;

 

CREATE INDEX FK_REPORTTASKFORM_TASK ON REPORT_TASKS_FORM (TASK_ID)

  TABLESPACE INDX;

CREATE INDEX FK_REPORTTASKFORM_REPORT ON REPORT_TASKS_FORM (REPORT_ID)

  TABLESPACE INDX;

 

 

comment on table REPORT_TASKS is 'Результаты выполнения задания ';

COMMENT ON COLUMN REPORT_TASKS_FORM.TASK_ID IS ' Идентификатор задания';

COMMENT ON COLUMN REPORT_TASKS_FORM.REPORT_ID IS ' Идентификатор отчета';

COMMENT ON COLUMN REPORT_TASKS_FORM.REPORT_START IS ' Начало периода формирования отчета';

COMMENT ON COLUMN REPORT_TASKS_FORM.REPORT_END IS ' Конец периода формирования отчета';

COMMENT ON COLUMN REPORT_TASKS_FORM.CORR_DATE IS ' Дата записи отчета';

COMMENT ON COLUMN REPORT_TASKS_FORM.REPORT_FORM IS ' Форма отчета';

 

CREATE OR REPLACE TRIGGER TR_REPORT_TASKS_FORM_BU

  BEFORE UPDATE ON REPORT_TASKS_FORM

  FOR EACH ROW

BEGIN

  :new.corr_date := SYSDATE;

END;

/

Пакет 0.38.0.0  (29.10.2009) изменение таблицы REPORT_TASKS_FORM.

ALTER TABLE  REPORT_TASKS_FORM ADD ( REPORT_FORMHTML BLOB);

COMMENT ON COLUMN REPORT_TASKS_FORM.REPORT_FORMHTML IS 'Форма отчета в форматеHTML';

 

Таблица REPORT_TASKS_PACKET -

Пакет регулярных заданий формирования отчетов

 

№ п.п.

Имя поля

Тип поля

Описание

1

PACK_ID

NUMBER(10)

Идентификатор пакета

 

2

PACK_NAME

 VARCHAR2(40)

Наименование пакета

 

3

CORR_DATE

DATE

Дата последнего изменения записи

             

 

Пакет 0.36.1.0  (06.08.2009) создание таблицы REPORT_TASKS_PACKET.

 

create table REPORT_TASKS_PACKET

(

  PACK_ID   NUMBER(10) not null,

  PACK_NAME VARCHAR2(40),

  CORR_DATE DATE default SYSDATE not null

);

 

ALTER TABLE REPORT_TASKS_PACKET

  ADD CONSTRAINT PK_REPORT_TASKS_PACKET PRIMARY KEY (PACK_ID)

  USING INDEX TABLESPACE INDX;

 

comment on table REPORT_TASKS_PACKET is 'Пакет для регулярных заданий';

COMMENT ON COLUMN REPORT_TASKS_PACKET.PACK_ID IS ' Идентификатор пакета';

COMMENT ON COLUMN REPORT_TASKS_PACKET.PACK_NAME IS ' Наименование пакета';

COMMENT ON COLUMN REPORT_TASKS_PACKET.CORR_DATE IS ' Дата последнего изменения записи';

 

CREATE SEQUENCE GENTASKSPACKET MINVALUE 1 MAXVALUE 2147483647 START WITH 1 INCREMENT BY 1 CACHE 20;

 

CREATE OR REPLACE TRIGGER TR_REPORTTASKPACKET_BI

  BEFORE INSERT ON REPORT_TASKS_PACKET

  FOR EACH ROW

BEGIN

  IF (:new.PACK_ID IS NULL) THEN

    SELECT GENTASKSPACKET.NEXTVAL INTO :new.PACK_ID FROM Dual;

  END IF;

END;

/

 

CREATE OR REPLACE TRIGGER TR_REPORT_TASKS_PACKET_BU

  BEFORE UPDATE ON REPORT_TASKS_PACKET

  FOR EACH ROW

BEGIN

  :new.corr_date := SYSDATE;

END;

/

 

Таблица REPORT_TASKS_PACKETID -

Список идентификаторов регулярных заданий для пакета

 

№  п.п.

Имя поля

Тип поля

Описание

1

PACK_ID

NUMBER(10)

Идентификатор пакета REPORT_TASKS_PACKET(PACK_ID)

2

TASK_ID

NUMBER(10)

Идентификатор задания REPORT_TASKS(TASK_ID)

 

Пакет 0.36.1.0  (06.08.2009) создание таблицы REPORT_TASKS_PACKETID.

 

create table REPORT_TASKS_PACKETID

(

  PACK_ID NUMBER(10) not null,

  TASK_ID NUMBER(10) not null

);

 

 

ALTER TABLE REPORT_TASKS_PACKETID

  ADD CONSTRAINT FK_REPORTTASKSPACKET_PACK FOREIGN KEY (PACK_ID)

  REFERENCES REPORT_TASKS_PACKET (PACK_ID) ON DELETE CASCADE;

 

ALTER TABLE REPORT_TASKS_PACKETID

  ADD CONSTRAINT FK_REPORTTASKSPACKET_TASK FOREIGN KEY (TASK_ID)

  REFERENCES REPORT_TASKS (TASK_ID) ON DELETE CASCADE;

 

CREATE INDEX FK_REPORTTASKSPACKET_PACK ON REPORT_TASKS_PACKETID (PACK_ID)

  TABLESPACE INDX;

CREATE INDEX FK_REPORTTASKSPACKET_TASK ON REPORT_TASKS_PACKETID (TASK_ID)

  TABLESPACE INDX;

 

comment on table REPORT_TASKS_PACKETID is 'Включение заданий в пакеты';

COMMENT ON COLUMN REPORT_TASKS_PACKETID.PACK_ID IS ' Идентификатор пакета';

COMMENT ON COLUMN REPORT_TASKS_PACKETID.TASK_ID IS ' Идентификатор задания';

 

 

Таблица REPORT_TASKS_REGION -

Регионы, по которым выполняются задания  формирования отчетов

 

 

№ п.п.

Имя поля

Тип поля

Описание

1

TASK_ID

NUMBER(10)

Идентификатор задания REPORT_TASKS_PACKET(PACK_ID)

2

REGION_ID

NUMBER(10)

Идентификатор региона REGIONS(REGION_ID)

 

Пакет 0.36.1.0  (06.08.2009) создание таблицы REPORT_TASKS_REGION.

create table REPORT_TASKS_REGION

(

  TASK_ID   NUMBER(10) not null,

  REGION_ID NUMBER(10) not null

)

 

 

ALTER TABLE REPORT_TASKS_REGION

  ADD CONSTRAINT FK_REPORTTASKSREGION_REGION FOREIGN KEY (REGION_ID)

  REFERENCES REGIONS (REGION_ID) ON DELETE CASCADE;

 

ALTER TABLE REPORT_TASKS_REGION

  ADD CONSTRAINT FK_REPORTTASKSREGION_TASK FOREIGN KEY (TASK_ID)

  REFERENCES REPORT_TASKS (TASK_ID) ON DELETE CASCADE;

 

 

CREATE INDEX FK_REPORTTASKSREGION_REGION ON REPORT_TASKS_REGION (REGION_ID)

  TABLESPACE INDX;

CREATE INDEX FK_REPORTTASKSREGION_TASK ON REPORT_TASKS_REGION (TASK_ID)

  TABLESPACE INDX;

 

comment on table REPORT_TASKS_REGION is 'Регионы, по которым выполняются задания ';

COMMENT ON COLUMN REPORT_TASKS_REGION.TASK_ID IS ' Идентификатор задания';

COMMENT ON COLUMN REPORT_TASKS_REGION.REGION_ID IS ' Идентификатор региона';

 

 

 

Таблица REPORT_TASKS_REPORT

Отчеты, включенные в задание формирования отчетов

 

 

№  п.п.

Имя поля

Тип поля

Описание

1

TASK_ID

NUMBER(10)

Идентификатор задания REPORT_TASKS_PACKET(PACK_ID)

2

REPORT_ID

NUMBER(10)

Идентификатор отчета REPORT(REPORT_ID)

 

Пакет 0.36.1.0  (06.08.2009) создание таблицы REPORT_TASKS_REPORT.

 

create table REPORT_TASKS_REPORT

(

  TASK_ID   NUMBER(10) not null,

  REPORT_ID NUMBER(10) not null

);

 

ALTER TABLE REPORT_TASKS_REPORT

  ADD CONSTRAINT FK_REPORTTASKSREPORT_REPORT FOREIGN KEY (REPORT_ID)

  REFERENCES REPORT (REPORT_ID) ON DELETE CASCADE;

 

ALTER TABLE REPORT_TASKS_REPORT

  ADD CONSTRAINT FK_REPORTTASKSREPORT_TASK FOREIGN KEY (TASK_ID)

  REFERENCES REPORT_TASKS (TASK_ID) ON DELETE CASCADE;

 

 

CREATE INDEX FK_REPORTTASKSREPORT_REPORT ON REPORT_TASKS_REPORT (REPORT_ID)

  TABLESPACE INDX;

CREATE INDEX FK_REPORTTASKSREPORT_TASK ON REPORT_TASKS_REPORT (TASK_ID)

  TABLESPACE INDX;

 

 

comment on table REPORT_TASKS_REPORT is 'Отчеты, включенные в задание';

COMMENT ON COLUMN REPORT_TASKS_REPORT.TASK_ID IS ' Идентификатор задания';

COMMENT ON COLUMN REPORT_TASKS_REPORT.REPORT_ID IS ' Идентификатор отчета';

 

 

 

Таблица REPORT_TASKS_RESPGROUP

Видимость результатов выполнения задания формирования отчетов по сферам ответственности

 

 

№  п.п.

Имя поля

Тип поля

Описание

1

TASK_ID

NUMBER(10)

Идентификатор задания REPORT_TASKS_PACKET(PACK_ID)

2

RESPGROUP_ID

NUMBER(10)

Идентификатор сферы ответственности RESPGROUPS(RESP_ID)

 

Пакет 0.36.1.0  (06.08.2009) создание таблицы REPORT_TASKS_RESPGROUP.

 

create table REPORT_TASKS_RESPGROUP

(

  TASK_ID      NUMBER(10) not null,

  RESPGROUP_ID NUMBER(10) not null

);

 

ALTER TABLE REPORT_TASKS_RESPGROUP

  ADD CONSTRAINT FK_REPORTTASKSGROUP_RESPGROUP FOREIGN KEY (RESPGROUP_ID)

  REFERENCES RESPGROUPS (RESP_ID);

 

ALTER TABLE REPORT_TASKS_RESPGROUP

  ADD CONSTRAINT FK_REPORTTASKSRESPGROUP_TASK FOREIGN KEY (TASK_ID)

  REFERENCES REPORT_TASKS (TASK_ID) ON DELETE CASCADE;

 

 

CREATE INDEX FK_REPORTTASKSGROUP_RESPGROUP ON REPORT_TASKS_RESPGROUP (RESPGROUP_ID)

  TABLESPACE INDX;

CREATE INDEX FK_REPORTTASKSRESPGROUP_TASK ON REPORT_TASKS_RESPGROUP (TASK_ID)

  TABLESPACE INDX;

 

comment on table REPORT_TASKS_RESPGROUP is ' Видимость результатов выполнения задания по сферам ответственности';

COMMENT ON COLUMN REPORT_TASKS_RESPGROUP.TASK_ID IS ' Идентификатор задания';

COMMENT ON COLUMN REPORT_TASKS_RESPGROUP.RESPGROUP_ID IS ' Идентификатор сферы ответственности';

 

Таблица SCAT_FAULTPERIOD

 продолжительности отсутствия телефонной связи ( справочник для СППР)

 

 

№  п.п.

Имя

Тип

Описание

1

PERIOD_ID

NUMBER(10)

Идентификатор

 

2

MIN_VALUE

NUMBER(15,6)

Нижнее значение границы периода

 

3

MAX_VALUE

NUMBER(15,6)

Верхнее значение границы периода

 

4

PERIOD_AKA

VARCHAR2(30)

Краткое название периода

 

5

PERIOD_NAME

VARCHAR2(128)

Полное название периода

             

 

Пакет 0.36.1.0  (06.08.2009)  изменена размерность полей  MIN_VALUE,  MAX_VALUE и изменены их значения в таблице.

 

ALTER TABLE scat_faultperiod MODIFY min_value NULL;

ALTER TABLE scat_faultperiod MODIFY max_value NULL;

 

UPDATE scat_faultperiod SET min_value=NULL, max_value=NULL;

 

ALTER TABLE scat_faultperiod MODIFY min_value NUMBER(15,6);

ALTER TABLE scat_faultperiod MODIFY max_value NUMBER(15,6);

 

UPDATE scat_faultperiod SET min_value=0, max_value=0;

 

ALTER TABLE scat_faultperiod MODIFY min_value NOT NULL;

ALTER TABLE scat_faultperiod MODIFY max_value NOT NULL;

 

update scat_faultperiod s set s.min_value=0, s.max_value=1.000012

where s.period_id=1;

 

update scat_faultperiod s set s.min_value=1.000013, s.max_value=2.000012

where s.period_id=2;

 

update scat_faultperiod s set s.min_value=2.000013, s.max_value=3.000012

where s.period_id=3;

 

update scat_faultperiod s set s.min_value=3.000013, s.max_value=4.000012

where s.period_id=4;

 

update scat_faultperiod s set s.min_value=4.000013, s.max_value=5.000012

where s.period_id=5;

 

update scat_faultperiod s set s.min_value=5.000013, s.max_value=6

where s.period_id=6;

 

update scat_faultperiod s set s.min_value=6.000012, s.max_value=20

where s.period_id=7;

 

update scat_faultperiod s set s.min_value=20.000012, s.max_value=92

where s.period_id=8;

 

update scat_faultperiod s set s.min_value=92.000012

where s.period_id=9;

 

Пакет 0.37.1.0  (30.10.2009)  изменено значение поля  MAX_VALUE для периода “Более 3 месяцев (92 суток и больше)”

update scat_faultperiod s set s.max_value=999999999.000000

where s.period_id=9;

 

Таблица FLOW_DESCRIPTORCATEGORY

единая структура категорий для описателей правил, workflow  и скриптов

 

№  п.п.

Имя

Тип

Описание

1

CATEGORY_ID

NUMBER(10)

Идентификатор

 

2

CATEGORY_NAME

VARCHAR2(128)

Наименование

 

3

PARENTCATEGORY_ID

NUMBER(10)

Идентификатор родительской категории

 

4

IS_READONLY

CHAR(1)

Признак возможности модификации

             

 

Добавляется с пакета 0.36.1.0, при этом старые отдельные таблицы категорий удаляются.

 

create table FLOW_DESCRIPTORCATEGORY

(

  CATEGORY_ID       NUMBER(10) not null,

  CATEGORY_NAME     VARCHAR2(128) not null,

  PARENTCATEGORY_ID NUMBER(10) not null,

  IS_READONLY       CHAR(1) default 'F' not null

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 64

    minextents 1

    maxextents unlimited

  );

alter table FLOW_DESCRIPTORCATEGORY

  add constraint PK_FLOW_DESCRIPTORCATEGORY primary key (CATEGORY_ID)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table FLOW_DESCRIPTORCATEGORY

  add constraint UQ_FL_DESCRIPTORCATEGORY_NAME unique (CATEGORY_NAME, PARENTCATEGORY_ID)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table FLOW_DESCRIPTORCATEGORY

  add constraint FK_FLOW_DESCRIPTORCATEGORY foreign key (PARENTCATEGORY_ID)

  references FLOW_DESCRIPTORCATEGORY (CATEGORY_ID);

create bitmap index FK_FLOW_DESCRIPTORCATEGORY on FLOW_DESCRIPTORCATEGORY (PARENTCATEGORY_ID)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

 

------------------------------------------ ???

grant select, insert, update, delete on FLOW_DESCRIPTORCATEGORY to ???_FADMUSER;

/

create sequence GEN_FLOW_DESCRIPTORCATEGORY

minvalue 43

maxvalue 2147483647

start with 43

increment by 1

cache 20;

 

CREATE OR REPLACE TRIGGER TR_FLOW_DESCRIPTORCATEGORY_BI

  BEFORE INSERT ON FLOW_DESCRIPTORCATEGORY

  FOR EACH ROW

BEGIN

  IF ((:NEW.CATEGORY_ID IS NULL) OR (:NEW.CATEGORY_ID <= 0)) THEN

    SELECT GEN_FLOW_DESCRIPTORCATEGORY.NEXTVAL INTO :NEW.CATEGORY_ID FROM DUAL;

  END IF;

END TR_FLOW_DESCRIPTORCATEGORY_BI;

/

 

-- Данные

--  Корневые категории

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (1, 'Конфигурирование услуг', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (2, 'Техобслуживание, восстановление сети и обеспечение качества', 2, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (3, 'Планирование и модернизация сети', 3, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (4, 'Интеграция с системами управления элементами сети', 4, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (5, 'Технологические процессы', 5, 'T');

 

-- 1. Конфигурирование услуг

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (6, 'Активация услуг', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (7, 'Активация телефона', 6, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (8, 'Активация Интернет - доступа', 6, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (9, 'Активация ISDN', 6, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (10, 'Активация аренды', 6, 'T');

 

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (11, 'Деактивация услуг', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (12, 'Изменение параметров услуг', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (13, 'Активация/деактивация ДВО', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (14, 'Перенос услуги', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (15, 'Замена услуги', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (16, 'Временное приостановление/возобновление', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (17, ' Взаимный обмен услугами', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (18, 'Определение ТВ выполнения операции', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (19, 'Постановка клиента в очередь на активацию  услуги', 1, 'T');

 

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (20, 'Бронирование ресурсов', 1, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (21, 'Бронирование ресурсов под услугу', 20, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (22, 'Бронирование ресурсов как услуга', 20, 'T');

 

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (23, 'Формирование и выполнение ТУ', 1, 'T');

 

-- 2. Техобслуживание, восстановление сети и обеспечение качества

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (24, 'Регистрация заявления о снижении качества услуги', 2, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (25, 'Поиск и устранение повреждения по заявке', 2, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (26, 'Перерасчет платы за услугу с учетом не выполнения SLA', 2, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (27, 'Проведение регламентных ремонтных работ', 2, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (28, 'Проведение аварийно - восстановительных работ', 2, 'T');

 

-- 3.Планирование и модернизация сети

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (29, 'Определение узких и проблемных фрагментов сети', 3, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (30, 'Определение необходимых изменений в сети для устранения проблемных фрагментов сети', 3, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (31, 'Определение необходимых изменений в сети для удовлетворения отложенного или потенциального спроса на услуги', 3, 'T');

 

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (32, 'Реализация изменений на сети', 3, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (33, 'Ввод/удаление/модернизация узла сети', 32, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (34, 'Ввод/удаление/модернизация кабеля', 32, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (35, 'Ввод/удаление/модернизация канализации', 32, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (36, 'Массовые переключения', 32, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (37, 'Массовая замена имен услуг', 32, 'T');

 

-- 4. Интеграция с системами управления элементами сети

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (38, 'Получение информации о построении/топологии сети', 4, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (39, 'Получение информации о DSLAM', 38, 'T');

 

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (40, 'Получение информации о состоянии элементов сети', 4, 'T');

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (41, 'Получение информации о состоянии плат/портов DSLAM', 40, 'T');

 

insert into FLOW_DESCRIPTORCATEGORY (CATEGORY_ID, CATEGORY_NAME, PARENTCATEGORY_ID, IS_READONLY)

values (42, 'Управление состоянием элементов сети', 4, 'T');

 

COMMIT;

 

-- Удаление старых таблиц

alter table WF_DESCRIPTOR

  drop constraint FK_WF_DESCRIPTOR_CATEGORY;

update WF_DESCRIPTOR set CATEGORY_ID=5;

alter table WF_DESCRIPTOR

  add constraint FK_WF_DESCRIPTOR_CATEGORY foreign key (CATEGORY_ID)

  references FLOW_DESCRIPTORCATEGORY (CATEGORY_ID);

drop table WF_DESCRIPTORCATEGORY;

commit;

 

alter table WF_RULESET

  drop constraint FK_RULESETCATEGORY;

update WF_RULESET set CATEGORY_ID=5;

alter table WF_RULESET

  add constraint FK_RULESET_CATEGORY foreign key (CATEGORY_ID)

  references FLOW_DESCRIPTORCATEGORY (CATEGORY_ID);

drop table WF_RULESETCATEGORY;

commit;

 

update SCR_DESCRIPTOR set CATEGORY_ID=5;

alter table SCR_DESCRIPTOR

  add constraint FK_SCR_DESCRIPTOR_CATEGORY foreign key (CATEGORY_ID)

  references FLOW_DESCRIPTORCATEGORY (CATEGORY_ID);

drop table SCR_DESCRIPTORCATEGORY;

commit;

/

 

Версия 1.38.1.0 - Изменение для поддержки дампа RicoPump'ом

ALTER TRIGGER tr_flow_descriptorcategory_bi DISABLE;

INSERT INTO Flow_descriptorcategory (category_id,category_name,parentcategory_id,is_readonly)

  VALUES(0,' ',0,'T');

ALTER TRIGGER tr_flow_descriptorcategory_bi ENABLE;

 

UPDATE Flow_descriptorcategory SET parentcategory_id=0 WHERE parentcategory_id=category_id;

 

 

Таблица USERS

Учетные записи пользователей

 

№ п.п.

Имя поля

Тип поля

Описание

1

UID

NUMBER(10)

Идентификатор

2

USERNAME

VARCHAR2(40)

Отображаемое имя пользователя

3

COMMENT

VARCHAR2(60)

Примечание

4

FADM_LP

VARCHAR2(80)

Зашифрованные логин/пароль для входа  в комплекс

5

HOST_LP

VARCHAR2(80)

Зашифрованные логин/пароль для подключения к СУБД

6

LICTYPE

NUMBER(10)

Тип лицензии (0=Полная версия, 1=Trial)

7

ACCOUNT_STATE

NUMBER(10)

Состояние учетной записи (0=Незаблокирована, 1=Заблокирована)

8

OS_AUTH

CHAR(1)

Аутентификация только через Active Directory (T=Да, F=Нет)

9

CORR_DATE

DATE

Дата последнего изменения записи

10

OS_USER

VARCHAR2(250)

SID учетной записи из Active Directory

11

DB_LOGIN

VARCHAR2(15)

Логин для подключения к СУБД

12

FADM_LOGIN

VARCHAR2(15)

Логин для входа  в комплекс

 

Пакет 0.36.1.0  (18.08.2009)  введено ограничение NOT NULL на поля DB_LOGIN,  FADM_LOGIN.

 

ALTER TABLE Users MODIFY DB_LOGIN NOT NULL;

ALTER TABLE Users MODIFY FADM_LOGIN NOT NULL;

 

Таблица DOC_FIELDS

Дополнительные поля для формуляров объектов

 

№ п.п.

Имя поля

Тип поля

Описание

1

DOCF_ID

NUMBER(10)

Код поля документа

2

DOCF_NAME

VARCHAR2(30)

Название поля документа

3

DOCF_TYPE

NUMBER(10)

Тип поля документа

4

DOCF_FORMAT

VARCHAR2(15)

Формат представления данных из поля (если нужен)

5

CORR_DATE

DATE

Дата корректировки

6

DOCF_ALIAS

VARCHAR2(30)

Внутреннее наименование

7

DOCF_SPECUSE

CHAR(1)

Зарезервировано (T=Да, F=Нет)

 

Пакет 0.36.1.0  (18.08.2009) – добавлено доп. поле «Монтировано ISDN»

 

insert into DOC_FIELDS (DOCF_ID, DOCF_NAME, DOCF_TYPE, DOCF_FORMAT, CORR_DATE, DOCF_ALIAS, DOCF_SPECUSE)

values ((select max(DOCF_ID) from DOC_FIELDS)+1, 'МонтированоISDN', 2,'',sysdate,'MONT_ISDN','T')

 

Пакет 0.36.3.0  (08.10.2009) – увеличено до 30 символов поле DOCF_ALIAS,

 добавлены доп. поля «Количество слотов»,«Макс. количество портов»,

«Производитель».

 

  INSERT INTO Doc_fields (docf_name, docf_type, docf_alias, docf_specuse)

       VALUES ('Количество слотов', 2, 'AMOUNT_OF_SLOTS', 'T');

  INSERT INTO Doc_fields (docf_name, docf_type, docf_alias, docf_specuse)

       VALUES ('Макс. количество портов', 2, 'MAX_AMOUNT_OF_PORTS', 'T');

  INSERT INTO Doc_fields (docf_name, docf_type, docf_alias, docf_specuse)

       VALUES ('Производитель', 8, 'MANUFACTURER', 'T');

 

Таблица DOC_STRLIST

Значения для дополнительных полей с типом "строка, выбранная из списка".

 

№ п.п.

Имя поля

Тип поля

Описание

1

DOCF_INX

NUMBER(10)

Уникальный идентификатор

2

DOCF_ID

NUMBER(10)

Код поля документа

3

DOCF_VALUE

VARCHAR2(60)

Значение поля документа

4

CORR_DATE

DATE

Дата корректировки

5

ITEM_ALIAS

VARCHAR2(30)

Внутреннее наименование

 

Пакет 0.36.3.0  (08.10.2009) – увеличено до 30 символов поле ITEM_ALIAS, добавлены  значения для доп. поля «Производитель».

 

  INSERT INTO Doc_strlist (docf_id,docf_value,item_alias)

    VALUES (n, 'ECI', 'MANUFACTURER_ECI');

  INSERT INTO Doc_strlist (docf_id,docf_value,item_alias)

    VALUES (n, 'Huawei', 'MANUFACTURER_HUAWEI');

  INSERT INTO Doc_strlist (docf_id,docf_value,item_alias)

    VALUES (n, 'Iskratel', 'MANUFACTURER_ISKRATEL');

  INSERT INTO Doc_strlist (docf_id,docf_value,item_alias)

    VALUES (n, 'SIEMENS', 'MANUFACTURER_SIEMENS');

  INSERT INTO Doc_strlist (docf_id,docf_value,item_alias)

    VALUES (n, 'ZYXEL', 'MANUFACTURER_ZYXEL');

  INSERT INTO Doc_strlist (docf_id,docf_value,item_alias)

    VALUES (n, 'CORECESS', 'MANUFACTURER_CORECESS');

 

 

Таблица FLOW_BUSINESSINTERACTION

 Базовая таблица по заявкам, содержащая общие данные для всех видов заявок.

Имя поля

Тип поля

Описание

INTERACTIONID

VARCHAR2(30)

Уникальный внутренний идентификатор

 

INTERACTIONSTATUSID

NUMBER(10)

Текущее пользовательское состояние

 

INTERACTIONDATE

DATE

Дата начала

 

INTERACTIONDATECOMPLETE

DATE

Дата закрытия

 

WORKPROCESS_ID

NUMBER

Экземпляр workflow обрабатывающий данную заявку

 

VERSION

NUMBER(10)

Версия заявки

 

STATUS

VARCHAR2(15)

 Внутренний статус(Started,  Closed, NotStarted, CancelPending, Canceled,  ClosedWithError,Suspended)

 

POSSIBLESTATUSES

VARCHAR2(256)

Допустимые состояния для перехода

 

STATUS_COMMENT

VARCHAR2(256)

Комментарий к текущему состоянию

         

 

Пакет 0.36.0.1 (18.08.2009)

Удаление поля ACCESS_ID (Больше не используется в связи с переходом на механизм маршрутизации). Добавилась колонка  STATUS для сохранения внутреннего статуса состояний.

ALTER TABLE flow_businessinteraction DROP column ACCESS_ID

ALTER TABLE flow_businessinteraction add STATUS VARCHAR2(15) default 'NotStarted' not null

alter table FLOW_BUSINESSINTERACTION add VERSION NUMBER(10) default 0 not null

alter table FLOW_BUSINESSINTERACTION add POSSIBLESTATUSES VARCHAR2(256)

 

Пакет 0.39.0.0 (29.03.2010)

Добавилась колонка STATUS_COMMENT для сохранения комментария текущего статуса.

 

ALTER TABLE flow_businessinteraction add Status_Comment VARCHAR2(256)

 

Удаление таблиц предназначенных для старого варианта маршрутизации:

 

Пакет 0.36.0.1 (18.08.2009)

drop table FLOW_WORKPATHBRIGADE;

drop table FLOW_WORKPATHOBJECT;

drop table FLOW_WORKPATHREGION;

drop table FLOW_WORKPATHUSER;

drop table FLOW_WORKPATH;

 

Таблица FLOW_ASSIGNMENTREGION

 

Ассоциация заявок и информации о маршрутизации, содержит ссылку на экземпляр заявки и ссылку на объект по которому она маршрутизируется:

Пакет 0.36.0.1 (18.08.2009)

Имя поля

Тип поля

Описание

INTERACTIONID

VARCHAR2(30)

Уникальный внутренний идентификатор заявки

ID

NUMBER(10)

Уникальный внутренний идентификатор объекта маршрутизации

 

create table FLOW_ASSIGNMENT
(
  INTERACTIONID VARCHAR2(30) not null,
  "ID"            NUMBER(10) not null
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );
alter table FLOW_ASSIGNMENT
  add constraint PK_ASSIGNMENT primary key ("ID")
  using index
  tablespace INDX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
alter table FLOW_ASSIGNMENT
  add constraint FK_INTERACTIONID foreign key (INTERACTIONID)
  references FLOW_BUSINESSINTERACTION (INTERACTIONID);

 

create sequence GENFLOWASSIGNMENT

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

nocache;

 

CREATE OR REPLACE TRIGGER TR_FLOW_ASSIGNMENT_BI

  BEFORE INSERT ON FLOW_ASSIGNMENT

  FOR EACH ROW

BEGIN

  IF( :new."ID" IS NULL ) THEN

    SELECT TO_CHAR( GENASSIGNMENT.NEXTVAL, 'TM9' ) INTO :new."ID" FROM Dual;

  END IF;

END TR_FLOW_ASSIGNMENT_BI;

/

 

Таблица FLOW_ASSIGNMENTNETWORKOBJECT

 

Маршрутизация по объетам:

Пакет 0.36.0.1 (18.08.2009)

Имя поля

Тип поля

Описание

NETWORKOBJECTID

NUMBER(10)

Уникальный внутренний идентификатор  объекта

ID

NUMBER(10)

Уникальный внутренний идентификатор объекта маршрутизации

 

create table FLOW_ASSIGNMENTNETWORKOBJECT
(
  "ID"              NUMBER(10) not null,
  NETWORKOBJECTID NUMBER(10) not null
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );
alter table FLOW_ASSIGNMENTNETWORKOBJECT
  add constraint PK_ASSIGNMENTNETWORKOBJECT UNIQUE ("ID", NETWORKOBJECTID)
  using index
  tablespace INDX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
alter table FLOW_ASSIGNMENTNETWORKOBJECT
  add constraint FK_ASSIGNMAENTID foreign key ("ID")
  references FLOW_ASSIGNMENT ("ID");
alter table FLOW_ASSIGNMENTNETWORKOBJECT
  add constraint FK_NETWORKOBJECT_ASSIGNMENT foreign key (NETWORKOBJECTID)
  references OBJNAMES (OBJ_ID);

 

Таблица FLOW_ASSIGNMENTREGION

 

Маршрутизации по региону:

Пакет 0.36.0.1 (18.08.2009)

Имя поля

Тип поля

Описание

REGION_ID

NUMBER(10)

Уникальный внутренний идентификатор региона

ID

NUMBER(10)

Уникальный внутренний идентификатор объекта маршрутизации

 

create table FLOW_ASSIGNMENTREGION
(
  "ID"        NUMBER(10) not null,
  REGION_ID NUMBER(10) not null
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );
alter table FLOW_ASSIGNMENTREGION
  add constraint PK_ASSIGNMENT_REGIONS UNIQUE ("ID", REGION_ID)
  using index
  tablespace INDX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
alter table FLOW_ASSIGNMENTREGION
  add constraint FK_ASSIGNMENTREGIONID foreign key ("ID")
  references FLOW_ASSIGNMENT ("ID");
alter table FLOW_ASSIGNMENTREGION
  add constraint FK_REGIONS_ASSIGNMENT foreign key (REGION_ID)
  references REGIONS (REGION_ID);

 

Функция PR_Flow_Assignment_Request

 

Предназначена для выборки идентификаторов и версий заявок с учётом маршрутизации и ключа доступа спецификации, проверяет все ли объекты маршрутизации доступны для пользователя, а также доступен ли ему клююч доступа спецификации по которой созданы заявки.

Пакет 0.36.3.0

create or replace function PR_Flow_Assignment_Request(userID number)
  RETURN TYPE_Flow_Request AS
  CRM VARCHAR2(30);
  cParam varchar2(4000);
  REZULT TYPE_Flow_Request;
  ATS   TYPE_Flow_Request;
  regions TYPE_Flow_Request;
  SpecIds TYPE_Flow_Request;
begin
  regions:=TYPE_Flow_Request();
  ATS:=TYPE_Flow_Request();
  for reg in (SELECT DISTINCT R.region_id FROM Regions R, GroupXRegions XR, UserRegionGroups G
                WHERE G.user_id=userID and
                   XR.regiongrp_id=G.regiongrp_id AND R.region_id=XR.region_id)
                   loop
    regions.EXTEND;
    regions(regions.LAST) := TYPER_Flow_Request(reg.region_id,0);
    cRm := 'RubRM_ATS_'||To_Char(userID);
      for crs in (select opt_value  from options
                  where opt_name=cRM  and region_id=reg.region_id)
      loop
          cParam:=crs.opt_value;
        if cParam<>'ALL' then
          for ds in(Select o.obj_id
                     FROM OBJNAMES O,CLASSTYPES T,CLASSES C
                     WHERE cParam LIKE '%:'||o.obj_id||',%' and O.TYPE_ID = T.TYPE_ID and C.f_Iscommutationsystem='T' and o.region_id=reg.region_id and T.Class_Id=C.Class_Id)
          loop
             ATS.EXTEND;
             ATS(ATS.LAST):=TYPER_Flow_Request(ds.obj_id,0);
          end loop;
        else
          for ds in (SELECT O.OBJ_ID  FROM OBJNAMES O where o.obj_id = 1
union
SELECT O.OBJ_ID
  FROM OBJNAMES O, CLASSTYPES T, CLASSES C
 WHERE c.F_ISCOMMUTATIONSYSTEM = 'T'
   and T.CLASS_ID = C.CLASS_ID
   AND O.TYPE_ID = T.TYPE_ID
   and o.region_id =reg.region_id)
          loop
             ATS.EXTEND;
             ATS(ATS.LAST):=TYPER_Flow_Request(ds.obj_id,0);
          end loop;
        end if;
      end loop;
       end loop;
  SpecIds:=TYPE_Flow_Request();
  for spec in (select b.specificationid from flow_businessinteractionspec b where b.accessid in(SELECT i.access_id
  FROM access_ids i
 WHERE EXISTS (SELECT a.access_key
          FROM userrespgroups g, access_keys a
         WHERE g.user_id = userid
           AND a.resp_id = g.respgrp_id
           AND a.access_id = i.access_id
           AND a.access_key <> 0))) loop
           SpecIds.EXTEND;
           SpecIds(SpecIds.LAST):=TYPER_Flow_Request(spec.specificationid,0);
           end loop;
  REZULT := TYPE_Flow_Request();
  for x in (select fr.interactionid,fr.VERSION
              from FLOW_BUSINESSINTERACTION fr, flow_assignment fa,FLOW_ENTITY et
             where et.id=fr.interactionid and et.specificationid in (select ID from table(SpecIds))
             and fa.interactionid = fr.interactionid
               AND (SELECT count(1)
                      from flow_assignment              fa3,
                           flow_assignmentnetworkobject fo
                     where fa3.interactionid = fa.interactionid
                       and fo.id = fa3.id) =
                   (select count(1)
                      from flow_assignment              fa2,
                           flow_assignmentnetworkobject fo
                     inner join (select ID from table(ATS)) v on v.ID =fo.networkobjectid
                     where fa2.interactionid = fa.interactionid
                       and fo.id = fa2.id)
               and (select count(1)
                      from flow_assignment fa3, flow_assignmentregion fr3
                     where fa3.interactionid = fa.interactionid
                       and fr3.id = fa3.id) =
                   (select count(1)
                      from flow_assignment fa2, flow_assignmentregion fr
                     inner join (select ID
                                  from table(regions)) v on v.ID =
                                                         fr.region_id
                     where fa2.interactionid = fa.interactionid
                       and fr.id = fa2.id)
             group by fr.interactionid,fr.version) loop
    REZULT.EXTEND;
    REZULT(REZULT.LAST) := TYPER_Flow_Request(x.interactionid,x.VERSION);
  END loop;
  RETURN REZULT;
END;

 

Тип TYPER_FLOW_REQUEST

Тип данных для функцииPR_Flow_Assignment_Request

 

CREATE OR REPLACE TYPE TYPER_FLOW_REQUEST
AS OBJECT(
  ID VARCHAR2(60),
  VERSION NUMBER(10))

 

ID - идентификатор заявки

VERSION  - версия объекта

 

Тип TYPE_FLOW_REQUEST

Тип - таблица, для функцииPR_Flow_Assignment_Request

 

CREATE OR REPLACE TYPE TYPE_FLOW_REQUEST
AS TABLE OF TYPER_FLOW_REQUEST

 

Таблица OBJNAMES

Объекты (оборудование и сооружения)

 

п.п.

Имя поля

Тип поля

Описание

1

OBJ_ID

NUMBER(10)

Идентификатор объекта

2

TYPE_ID

NUMBER(1 0)

Идентификатор типа объекта

3

OBJ_NAME

VARCHAR2(30)

Наименование объекта

4

OBJ_COMMENT

VARCHAR2(30)

Примечание

5

OWNER_ID

NUMBER(10)

Владелец (собственник) объекта

6

PARENT_ID

NUMBER(10)

Идентификатор внешнего объекта (контейнера)

7

ACCESS_ID

NUMBER(10)

Идентификатор клююча доступа

8

CORR_DATE

DATE

Дата последнего изменения информации

9

REGION_ID

NUMBER(10)

Идентификатор региона

10

CORRUSER_ID

NUMBER(10)

Идентификатор пользователя, который произвел последние изменения информации

                       

Пакет 0.36.0.1 (08.09.2009)

CREATE OR REPLACE TRIGGER TR_OBJNAMES_AU

    AFTER UPDATE ON "OBJNAMES"

    FOR EACH ROW

DECLARE

  cClass VARCHAR2(30);

  cType VARCHAR2(30);

  cAccess VARCHAR2(50);

  cTempOld VARCHAR2(1000);

  cTemp VARCHAR2(1000);

  cTemp1 VARCHAR2(1000);

 

  cParent VARCHAR2(1000);

  cOwner VARCHAR2(60);

  cRegion VARCHAR2( 30 );

  lPorts CHAR(1);

  n PLS_INTEGER;

  nFlow PLS_INTEGER;

BEGIN

  IF (:new.parent_id<>1 AND :old.parent_id=1) THEN

    DELETE FROM Address WHERE obj_id=:old.obj_id;

  END IF;

  IF (:new.type_id<>:old.type_id OR :new.parent_id<>:old.parent_id OR

      :new.owner_id<>:old.owner_id OR :new.access_id<>:old.access_id OR

      :new.obj_name<>:old.obj_name) THEN

 

     --удаляем ненайденные кроссировки

    IF (:new.type_id<>:old.type_id) THEN

      FOR crs1 IN (SELECT D.contfrom_no, D.contto_no, D.flow_id,

                          CASE WHEN EXISTS (SELECT *

                                              FROM Devlinks

                                             WHERE type_id=:NEW.type_id AND

                                                  ((contfrom_no=D.contfrom_no AND contto_no=D.contto_no) OR

                                                   (contto_no=D.contfrom_no AND contfrom_no=D.contto_no)))

                               THEN 'T' ELSE 'F' END newExists

                     FROM Devlinks D

                    WHERE D.type_id=:OLD.type_id)

      LOOP

        IF (crs1.newExists='F') THEN

          FOR crs2 IN (SELECT line_id

                         FROM Alpha

                        WHERE objfrom_id=:OLD.obj_id AND objto_id=:OLD.obj_id AND

                              ((contfrom_no=crs1.contfrom_no AND contto_no=crs1.contto_no) OR

                               (contfrom_no=crs1.contto_no AND contto_no=crs1.contfrom_no)))

          LOOP

            DELETE FROM Alpha WHERE line_id=crs2.line_id;

          END LOOP;

        END IF;

      END LOOP;

 

       --обновляем найденные и добавляем новые кроссировки

      FOR crs1 IN (SELECT D.contfrom_no, D.contto_no, D.flow_id

                     FROM Devlinks D

                    WHERE D.type_id=:new.type_id)

      LOOP

        n:=0;

        FOR crs2 IN (SELECT contfrom_no, contto_no, line_id

                       FROM Alpha

                      WHERE objfrom_id=:new.obj_id AND objto_id=:new.obj_id AND

                            ((contfrom_no=crs1.contfrom_no AND contto_no=crs1.contto_no) OR

                             (contfrom_no=crs1.contto_no AND contto_no=crs1.contfrom_no)))

        LOOP

          n:=1;

          IF (crs2.contfrom_no=crs1.contfrom_no AND crs2.contto_no=crs1.contto_no) THEN

            nFlow:=crs1.flow_id;

          ELSE

            nFlow:=pr_invertflow(crs1.flow_id);

          END IF;

          UPDATE Alpha SET flow_id=nFlow WHERE line_id=crs2.line_id;

        END LOOP;

        IF (n=0) THEN

          INSERT INTO Alpha (objfrom_id, contfrom_no, objto_id, contto_no, flow_id, flow_type)

               VALUES (:new.obj_id, crs1.contfrom_no, :new.obj_id, crs1.contto_no, crs1.flow_id, 'D');

        END IF;

      END LOOP;

    END IF;

 

    SELECT owner_name

      INTO cOwner

      FROM Owners

      WHERE owner_id=:old.owner_id;

 

    SELECT region_name

      INTO cRegion

      FROM Regions

     WHERE region_id=:old.region_id;

 

    SELECT C.class_name, CT.type_name

      INTO cClass, cType

      FROM ClassTypes CT, Classes C

      WHERE CT.type_id=:old.type_id AND C.class_id=CT.Class_id;

 

    SELECT access_name

      INTO cAccess

      FROM Access_ids

      WHERE access_id=:old.access_id;

 

    cTemp:=cClass ||' (' || cType || ') ' || :old.obj_name;

    IF (:old.parent_id>1) THEN

      pr_say_fulobjname2(:old.parent_id,'F','F',cTemp1,cParent,lPorts);

      cTemp:=cTemp || ' (' || cParent || ')';

    END IF;

     cTemp:=cTemp || ', клююч доступа: ' || cAccess ||

                     ', владелец: ' || cOwner ||

                     ', подразделение: ' || cRegion ||

                    ', ID: ' || TO_CHAR(:old.obj_id) || '.';

    cTempOld:=cTemp;

 

 

    SELECT owner_name

      INTO cOwner

      FROM Owners

      WHERE owner_id=:new.owner_id;

 

    SELECT region_name

      INTO cRegion

      FROM Regions

     WHERE region_id=:new.region_id;

 

    SELECT C.class_name, CT.type_name

      INTO cClass, cType

      FROM ClassTypes CT, Classes C

      WHERE CT.type_id=:new.type_id AND C.class_id=CT.Class_id;

 

    SELECT access_name

      INTO cAccess

      FROM Access_ids

      WHERE access_id=:new.access_id;

 

    cTemp:=cClass ||' (' || cType || ') ' || :new.obj_name;

    IF (:new.parent_id>1) THEN

      pr_say_fulobjname2(:new.parent_id,'F','F',cTemp1,cParent,lPorts);

      cTemp:=cTemp || ' (' || cParent || ')';

    END IF;

     cTemp:=cTemp || ', клююч доступа: ' || cAccess ||

                     ', владелец: ' || cOwner ||

                     ', подразделение: ' || cRegion ||

                    ', ID: ' || TO_CHAR(:new.obj_id) || '.';

 

    INSERT INTO CorrLog( corr_table, corr_operation, corr_text )

       VALUES( 'OBJNAMES', 'U', 'Объект. Бло: ' || cTempOld || ' Стало: ' || cTemp);

  END IF;

END;

/

 

CREATE OR REPLACE TRIGGER TR_OBJNAMES_AD

    AFTER DELETE ON "OBJNAMES"

    FOR EACH ROW

DECLARE

  cClass VARCHAR2(30);

  cType VARCHAR2(30);

  cAccess VARCHAR2(50);

  cTemp VARCHAR2(1000);

  cTemp1 VARCHAR2(1000);

 

  cParent VARCHAR2(1000);

  cOwner VARCHAR2(60);

  cRegion VARCHAR2( 30 );

  lPorts CHAR(1);

BEGIN

  SELECT owner_name

    INTO cOwner

    FROM Owners

    WHERE owner_id=:old.owner_id;

 

  SELECT region_name

    INTO cRegion

    FROM Regions

   WHERE region_id=:old.region_id;

 

  SELECT C.class_name, CT.type_name

    INTO cClass, cType

    FROM ClassTypes CT, Classes C

    WHERE CT.type_id=:old.type_id AND C.class_id=CT.Class_id;

 

  SELECT access_name

    INTO cAccess

    FROM Access_ids

    WHERE access_id=:old.access_id;

 

  cTemp:=cClass ||' (' || cType || ') ' || :old.obj_name;

  IF (:old.parent_id>1) THEN

    pr_say_fulobjname2(:old.parent_id,'F','F',cTemp1,cParent,lPorts);

    cTemp:=cTemp || ' (' || cParent || ')';

  END IF;

   cTemp:=cTemp || ', клююч доступа: ' || cAccess ||

                   ', владелец: ' || cOwner ||

                   ', подразделение: ' || cRegion ||

                  ', ID: ' || TO_CHAR(:old.obj_id) || '.';

 

  INSERT INTO CorrLog( corr_table, corr_operation, corr_text )

    VALUES( 'OBJNAMES', 'D', cTemp);

END;              

/

 

Таблица Flow_businessinteractionspec

 

Базовая таблица по шаблонам спецификаций, содержит ссылку на клююч доступа и описателя процесса.

 

Имя поля

Тип поля

Описание

SPECIFICATIONID

VARCHAR2(30)

Уникальный внутренний идентификатор спецификации

 

INTERACTIONTYPEID

NUMBER(10)

Внутренний идентификатор вида спецификации

 

WF_DESCR

NUMBER(10)

Описатель процесса

 

ACCESSID

NUMBER(10)

Ключ доступа

         

 

Версия 0.36.3.0

 

Добавилась колонка ACCESSID  - клююч доступа ограничиваюющий вборку спецификаций и заявок.

 

Alter table flow_businessinteractionspec add ACCESSID NUMBER(10) default 1not null

alter FLOW_BUSINESSINTERACTIONSPEC
  FK_SPEC_ACCESS_IDS (ACCESSID)
  ACCESS_IDS (ACCESS_ID);

 

Таблица SCR_DESCRIPTOR

 

Описатели скриптов.

 

№ п.п.

Имя поля

Тип поля

Описание

1

ID

NUMBER

Идентификатор БД

2

UNIQUE_ID

VARCHAR2(200)

Уникальный текстовый идентификатор

3

OWNER

VARCHAR2(200)

Создатель скрипта

4

DESCRIPTION

VARCHAR2(2000)

Текст описания

5

VERSION

VARCHAR2(50)

Текущая версия

6

COMMITDATE

TIMESTAMP (6)

Дата последнего сохранения

7

COMMITEDBY

VARCHAR (200)

Кем сохранено в последний раз

8

DATA

CLOB

Текст скрипта

9

SCHEMA

CLOB

XML Схема параметров

10

DESCRIPTOR_NAME

VARCHAR2(200)

Заголовок описателя

11

CATEGORY_ID

NUMBER

Идентификатор категории

 

create table scr_descriptor_tmp as (select * from scr_descriptor);

 

truncate table scr_descriptor;

alter table SCR_DESCRIPTOR rename column PATH to UNIQUE_ID;

alter table SCR_DESCRIPTOR modify ID number(10);

alter table SCR_DESCRIPTOR modify UNIQUE_ID varchar2(200);

alter table SCR_DESCRIPTOR modify OWNER varchar2(200);

alter table SCR_DESCRIPTOR modify DESCRIPTION varchar2(2000);

alter table SCR_DESCRIPTOR modify VERSION VARCHAR2(50);

alter table SCR_DESCRIPTOR modify COMMITDATE date;

alter table SCR_DESCRIPTOR modify COMMITEDBY varchar2(200);

alter table SCR_DESCRIPTOR modify CATEGORY_ID number(10);

alter table SCR_DESCRIPTOR modify DESCRIPTOR_NAME VARCHAR2(200);

alter table SCR_DESCRIPTOR drop column NAME;

 

insert into SCR_DESCRIPTOR(ID, UNIQUE_ID, OWNER, DESCRIPTION, VERSION, COMMITDATE, COMMITEDBY, DATA, SCHEMA, DESCRIPTOR_NAME, CATEGORY_ID)

select ID, PATH, OWNER, DESCRIPTION, VERSION, COMMITDATE, COMMITEDBY, DATA, SCHEMA, DESCRIPTOR_NAME, CATEGORY_ID

  from scr_descriptor_tmp;

    drop table scr_descriptor_tmp;

commit;

 

Добавлена таблица SCHEMESHISTORY – для хранения истории изменений схем Рикографа.

 

 

 

Таблица SCHEMESHISTORY

 

Описатели скриптов:

 

№ п.п.

Имя поля

Тип поля

Описание

1

ID

NUMBER

Идентификатор схемы

2

OBJ_SCHEME_NAME

VARCHAR2(300)

Имя  схемы

3

OBJ_TYPE_NAME

VARCHAR2(300)

Имя типа схемы

4

REGION_NAME

VARCHAR2(3000)

Имя региона

5

HISTORY

XMLTYPE

История изменений схемы

 

CREATE TABLE SCHEMESHISTORY(

  obj_id  NUMBER( 10 ),

  obj_scheme_name VARCHAR2(30),

  obj_type_name VARCHAR2(30),

  region_name VARCHAR2(30),

  history XMLTYPE DEFAULT '<log></log>' NOT NULL

);

 

ALTER TABLE SCHEMESHISTORY

  ADD CONSTRAINT UQ_SCHEMESHISTORY

  UNIQUE( obj_id )

  USING INDEX TABLESPACE INDX;

 

ALTER TABLE SCHEMESHISTORY

  ADD CONSTRAINT FK_SCHEMESHISTORY_SCHEMES

  FOREIGN KEY( obj_id ) REFERENCES SCHEMES( obj_id );

 

 

Таблица Flow_businessinteractprogress

Прогресс выполнения заданий.

 

Таблица прогресса перехода между состояниями заявки.

 

Имя поля

Тип поля

Описание

INTERACTIONID

VARCHAR2(30)

Внутренний идентификатор.

 

INTERACTIONSTATUSID

NUMBER(10)

Внутренний идентификатор статуса

 

INTERACTIONDATE

DATE

Дата перехода в указанный статус.

 

PROGRESSID

NUMBER(10)

Внутренний идентификатор объекта  прогресса.

 

USERID

NUMBER(10)

Пользователь инициировавший переход в данное состояние.

 

STATUS_COMMENT

VARCHAR2(256)

Комментарий к переходу в это состояние.

         

 

 

Версия 1.36.3

Добавлена колонкаUSERID:

 

ALTER TABLE FLOW_BUSINESSINTERACTPROGRESS add USERID NUMBER(10) default -1 not null;

alter table FLOW_BUSINESSINTERACTPROGRESS

  add constraint FK_flowProgress_Users foreign key (USERID)

  references Users ("UID");

 

Версия 1.39.0.0

 

Добавилась колонка STATUS_COMMENT для сохранения комментария к состоянию.

 

ALTER TABLE FLOW_BUSINESSINTERACTPROGRESS add Status_Comment VARCHAR2(256)

 

 

 

Таблица FLOW_ASSEMBLY_DESCRIPTOR

Хранение файлов библиотек

 

Имя поля

Тип поля

Описание

ASSEMBLY_ID

VARCHAR2(30)

Внутренний идентификатор

 

ASSEMBLY_NAME

NUMBER(10)

Полное имя сборки

 

ASSEMBLY_CONTENT

BLOB

Файл сборки

 

CORRECTION_DATE

DATE

 Д ата изменения

         

 

create table FLOW_ASSEMBLY_DESCRIPTOR

(

  ASSEMBLY_ID      NUMBER(10) not null,

  ASSEMBLY_NAME    VARCHAR2(512) not null,

  ASSEMBLY_CONTENT BLOB not null,

  CORRECTION_DATE  DATE default SYSDATE not null

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 16K

    minextents 1

    maxextents unlimited

  );

 

alter table FLOW_ASSEMBLY_DESCRIPTOR

  add constraint PK_ASSEMBLY_DESCRIPTOR primary key (ASSEMBLY_ID)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table FLOW_ASSEMBLY_DESCRIPTOR

  add constraint UQ_ASSEMBLY_DESCRIPTOR_NAME unique (ASSEMBLY_NAME)

  using index

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

--grant select, insert, update, delete on FLOW_ASSEMBLY_DESCRIPTOR to USER;

/

 

create sequence GEN_FLOW_ASSEMBLY_DESCRIPTOR

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

cache 20;

 

CREATE OR REPLACE TRIGGER TR_FLOW_ASSEMBLY_DESCRIPTOR_BI

  BEFORE INSERT ON FLOW_ASSEMBLY_DESCRIPTOR

  FOR EACH ROW

BEGIN

  IF ((:NEW.ASSEMBLY_ID IS NULL) OR (:NEW.ASSEMBLY_ID <= 0)) THEN

    SELECT GEN_FLOW_ASSEMBLY_DESCRIPTOR.NEXTVAL INTO :NEW.ASSEMBLY_ID FROM DUAL;

  END IF;

END TR_FLOW_ASSEMBLY_DESCRIPTOR_BI;

/

 

 

Таблица WF_DESCRIPTOR

Версия 1.38.3.0

Перенос данных таблицы WF_XOMLCODE в WF_DESCRIPTOR. Удаление WF_XOMLCODE.

 

alter table WF_DESCRIPTOR add CODE_DEFINITION clob;

alter table WF_DESCRIPTOR add RULE_DEFINITION clob;

alter table WF_DESCRIPTOR add LAYOUT_DEFINITION clob;

 

DECLARE

  N PLS_INTEGER;

BEGIN

  FOR CRS IN (SELECT DESCRIPTOR_ID FROM WF_DESCRIPTOR WHERE IS_XOML = 'T') LOOP

    -- CODE

    FOR CRS_C IN (SELECT DEFINITION

                  FROM   WF_XOMLCODE

                  WHERE  WF_ID = CRS.DESCRIPTOR_ID AND

                         IS_RULE = 'C') LOOP

      IF (CRS_C.DEFINITION IS NOT NULL) THEN

        UPDATE WF_DESCRIPTOR UD SET UD.CODE_DEFINITION=CRS_C.DEFINITION WHERE UD.DESCRIPTOR_ID=CRS.DESCRIPTOR_ID;

        EXIT;

      END IF;

    END LOOP;

   

    -- RULE

    FOR CRS_R IN (SELECT DEFINITION

                  FROM   WF_XOMLCODE

                  WHERE  WF_ID = CRS.DESCRIPTOR_ID AND

                         IS_RULE = 'R') LOOP

      IF (CRS_R.DEFINITION IS NOT NULL) THEN

        UPDATE WF_DESCRIPTOR UD SET UD.RULE_DEFINITION=CRS_R.DEFINITION WHERE UD.DESCRIPTOR_ID=CRS.DESCRIPTOR_ID;

        EXIT;

      END IF;

    END LOOP;

   

    -- LAYOUT

    FOR CRS_L IN (SELECT DEFINITION

                  FROM   WF_XOMLCODE

                  WHERE  WF_ID = CRS.DESCRIPTOR_ID AND

                         IS_RULE = 'L') LOOP

      IF (CRS_L.DEFINITION IS NOT NULL) THEN

        UPDATE WF_DESCRIPTOR UD SET UD.LAYOUT_DEFINITION=CRS_L.DEFINITION WHERE UD.DESCRIPTOR_ID=CRS.DESCRIPTOR_ID;

        EXIT;

      END IF;

    END LOOP;

  END LOOP;

 

  COMMIT;

END;

 

DROP TABLE WF_XOMLCODE;

/

 

 

Таблица TEMP_OBJ_MODE_DATA

Версия 1.39.0.0

 

Временная таблица, используется в подсистеме СППР, при расчете показателя по кабелям.

 

Имя поля

Тип поля

Описание

TEMP_OBJ_ID

NUMBER(10)

Идентификатор объекта(из OBJNAMES)

TEMP_MODE_ID

NUMBER(10)

Тип кабельной связи

 

create global temporary table TEMP_OBJ_MODE_DATA

(

  TEMP_OBJ_ID  NUMBER(10) not null,

  TEMP_MODE_ID NUMBER(10) not null

)

on commit preserve rows;

 

alter table TEMP_OBJ_MODE_DATA

  add constraint PK_TEMP_OBJ_MODE_DATA primary key (TEMP_OBJ_ID, TEMP_MODE_ID);

/


Структуры, используемые в БД АСТЛО для регламентирования отношений хозяйственной деятельности.

 

 

CANAL_USAGE – справочник назначений каналов канализации

USAGE_ID

NUMBER

 

Id

USAGE_NAME

VARCHAR(30)

 

Назначение

 

CANAL_MATERIAL – справочник материалов каналов канализации

MATERIAL_ID

NUMBER

 

Id

MATERIAL _NAME

VARCHAR(30)

 

Материал

 

 


 

SEWERS – участки канализации

OBJ_ID

NUMBER

OBJ_ID (OBJNAMES)

Id канализации

CANAL_PICT_START

BLOB

 

Схема сечения канализации от стартового объекта

 

CANAL_POS_START

BLOB

 

Расположение каналов от стартового объекта

 

COMMENT

VARCHAR(150)

 

Комментарии

 

CORR_DATE

DATE

 

Дата последнего изменения

 

CORR_USER

NUMBER

UID (USERS)

Автор последнего изменения

           

 

SEWER_CANALS – каналы в канализации

CANAL_ID

NUMBER

 

Id канала

SEWER_ID

NUMBER

OBJ_ID (OBJNAMES)

Id участка канализации

 

CANAL_GRP

NUMBER

 

Группа канала

 

CANAL_NO

NUMBER

 

Номер канала

 

CANAL_DIAM

FLOAT

 

Диаметр

 

CANAL_STATE

BOOLEAN

 

Исправность канала

 

USAGE_ID

NUMBER

USAGE_ID (CANAL_USAGE)

Назначение канала

 

MATERIAL_ID

NUMBER

MATERIAL_ID (CANAL_MATERIAL)

Материал канала

 

CANAL_DATE

DATE

 

Дата прокладки канала

 

OWNER_ID

NUMBER

OWNER_ID (OWNERS)

Собственник канала

 

COMMENTS

VARCHAR(150)

 

Комментарии

 

CORR_DATE

DATE

 

Дата последнего изменения

 

CORR_USER

NUMBER

UID (USERS)

Автор последнего изменения

             

 


 

DEAL_TYPES – справочник типов документов

DEALTYPE_ID

NUMBER

 

Id

DEALTYPE_NAME

VARCHAR(150)

 

Наименование типа документа

DEAL_ALIAS

VARCHAR(30)

 

Алиас типа

 

 

DEALS – таблица документов

DEAL_ID

NUMBER

 

Id документа (внутренний)

DEALTYPE_ID

NUMBER

DEALTYPE_ID (DEAL_TYPES)

Тип документа

 

DEAL_NO

VARCHAR(60)

 

Номер документа

 

DEAL_DATE

DATE

 

Дата документа

 

DEAL_URL

VARCHAR(150)

 

Ссылка на текст документа

 

PARENT_ID

NUMBER

 

Id порождающего документа

 

CORR_DATE

DATE

 

Дата последнего изменения

 

CORR_USER

NUMBER

UID (USERS)

Автор последнего изменения

           

 

DEAL_SIDES – таблица участников документов

DEAL_ID

NUMBER

DEAL_ID (DEALS)

Id документа

OWNER_ID

NUMBER

OWNER_ID (OWNERS)

Id субъекта, фигурирующего в документе

 


 

RELATIONSTYPES – типы хозяйственных отношений

RELATION_TYPE

NUMBER

 

Id типа

RELATION_ALIAS

VARCHAR(30)

 

Алиас типа

RELATION_NAME

VARCHAR(60)

 

Имя типа

 

RELATIONS - Таблица отношений хозяйствования

RELATION_ID

NUMBER

 

Id операции

RELATION_TYPE

NUMBER

RELATION_ TYPE (RELATIONTYPES)

Тип операции

 

DEAL_ID

NUMBER

DEAL_ID (DEALS)

Id документа, на основании которого осуществляется операция

 

OWNER_ID

NUMBER

OWNER_ID (OWNERS)

Id владельца, для которого осуществляется операция

 

SPECIALITIES

XMLTYPE

 

Особые характеристики, e.g., диаметр кабеля и его марка

 

CORR_DATE

DATE

 

Дата последнего изменения

 

CORR_USER

NUMBER

UID (USERS)

Автор последнего изменения

             

 

 

RESERV_OBJS_CANAL – каналы в канализации, попадающие в отношения субъектов хоз. деятельности

RELATION_ID

NUMBER

RELATION_ID (RELATIONS)

Id операции отношения

OBJ_ID

NUMBER

CANAL_ID (SEWER_CANALS)

Id канала

DIAM

NUMBER

 

Диаметр, забронированный в канале

 

RESERV_OBJS_OBJNAMES – объекты линейного учёта, попадающие в отношения субъектов хоз. деятельности

RELATION _ID

NUMBER

RELATION_ID (RELATIONS)

Id операции отношения

OBJ_ID

NUMBER

OBJ_ID (OBJNAMES)

Id объекта

 

 

Таблица BRONLIN_BUSINESSINTERACTION

Кросс таблица для заявок RSFlow и заявок Технарика.

 

 

Имя поля

Тип поля

Описание

BRONLIN_BUSINESSINTERACTION_ID

NUMBER(10)

Внутренний идентификатор.

BRON_ID

NUMBER(10)

Внутренний  заявки технарика (BRONLIN)

INTERACTIONID

VARCHAR2(30)

Внутренний  заявки RSFlow (FLOW_BUSINESSINTERACTION)

KROSS_STATE_CODE

NUMBER(10)

Значение для состояния на кроссе

F_ISEVENTTARGET             

CHAR(1)

Использовать ли данную связку для передачи сообщений заданию

 

Версия 1. 40.0.0

 

Создание таблицы:

 

-- Create table
create table BRONLIN_BUSINESSINTERACTION
(
  BRON_ID                        NUMBER(10) not null,

  INTERACTIONID                  VARCHAR2(30) not null,

  BRONLIN_BUSINESSINTERACTION_ID NUMBER(10) not null,

  KROSS_STATE_CODE               NUMBER(10),

  F_ISEVENTTARGET                CHAR(1) default 'T'

)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Add comments to the columns

comment on column BRONLIN_BUSINESSINTERACTION.KROSS_STATE_CODE

  is 'Состояние на кроссе';

comment on column BRONLIN_BUSINESSINTERACTION.F_ISEVENTTARGET

  is 'Использовать ли данную связку для передачи сообщений заданию';

-- Create/Recreate primary, unique and foreign key constraints

alter table BRONLIN_BUSINESSINTERACTION

  add constraint PK_BRONLIN_BUSINESSINTERACTION primary key (BRONLIN_BUSINESSINTERACTION_ID)

  using index

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table BRONLIN_BUSINESSINTERACTION

  add constraint UQ_BRONLIN_BUSINESSINTERACTION unique (BRON_ID, INTERACTIONID)

  using index

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table BRONLIN_BUSINESSINTERACTION

  add constraint FK_BRONLIN_BUSINESSINTERACTION foreign key (INTERACTIONID)

  references FLOW_BUSINESSINTERACTION (INTERACTIONID) on delete cascade;

alter table BRONLIN_BUSINESSINTERACTION

  add constraint FK_BRONLIN_BUSINESSINTER_BRON foreign key (BRON_ID)

  references BRONLIN (BRONL_ID) on delete cascade;

-- Create/Recreate check constraints

alter table BRONLIN_BUSINESSINTERACTION

  add constraint CH_BR_BSNSINT_ISEVENTTARGET

  check ((F_ISEVENTTARGET='F') OR (F_ISEVENTTARGET='T'));

-- Grant/Revoke object privileges

grant select, insert, update, delete on BRONLIN_BUSINESSINTERACTION to HUK_FADMUSER;

 

create or replace trigger tr_bronlinbusinessint_bi

  before insert on bronlin_businessinteraction

  for each row

begin

  if ((:new.bronlin_businessinteraction_id is null) or

     (:new.bronlin_businessinteraction_id <= 0)) then

    select genbronlinbusinessint.nextval

    into   :new.bronlin_businessinteraction_id

    from   dual;

  end if;

end tr_bronlinbusinessint_bi;/

 

create sequence GENBRONLINBUSINESSINT

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

nocache;

 

Пакет 44.0.0

Создание триггеров синхронизации кода состояния работ с BRONLIN

 

CREATE OR REPLACE TRIGGER TR_BRONLINBUSINESSINT_AU

  AFTER UPDATE ON BRONLIN_BUSINESSINTERACTION

  FOR EACH ROW

declare

  query_state_msg_type varchar2(200) := 'RSNetGain.Technaric.RSFlowIntegration.Events.BronlinOrderGetKrossState, RSNetGain.Technaric.RSFlowIntegration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null';

  query_state_msg_prop varchar2(20) := 'BronlinId';

  subscription_id      pls_integer := -1;

BEGIN

  --проверить наличие подписки

  for crs in (select s.subscription_id

                from flow_message_subscription      s,

                     flow_message_subscription_rule r

               where s.subscription_id = r.subscription_id

                 and s.message_type = query_state_msg_type

                 and r.property_name = query_state_msg_prop

                 and r.property_value = cast( :new.bron_id as varchar2(100))

                 and rownum = 1) loop

    subscription_id := crs.subscription_id;

  end loop;

  if (subscription_id > -1) then

    -- если подписка есть, то выход

    return;

  end if;

 

  -- запись в заявку значения из :new

  update bronlin b

     set b.krossstatus = :new.KROSS_STATE_CODE

   where b.bronl_id = :new.bron_id;     

END TR_BRONLINBUSINESSINT_AU;

/

 

CREATE OR REPLACE TRIGGER TR_BRONLINBUSINESSINT_AI

  AFTER INSERT ON BRONLIN_BUSINESSINTERACTION

  FOR EACH ROW

declare

  query_state_msg_type varchar2(200) := 'RSNetGain.Technaric.RSFlowIntegration.Events.BronlinOrderGetKrossState, RSNetGain.Technaric.RSFlowIntegration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null';

  query_state_msg_prop varchar2(20) := 'BronlinId';

  subscription_id      pls_integer := -1;

BEGIN

  --проверить наличие подписки

  for crs in (select s.subscription_id

                from flow_message_subscription      s,

                     flow_message_subscription_rule r

               where s.subscription_id = r.subscription_id

                 and s.message_type = query_state_msg_type

                 and r.property_name = query_state_msg_prop

                 and r.property_value = cast( :new.bron_id as varchar2(100))

                 and rownum = 1) loop

    subscription_id := crs.subscription_id;

  end loop;

  if (subscription_id > -1) then

    -- если подписка есть, то выход

    return;

  end if;

 

  -- запись в заявку значения из :new

  update bronlin b

     set b.krossstatus = :new.KROSS_STATE_CODE

   where b.bronl_id = :new.bron_id;

END TR_BRONLINBUSINESSINT_AI;

/

 

CREATE OR REPLACE TRIGGER TR_BRONLINBUSINESSINT_AD

  AFTER DELETE ON BRONLIN_BUSINESSINTERACTION

  FOR EACH ROW

declare

  query_state_msg_type varchar2(200) := 'RSNetGain.Technaric.RSFlowIntegration.Events.BronlinOrderGetKrossState, RSNetGain.Technaric.RSFlowIntegration, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null';

  query_state_msg_prop varchar2(20) := 'BronlinId';

  subscription_id      pls_integer := -1;

 

  --ora-04091 - возникает если удаление спровоцировано удалением в bronlin

  table_mutating_error EXCEPTION;

  PRAGMA EXCEPTION_INIT(table_mutating_error, -04091);

BEGIN

  --проверить наличие подписки

  for crs in (select s.subscription_id

                from flow_message_subscription      s,

                     flow_message_subscription_rule r

               where s.subscription_id = r.subscription_id

                 and s.message_type = query_state_msg_type

                 and r.property_name = query_state_msg_prop

                 and r.property_value = cast( :old.bron_id as varchar2(100))

                 and rownum = 1) loop

    subscription_id := crs.subscription_id;

  end loop;

  if (subscription_id > -1) then

    -- если подписка есть, то выход

    return;

  end if;

 

  -- запись в заявку значения из :new

  update bronlin b

     set b.krossstatus = -1

   where b.bronl_id = :old.bron_id;

   EXCEPTION

   -- это ожидаемая ошибка

   WHEN table_mutating_error THEN null;

END TR_BRONLINBUSINESSINT_AD;

/

 

Таблица USERS_PARAMS

Настройки для пользователей

 

 

Имя поля

Тип поля

Описание

ID

NUMBER(10)

Внутренний идентификатор.

USER_ID

NUMBER(10)

Внутренний идентификатор пользователя

REGION_ID

NUMBER(10)

Внутренний идентификатор региона

PARAM_NAME

VARCHAR2(255)

Наименование параметра

PARAM_VALUE

XMLTYPE

Значение параметра

 

PARAM_VALUE_CLOB

CLOB

Значение параметра (временная замена поля PARAM_VALUE)

 

CORR_DATE

DATE

Дата последней корректировки записи таблицы

         

 

Версия 1.40.0.0

 

Создание таблицы:

 
-- Create table
create table USERS_PARAMS
(
  ID          NUMBER(10) not null,
  USER_ID     NUMBER(10) not null,
  REGION_ID   NUMBER(10) not null,
  PARAM_NAME  VARCHAR2(255) not null,
  PARAM_VALUE XMLTYPE default ('<?xml version="1.0" encoding="windows-1251"?><VALUE></VALUE>') not null,
  PARAM_VALUE_CLOB CLOB default ('<?xml version="1.0" encoding="windows-1251"?><VALUE></VALUE>') not null,
  CORR_DATE   DATE default sysdate
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64
    minextents 1
    maxextents unlimited
  );
-- Add comments to the table
comment on table USERS_PARAMS
  is '
Настройки для пользователей';
-- Add comments to the columns
comment on column USERS_PARAMS.ID
  is '
Уникальный внутренний идентификатор';
comment on column USERS_PARAMS.USER_ID
  is '
Уникальный внутренний идентификатор пользователь';
comment on column USERS_PARAMS.REGION_ID
  is '
Уникальный внутренний идентификатор региона';
comment on column USERS_PARAMS.PARAM_NAME
  is '
Наименование параметра';
comment on column USERS_PARAMS.PARAM_VALUE
  is '
Значение параметра';
comment on column USERS_PARAMS.PARAM_VALUE_CLOB
  is '
Значение параметра(временная замена поля PARAM_VALUE)';
comment on column USERS_PARAMS.CORR_DATE
  is '
Дата последней корректировки записи таблицы';

-- Create/Recreate primary, unique and foreign key constraints
alter table USERS_PARAMS
  add constraint PK_USERSPARAMS unique (ID);
 
  alter table USERS_PARAMS
  add constraint UQ_USERSPARAMS unique (USER_ID, REGION_ID, PARAM_NAME)
  using index
  tablespace INDX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
 
alter table USERS_PARAMS
  add constraint FK_USERSPARAMS111_REGION foreign key (REGION_ID)
  references REGIONS (REGION_ID) on delete cascade;
alter table USERS_PARAMS
  add constraint FK_USERSPARAMS111_UID foreign key (USER_ID)
  references USERS ("UID") on delete cascade;
-- Create/Recreate indexes
create bitmap index FK_USERSPARAMS_REGION on USERS_PARAMS (REGION_ID)
  tablespace INDX_BMP
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index FK_USERSPARAMS_UID on USERS_PARAMS (USER_ID)
  tablespace INDX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

-- Create sequence
create sequence GENUSERSPARAMS
minvalue 1
maxvalue 2147483647
start with 1
increment by 1
nocache;

 
CREATE OR REPLACE TRIGGER TR_USERS_PARAMS_BI
  BEFORE INSERT ON USERS_PARAMS
  FOR EACH ROW
BEGIN
  IF( :new."ID" IS NULL or :new."ID"<=0) THEN
    SELECT GENUSERSPARAMS.NEXTVAL INTO :new."ID" FROM Dual;
  END IF;
END TR_USERS_PARAMS_BI;

 

  Таблица  ABONENT

Карточки бюро ремонта

 

Имя поля

Тип поля

Описание

ABONENT_ID

NUMBER(10)

Идентификатор карточки БР.

NOMER

VARCHAR2(30)

Номер телефона, СЛ, НС и прочих типов нагрузки.

ABONTEXT

BLOB

Абонентские данные из АСКР

LIN_HISTORY

BLOB

История линейных данных

NAGR_ID

NUMBER(10)

Идентификатор нагрузки

 

TERMTYPE_ID

NUMBER(10)

Идентификатор типа нагрузки

 

ZONE_ID

NUMBER(10)

Идентификатор монтёрского участка, к которому приписана карточка

 

VIP

CHAR(1)

Признак абонента особой важности

 

AIR_VVOD

CHAR(1)

Признак наличия воздушного ввода

 

LINE_LEN

NUMBER(12,2)

Общая длина абонентской линии, м

 

IN_VILLAGE

CHAR(1)

Признак сельского абонента

 

NAGR_COMMENT

VARCHAR2(100)

Примечание к нагрузке

 

SPEC_COMMENT

VARCHAR2(100)

Специальное примечание

 

RED_MARK

VARCHAR2(100)

Примечание, выделенное красным цветом

 

BLUE_MARK

VARCHAR2(100)

Примечание, выделенное синим цветом

 

GREEN_MARK

VARCHAR2(100)

Примечание, выделенное зеленым цветом

 

BLACK_MARK

VARCHAR2(100)

Примечание, выделенное черным цветом

 

IZM_PROP

CHAR(1)

 

 

ATS_ID

NUMBER(10)

Объект класса «СК», к которому приписана карточки

 

REGION_ID

NUMBER(10)

Идентификатор региона карточки

 

ZONECODE_ID

NUMBER(10)

Идентификатор кода донабора нагрузки

 

CORR_DATE

DATE

Дата последнего изменения карточки

         

 

Пакет 0.40.0.0  (15.04.2010)

Удаление полей с параметрами абонентской линии

 

ALTER TABLE Abonent DROP COLUMN r_electro;

ALTER TABLE Abonent DROP COLUMN c_electro;

ALTER TABLE Abonent DROP COLUMN l_electro;

ALTER TABLE Abonent DROP COLUMN g_electro;

ALTER TABLE Abonent DROP COLUMN z_electro;

ALTER TABLE Abonent DROP COLUMN b_electro;

 

  Таблица  ADDRESS

Адреса объектов (оборудования и сооружений)

 

Имя поля

Тип поля

Описание

OBJ_ID

NUMBER(10)

Идентификатор объекта.

BUILD_ID

NUMBER(10)

Идентификатор дома.

ENTRANCE

VARCHAR2(4)

Номер подъезда

FLOOR

VARCHAR2(30)

Номер этажа

FLAT

VARCHAR2(30)

Номер квартиры

 

ORIENTIR

VARCHAR2(50)

Ориентир

 

CORR_DATE

DATE

Дата последнего изменения адреса

         

 

Пакет 0.40.0.0  (15.04.2010)

Увеличение размера полей

ALTER TABLE Address MODIFY floor VARCHAR2(30);

ALTER TABLE Address MODIFY flat VARCHAR2(30);

 

 Таблица  CLASSDOCS

Поля формуляров для типов объектов

 

Имя поля

Тип поля

Описание

DOCF_ID

NUMBER(10)

Идентификатор поля формуляра

 TYPE_ID

NUMBER(10)

Идентификатор типа объекта

DOCF_POS

NUMBER(10)

Порядок отображения поля в формуляре

CORR_DATE

DATE

Дата последнего изменения записи

IS_REQUIRED

CHAR(1)

Признак обязательности заполнения поля

DEFAULT_VALUE

VARCHAR2(30)

Значение по умолчанию

 

Пакет 0.40.0.0  (15.04.2010)

Добавление поля "Значение по умолчанию"

Значение по умолчанию можно задать для любого поля с типом "Строка",

"Логическое значение", "Целое число", "Действительное число", "Дата",

"Время", "Строка, выбранная из списка", "Число, выбранное из списка".

Значение по умолчанию может  быть различным для одного и того же поля в разных

типах объектов.

 

 

 

 

Таблица  GAMMA 

Соединения жил фрагментов кабелей между собой или с контакторами.

GAMMA_ID

NUMBER

 

 Id соединения

 

OBJFROM_ID

NUMBER

OBJNAMES (OBJ_ID)

Внутренний идентификатор объекта, от которого идет соединение

 

CONTFROM_NO

NUMBER

 

Внутренний номер контакта /провода объекта, от которого идет соединение

 

OBJTO_ID

NUMBER

OBJNAMES (OBJ_ID)

Внутренний идентификатор объекта, к которому идет соединение

 

CONTTO_NO

NUMBER

 

Внутренний номер контакта /провода объекта, к которому идет соединение

 

CORR_DATE

DATE

 

Момент времени последнего изменения данных

 

BIGOBJ_ID*

NUMBER

OBJNAMES (OBJ_ID)

Внутренний идентификатор объекта  (контейнера или муфты),  в котором находится соединение. (Совпадает с объектом, к которому подключения соединяемые объекты.)

             

 

 *Пакет 41_0_0

 Поле BIGOBJ_ID введено как избыточное с целью сократить  время построения цепочки и выполнения прочих операций, требующих определения внешнего объекта, содержащего соединение.

 

Таблица  SCHEMES

Схемы Рикографа

OBJ_ID

NUMBER

OBJNAMES (OBJ_ID)

 Id схемы

SCH_VERSION

NUMBER

 

Версия сохранения схемы

SCH_BLOB

BLOB

 

Данные схемы

GEO_FIXED

CHAR(1)

 

Признак геокодирования

GEO_TOP

NUMBER

 

Верхняя координата (У)

GEO_LEFT

NUMBER

 

Левая координата (Х)

CORR_DATE

DATE

 

Момент времени последнего изменения данных

EDITUSER_ID

NUMBER

USERS (UID)

Идентификатор пользователь, редактирующего схему

BAK_BLOB*

BLOB

 

Предыдущая копия схемы на момент последнего изменения

 

 *Поле добавлено в пакете 41_0_0.

 

 

 

 

Таблица FLOW_MESSAGE_SUBSCRIPTION

Хранение подписок для процессов.

 

Имя поля

Тип поля

Описание

SUBSCRIPTION_ID

NUMBER(10)

Внутренний идентификатор

 

INSTANCE_ID

VARCHAR2(36)

 GUID для процесса который ожидает сообщение.

 

MESSAGE_TYPE

VARCHAR2(400)

AssemblyQualifiedName типа события

 

SUBSCRIPTION_OBJECT_TYPE

VARCHAR2(400)

AssemblyQualifiedName типа подписки

 

QUEUE_NAME

VARCHAR2(400)

Имя очереди в процессе

 

SUBSCRIPTION_RULE

CLOB

Сериализованное правило (lambda-expression)

         

 

Версия 1.41.0.0

Создание таблицы в БД. Предназначена для хранения подписок процессов на события их внешних систем.

 

-- Create table

create table FLOW_MESSAGE_SUBSCRIPTION

(

  SUBSCRIPTION_ID          NUMBER(10) not null,

  INSTANCE_ID              VARCHAR2(36) not null,

  MESSAGE_TYPE             VARCHAR2(400) not null,

  SUBSCRIPTION_OBJECT_TYPE VARCHAR2(400) not null,

  QUEUE_NAME               VARCHAR2(400) not null,

  SUBSCRIPTION_RULE        CLOB not null

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

-- Add comments to the columns

comment on column FLOW_MESSAGE_SUBSCRIPTION.INSTANCE_ID

  is 'WF (GUID)';

comment on column FLOW_MESSAGE_SUBSCRIPTION.QUEUE_NAME

  is 'Имя очереди ';

comment on column FLOW_MESSAGE_SUBSCRIPTION.SUBSCRIPTION_RULE

  is 'lambda-expression';

-- Create/Recreate primary, unique and foreign key constraints

alter table FLOW_MESSAGE_SUBSCRIPTION

  add constraint UQ_FLOW_MESSAGE_SUBSCRIPTION primary key (SUBSCRIPTION_ID)

  using index

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

-- Grant/Revoke object privileges

grant select, insert, update, delete on FLOW_MESSAGE_SUBSCRIPTION to HUK_FADMUSER;

 

CREATE OR REPLACE TRIGGER TR_flow_message_BI

  BEFORE INSERT ON flow_message_subscription

  FOR EACH ROW

BEGIN

  IF( :new.subscription_id IS NULL ) THEN

   select GENFLOWmessage.NEXTVAL INTO :new.subscription_id from dual;

  END IF;

END TR_flow_message_BI;

/

-- Create sequence

create sequence GENFLOWMESSAGE

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

nocache;

 

 

Пакет 44.0.0

Поле SUBSCRIPTION_RULE становится обнуляемым.

 

alter table FLOW_MESSAGE_SUBSCRIPTION modify SUBSCRIPTION_RULE null;

 

 

Таблица FLOW_MESSAGE_SUBSCRIPTION_RULE

Правило подписки (набор выражений вида Свойство=Значеине, объединенных через логические И/ИЛИ). Группа выражений – объединение через И. Набор групп – группы выражений, объежиненные через ИЛИ.

 

Поле

ТТип

Описание

SUBSCRIPTION_ID

NUMBER(10)

Ссылка на подписку

 

RULE_GROUP_ID  

NUMBER(10)

Идентификатор группы выражений

 

RULES_CNT      

NUMBER(5)

Количество выражений в группе

 

PROPERTY_NAME  

VARCHAR2(100)

Имя свойства объекта сообщения

 

PROPERTY_VALUE 

VARCHAR2(100)

Значение свойства, которое ожидает это выражение подписки

         

 

Пакет 44.0.0

Создание таблицы

create table FLOW_MESSAGE_SUBSCRIPTION_RULE

(

  SUBSCRIPTION_ID NUMBER(10) not null,

  RULE_GROUP_ID   NUMBER(10) not null,

  RULES_CNT       NUMBER(5) not null,

  PROPERTY_NAME   VARCHAR2(100) not null,

  PROPERTY_VALUE  VARCHAR2(100) not null

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 16K

    minextents 1

    maxextents unlimited

  );

-- Create/Recreate primary, unique and foreign key constraints

alter table FLOW_MESSAGE_SUBSCRIPTION_RULE

  add constraint FK_SUBSCRS_SUBSCR_RULES foreign key (SUBSCRIPTION_ID)

  references FLOW_MESSAGE_SUBSCRIPTION (SUBSCRIPTION_ID) on delete cascade;

-- Create/Recreate indexes

create index INDX_SUBSCR_RULE_SUBSCR_ID on FLOW_MESSAGE_SUBSCRIPTION_RULE (SUBSCRIPTION_ID)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

 

Таблица BRONLIN

Таблица  заявок Технарика.

 

Имя поля

Тип поля

Описание

BRONL_ID

NUMBER(10)

Внутренний идентификатор.

 

BRONL_NAME

VARCHAR2(30)

Наименование заявки

 

ACCESS_ID

NUMBER(10)

Идентификатор доступа(ACCESS_IDS)

 

Z_STATE

NUMBER(10)

Код состояния заявки

 

REASON_ID

NUMBER(10)

Идентификатор основания приема заявки (BRONREASON)

 

WORKTYPE_ID

NUMBER(10)

Код типа работ

 

BRTYPE_ID

NUMBER(10)

Идентификатор типа брони(BRONTYPES)

 

DATE_FROM

DATE

Дата приема заявки

 

DATE_LIN

DATE

Дата бронирования линейных данных заявки

 

DATE_TO

DATE

Нормативная дата выполнения заявки

 

DATE_END

DATE

Дата выполнения заявки

 

NAGRNAME_OLD

VARCHAR2(30)

Старая нагрузка

 

NAGRTYPE_OLD

NUMBER(10)

Идентификатор типа старой нагрузки(TERMTYPES)

 

ABONNAME_OLD

VARCHAR2(60)

Старое наименование абонента

 

ABONADDR_OLD

VARCHAR2(150)

Старый адрес абонента

 

LIN_OLD

CLOB

Старые линейные данные

 

NAGRNAME_NEW

VARCHAR2(30)

Новая нагрузка

 

NAGRTYPE_NEW

NUMBER(10)

Идентификатор типа новой нагрузки(TERMTYPES)

 

ABONNAME_NEW

VARCHAR2(60)

Наименование абонента

 

LIN_NEW

CLOB

Старые линейные данные

 

BUILD1_ID

NUMBER(10)

Идентификатор первого  здания(BUILDINGS)

 

FLAT1

VARCHAR2(10)

Первая квартира

 

BUILD2_ID

NUMBER(10)

Идентификатор второго здания(BUILDINGS)

 

FLAT2

VARCHAR2(10)

Вторая квартира

 

COMMENT_INIT

VARCHAR2(150)

Примечание при приеме заявки

 

COMMENT_LIN

VARCHAR2(150)

Примечание при бронировании заявки

 

COMMENT_END

VARCHAR2(150)

Примечание при закрытии заявки

 

OBJ_ID

NUMBER(10)

Идентификатор оконечного устройства(OBJNAMES)

 

DENY_ID

NUMBER(10)

Идентификатор причины отказа(BRONDENY)

 

CORR_DATE

DATE

Дата последней корректировки

 

REGION_ID

NUMBER(10)

Идентификатор региона(REGIONS)

 

NARYAD_NAME

VARCHAR(30)

Наряд

 

DATE_BILL

DATE

Дата выписки наряда

 

COMMENT_BILL

VARCHAR2(150)

Примечание к наряду

 

ZONECODE_OLD

NUMBER(10)

Идентификатор старого зонового кода донабора(ZONECODES)

 

ZONECODE_NEW

NUMBER(10)

Идентификатор нового зонового кода донабора(ZONECODES)

 

USERINIT_ID

NUMBER(10)

Идентификатор принявшего заявку(USERS)

 

USERLIN_ID

NUMBER(10)

Идентификатор выполнившего бронирование(USERS)

 

USEREND_ID

NUMBER(10)

Идентификатор закрывшего заявку(USERS)

 

USERBILL_ID

NUMBER(10)

Идентификатор выписавшего наряд(USERS)

         

 

 

Создание таблицы BRONLIN  информация по заявкам технарика (41.2.0)

(

  BRONL_ID     NUMBER(10) not null,

  BRONL_NAME   VARCHAR2(30) not null,

  ACCESS_ID    NUMBER(10) default 1 not null,

  Z_STATE      NUMBER(10) default 0 not null,

  REASON_ID    NUMBER(10) not null,

  WORKTYPE_ID  NUMBER(10) default 1 not null,

  BRTYPE_ID    NUMBER(10) default 1 not null,

  DATE_FROM    DATE default SYSDATE not null,

  DATE_LIN     DATE ,

  DATE_TO      DATE ,

  DATE_END     DATE ,

  NAGRNAME_OLD VARCHAR2(30) default ' ' not null,

  NAGRTYPE_OLD NUMBER(10) default 1 not null,

  ABONNAME_OLD VARCHAR2(60),

  ABONADDR_OLD VARCHAR2(60),

  LIN_OLD      CLOB ,

  NAGRNAME_NEW VARCHAR2(30) default ' ' not null,

  NAGRTYPE_NEW NUMBER(10) default 1 not null,

  ABONNAME_NEW VARCHAR2(60) not null,

  LIN_NEW      CLOB ,

  BUILD1_ID    NUMBER(10) default 1 not null,

  FLAT1        VARCHAR2(10) default ' ' not null,

  BUILD2_ID    NUMBER(10) default 1 not null,

  FLAT2        VARCHAR2(10) default ' ' not null,

  COMMENT_INIT VARCHAR2(150) default ' ' not null,

  COMMENT_LIN  VARCHAR2(150) default ' ' not null,

  COMMENT_END  VARCHAR2(150) default ' ' not null,

  OBJ_ID       NUMBER(10) default 1 not null,

  DENY_ID      NUMBER(10) default -1 not null,

  CORR_DATE    DATE default SYSDATE not null,

  REGION_ID    NUMBER(10) default 1 not null,

  NARYAD_NAME  VARCHAR2(30) default ' ' not null,

  DATE_BILL    DATE ,

  COMMENT_BILL VARCHAR2(150),

  ZONECODE_OLD NUMBER(10) not null,

  ZONECODE_NEW NUMBER(10) not null,

  USERINIT_ID  NUMBER(10) default -1 not null,

  USERLIN_ID   NUMBER(10) default -1 not null,

  USEREND_ID   NUMBER(10) default -1 not null,

  USERBILL_ID  NUMBER(10) default -1 not null

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 64

    minextents 1

    maxextents unlimited

  );

-- Create/Recreate primary, unique and foreign key constraints

alter table BRONLIN

  add constraint PK_BRONLIN primary key (BRONL_ID)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table BRONLIN

  add constraint UQ_BRONLIN unique (BRONL_NAME, REGION_ID)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table BRONLIN

  add constraint FK_BRONLIN_ACCESSIDS foreign key (ACCESS_ID)

  references ACCESS_IDS (ACCESS_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_BRONDENY foreign key (DENY_ID)

  references BRONDENY (DENY_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_BRONREASON foreign key (REASON_ID)

  references BRONREASON (REASON_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_BRONTYPES foreign key (BRTYPE_ID)

  references BRONTYPES (BRTYPE_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_BUILDINGS1 foreign key (BUILD1_ID)

  references BUILDINGS (BUILD_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_BUILDINGS2 foreign key (BUILD2_ID)

  references BUILDINGS (BUILD_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_OBJNAMES foreign key (OBJ_ID)

  references OBJNAMES (OBJ_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_REGIONS foreign key (REGION_ID)

  references REGIONS (REGION_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_TERMTYPES_NEW foreign key (NAGRTYPE_NEW)

  references TERMTYPES (TERMTYPE_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_TERMTYPES_OLD foreign key (NAGRTYPE_OLD)

  references TERMTYPES (TERMTYPE_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_USERS1 foreign key (USERINIT_ID)

  references USERS (UID);

alter table BRONLIN

  add constraint FK_BRONLIN_USERS2 foreign key (USERLIN_ID)

  references USERS (UID);

alter table BRONLIN

  add constraint FK_BRONLIN_USERS3 foreign key (USEREND_ID)

  references USERS (UID);

alter table BRONLIN

  add constraint FK_BRONLIN_USERS4 foreign key (USERBILL_ID)

  references USERS (UID);

alter table BRONLIN

  add constraint FK_BRONLIN_ZONECODES_NEW foreign key (ZONECODE_NEW)

  references ZONECODES (ZONECODE_ID);

alter table BRONLIN

  add constraint FK_BRONLIN_ZONECODES_OLD foreign key (ZONECODE_OLD)

  references ZONECODES (ZONECODE_ID);

-- Create/Recreate check constraints

alter table BRONLIN

  add check (Z_STATE IN (0,1,2,3));

-- Create/Recreate indexes

create bitmap index FK_BRONLIN_ACCESSIDS on BRONLIN (ACCESS_ID)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create bitmap index FK_BRONLIN_BRONDENY on BRONLIN (DENY_ID)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create bitmap index FK_BRONLIN_BRONREASON on BRONLIN (REASON_ID)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create bitmap index FK_BRONLIN_BRONTYPES on BRONLIN (BRTYPE_ID)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create index FK_BRONLIN_BUILDINGS1 on BRONLIN (BUILD1_ID)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create index FK_BRONLIN_BUILDINGS2 on BRONLIN (BUILD2_ID)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  )

  compress;

create index FK_BRONLIN_OBJNAMES on BRONLIN (OBJ_ID)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  )

  compress;

create bitmap index FK_BRONLIN_REGIONS on BRONLIN (REGION_ID)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create bitmap index FK_BRONLIN_TERMTYPES_NEW on BRONLIN (NAGRTYPE_NEW)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create bitmap index FK_BRONLIN_TERMTYPES_OLD on BRONLIN (NAGRTYPE_OLD)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create index FK_BRONLIN_USERS1 on BRONLIN (USERINIT_ID)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  )

  compress;

create index FK_BRONLIN_USERS2 on BRONLIN (USERLIN_ID)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  )

  compress;

create index FK_BRONLIN_USERS3 on BRONLIN (USEREND_ID)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  )

  compress;

create index FK_BRONLIN_USERS4 on BRONLIN (USERBILL_ID)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  )

  compress;

create bitmap index FK_BRONLIN_ZONECODES_NEW on BRONLIN (ZONECODE_NEW)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create bitmap index FK_BRONLIN_ZONECODES_OLD on BRONLIN (ZONECODE_OLD)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create index I_BRONLIN_ABONNEW on BRONLIN (ABONNAME_NEW)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create index I_BRONLIN_ABONOLD on BRONLIN (ABONNAME_OLD)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create index I_BRONLIN_DATEFROM on BRONLIN (DATE_FROM)

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create bitmap index I_BRONLIN_STATE on BRONLIN (Z_STATE)

  tablespace INDX_BMP

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

 

Пакет 42.0.0

В пакете 42.0.0 в таблицу BRONLIN добавлено поле KROSSSTATUS тип NUMBER(10) - состояние заявки на кроссе:

DECLARE

  n PLS_INTEGER;

BEGIN

  SELECT COUNT(1)

    INTO n

    FROM User_tab_columns

   WHERE table_name='BRONLIN' AND column_name='KROSSSTATUS';

 

  IF (n=0) THEN

    EXECUTE IMMEDIATE 'ALTER TABLE Bronlin ADD krossstatus NUMBER(10) DEFAULT -1 NOT NULL';

  END IF;

 

  SELECT COUNT(1)

    INTO n

    FROM User_indexes

   WHERE table_name='BRONLIN' AND index_name='I_BRONLIN_KROSSSTATUS';

 

  IF (n=0) THEN

    PR_EXEC_DDL(

'CREATE BITMAP INDEX I_BRONLIN_KROSSSTATUS ON BRONLIN (KROSSSTATUS)'||

'  TABLESPACE %INDX_BMP%','TABLESPACE_INDX_BMP');

  END IF;

 

  SELECT COUNT(1)

    INTO n

    FROM User_indexes

   WHERE table_name='BRONLIN' AND index_name='I_BRONLIN_WORKTYPE';

 

  IF (n=0) THEN

    PR_EXEC_DDL(

'CREATE BITMAP INDEX I_BRONLIN_WORKTYPE ON BRONLIN (WORKTYPE_ID)'||

'  TABLESPACE %INDX_BMP%','TABLESPACE_INDX_BMP');

  END IF;

 

END;

/

  ТаблицаTEST_NAKL_CAB -

Результаты теста «Накладки по кабелю»

 

№ п.п.

Имя поля

Тип поля

Описание

1

LNAGRNAMELIST

CLOB

Список нагрузки с одного конца кабельной связи

2

RNAGRNAMELIST

CLOB

Список нагрузки с другого конца кабельной связи

 

3

GROUP_ID

NUMBER(10)

Идентификатор кабельной связи

 

4

OFFSET

NUMBER(10)

Номер пары (смещение) в кабельной связи

 

5

IS_CORRECTED

CHAR(1)

Признак исправления накладки

 

6

COMMENTS

VARCHAR2(100)

Примечание

             

Пакет 0.41.2.0 (09.2010)

Добавление полей IS_CORRECTED, COMMENTS:

ALTER TABLE Test_nakl_cab ADD IS_CORRECTED CHAR(1) DEFAULT 'F';

UPDATE Test_nakl_cab SET is_corrected='F';

ALTER TABLE Test_nakl_cab MODIFY is_corrected NOT NULL;

ALTER TABLE Test_nakl_cab

  ADD CONSTRAINT CH_TESTNAKLCAB_CORRECTED CHECK (is_corrected IN ('F','T'));

ALTER TABLE Test_nakl_cab ADD COMMENTS VARCHAR2(100);

 

Хранимая процедура PR_SOAP_ACCEPT_ORDER (14.09.2010)

CREATE OR REPLACE FUNCTION PR_SOAP_ACCEPT_ORDER(

    NDEPID pls_integer,

    CORDERID varchar2,

    CORDERER varchar2,

    NBUILD1 pls_integer,

    CFLAT1 varchar2,

    NBUILD2 pls_integer,

    CFLAT2 varchar2,

    CADDR_OLD varchar2,

    NACTIVITYTYPE pls_integer,

    CREQEQUIPNO varchar2,

    NREQZONEID pls_integer,

    NREQCONNTYPE pls_integer,

    nReqEquipmentType pls_integer,

    CPREVEQUIPNO varchar2,

    NPREVZONEID pls_integer,

    NPREVCONNTYPE pls_integer,

    nPrevEquipmentType pls_integer,

    CREMARKS varchar2,

    cAssignmentNo varchar2,

    dtAssignmentDate date,

    cAssignmentRemarks varchar2,

    nUserId pls_integer)

RETURN VARCHAR2

AS

  nFullNumberLength PLS_INTEGER:=10;

  cPref varchar2(5) := 'askr_'; --префикс для заявок из АСКР

  nRegion integer;

  cBrName varchar2(30);

  nWorktype integer;

  NNEWZONE integer;

  NNEWTERMTYPE integer;

  NOLDZONE integer;

  NOLDTERMTYPE integer;

  CNEWABONNAME varchar2(60);

  CCOMMENT varchar2(150);

  NBRID integer;

  NREASON integer := -1;  --принято авт. системой

  nInitialState integer := 0; --заявка принята на обработку

 

  Z_STATE integer;

  WORKTYPE_ID  integer;

  NAGRNAME_OLD varchar2(30);

  NAGRTYPE_OLD integer;

  NAGRNAME_NEW  varchar2(30);

  NAGRTYPE_NEW integer;

  BUILD1_ID integer;

  FLAT1  varchar2(6);

  BUILD2_ID integer;

  FLAT2 varchar2(6);

  ZONECODE_OLD integer;

  ZONECODE_NEW integer;

 

  ABONNAME_NEW varchar2(60);

  COMMENT_INIT varchar2(150);

  ADDR_OLD varchar2(60);

  nUserInitOld integer;

 

    -- сигнал о том, что параметр (зона или тип нагрузки) не распознаны

    -- и приняли значение по умолчанию

    -- на данном этапе необходимо для установки СУС

  lUnknownNewParams boolean := false;

 

  Result varchar2(255);

 

    -- константы

    -- вид работы "установка"

  constInstalation integer := 1;

    -- "перенос"

  constOffset integer := 2;

    -- "замена"

  constReplacement integer := 3;

    -- "установка прямой связи"

  constDirectLink integer := 4;

    -- "снятие"

  constRemoval integer := 5;

    -- "установка СУС"

  constInstalationSUS integer := 6;

 

 

    -- тип нагрузки СУС

  constTermtypeSUS integer := 3;

    -- неопределенное строение (и адрес)

  constUnknownBulding integer := 1;

BEGIN

  FOR crs IN (SELECT strtointdef(opt_value,10) n FROM Options WHERE opt_name='FULL_NUMBER_LENGTH' AND region_id=1) LOOP

    nFullNumberLength:=crs.n;

  END LOOP;

  cBrName := cPref || cOrderId;

 

  --преобразования "стандарт -> внутр"

    --подразделение -> регион

  nRegion := null;

  for crs in (select stdx.int_id region_id from stdx_departments stdx

               where stdx.std_id = NDEPID) loop

    nRegion := crs.region_id;

  end loop;

  if (nRegion is null) then

    Result := '1' || localtext('Не идентифицировано подразделение') || ': ' || nDepId;

    return result;

  end if;

    --тип заявления -> вид работ

  nWorkType := null;

  for crs in (select stdx.int_id worktype_id from stdx_typeofstatement stdx

        where stdx.std_id = NACTIVITYTYPE) loop

    nWorkType := crs.worktype_id;

  end loop;

  if (nWorkType is null) then

    Result := '1' || localtext('Не идентифицирован тип заявления') || ': ' || nActivityType;

    return result;

  end if;

    --желаемая зона. -1-ца обработается автоматом

  nNewZone := null;

  for crs in (select stdx.int_id zonecode_id from stdx_zonecodes stdx

    where stdx.std_id = nReqZoneId) loop

    nNewZone := crs.zonecode_id;

  end loop;

    --не нашли - какой-нибудь: в начале до nFullNumberLength-значки, а потом - умолчательный

  if (nNewZone is null) then

    --lUnknownNewParams := true;

 

 

 

 

    for crs in (

        select zonecode_id from

        (

         select 1, zonecode_id from (select z.zonecode_id from zonecodes z, regionxzonecodes rz

               where z.zonecode_id = rz.zonecode_id and rz.region_id = nRegion and length(z.zonecode_name||cReqEquipNo) = nFullNumberLength

               order by rz.default_zonecode desc)

         union

         select 2, z.zonecode_id from zonecodes z, regionxzonecodes rz

               where z.zonecode_id = rz.zonecode_id and rz.region_id = nRegion and rz.default_zonecode = 'T'

         order by 1 asc

         )

         where rownum = 1

     ) loop

        nNewZone := crs.zonecode_id;

    end loop;

  end if;

  if (nNewZone is null) then

    Result := '1' || localtext('Не идентифицирован зоновый код (желаемый)') || ': ' || nReqZoneId;

    return result;

  end if;

    --предыдущая зона. -1-ца обработается автоматом

  nOldZone := null;

  for crs in (select stdx.int_id zonecode_id from stdx_zonecodes stdx

    where stdx.std_id = nPrevZoneId) loop

    nOldZone := crs.zonecode_id;

  end loop;

    --не нашли - какой-нибудь: в начале до nFullNumberLength-значки, а потом - умолчательный

  if (nOldZone is null) then

    for crs in (

        select zonecode_id from

        (

         select 1, zonecode_id from (select z.zonecode_id from zonecodes z, regionxzonecodes rz

               where z.zonecode_id = rz.zonecode_id and rz.region_id = nRegion and length(z.zonecode_name||cPrevEquipNo) = nFullNumberLength

               order by rz.default_zonecode desc)

         union

         select 2, z.zonecode_id from zonecodes z, regionxzonecodes rz

               where z.zonecode_id = rz.zonecode_id and rz.region_id = nRegion and rz.default_zonecode = 'T'

         order by 1 asc

         )

         where rownum = 1

    ) loop

      nOldZone := crs.zonecode_id;

    end loop;

  end if;

  if (nOldZone is null) then

    Result := '1' || localtext('Не идентифицирован зоновый код (предыдущий)') || ': ' || nPrevZoneId;

        return result;

  end if;

 

    --желаемай тип нагрузки

  nNewTermType := 1; --значение по-умолчанию

  for crs in (select stdx.int_id from stdx_typeofhookup stdx

    where stdx.std_id = nReqConnType and stdx.std_typeofequip_id = nReqEquipmentType) loop

        nNewTermType := crs.int_id;

  end loop;

  if nNewTermType = 1 then

    lUnknownNewParams := true;

  end if;

    --предыдущий тип нагрузки

  nOldTermType := 1; --значение по-умолчанию

  for crs in (select stdx.int_id from stdx_typeofhookup stdx

    where stdx.std_id = nPrevConnType and stdx.std_typeofequip_id = nPrevEquipmentType) loop

                nOldTermType := crs.int_id;

  end loop;

    -- пока первые 50 из 250

  cComment := substr(cRemarks, 1, 150);

    -- пока первые 60 из 160

  cNewAbonName := substr(cOrderer, 1, 60);

 

 

    -- анализ и обработка контекста на вид работ "установка прямой связи"

  if (nWorktype = constInstalation) and

     (NBUILD1 <> constUnknownBulding) and (NBUILD2 <> constUnknownBulding) then

    nWorktype := constDirectLink;

  else

      -- анализ и обработка контекста на вид работ "установка СУС"

    if (not lUnknownNewParams) and (nWorktype = constInstalation) and

       (NNEWTERMTYPE = constTermtypeSUS) and (not CREQEQUIPNO is null) then

        -- поиск соответствующего плеча среди сущ. нагрузок

      for crs in (

        select n.nagr_id

             from nagr n,

             (select strtointdef(CREQEQUIPNO, -1) safeNumber  from dual) sn

            where sn.safeNumber <> -1 and n.region_id = nRegion and n.zonecode_id = NNEWZONE and

            n.termtype_id = NNEWTERMTYPE and

                (n.nagr_name) = to_char(sn.safeNumber - n.block_shift)

                ) loop

          -- если есть это плечо

        for crs2 in (

          select nagr_id from feedpoints where nagr_id = crs.nagr_id

            union

          select nagr_id from linenagr where nagr_id = crs.nagr_id

            union

          select nagr_id from abonpoints where nagr_id = crs.nagr_id

        ) loop

            -- и у него есть лин. данные

            -- то вид работ "установка СУС"

          nWorktype := constInstalationSUS;

          exit;

        end loop;

        exit;

      end loop;

 

      /*поиск соотв. плеча среди забронированных заявлений*/

      --если в bronlin есть забронированная заявка для первого плеча

      for crs in (select n.nagr_id

        from nagr n,

       (select strtointdef(CREQEQUIPNO, -1) safeNumber from dual) sn,

       bronlin b

        where sn.safeNumber <> -1

           and n.region_id = nRegion

           and n.zonecode_id = NNEWZONE

           and n.termtype_id = NNEWTERMTYPE

           and (n.nagr_name) = to_char(sn.safeNumber - n.block_shift)

           and b.z_state <> 3 and b.nagrname_new = n.nagr_name and b.nagrtype_new = n.termtype_id

           and b.zonecode_new = n.zonecode_id and b.region_id = n.region_id and b.worktype_id in (constInstalation, constInstalationSUS)) loop

           -- то вид работ "установка СУС"

          nWorktype := constInstalationSUS;

          exit;

      end loop;

 

    end if;

  end if;

    --заявка и ее параметры

  nBrId := null;

  for crs in (select b.bronl_id, b.z_state, b.worktype_id, b.nagrname_old, b.nagrtype_old, b.nagrname_new,

         b.nagrtype_new, b.build1_id, b.flat1, b.build2_id, b.flat2, b.abonaddr_old, b.zonecode_old,

         b.zonecode_new, b.abonname_new, b.comment_init, b.userinit_id

        from bronlin b where b.region_id = nRegion and b.bronl_name = cBrName) loop

 

    nbrid := crs.bronl_id; Z_STATE := crs.z_state; WORKTYPE_ID := crs.worktype_id;

    NAGRNAME_OLD := crs.nagrname_old; NAGRTYPE_OLD := crs.nagrtype_old; NAGRNAME_NEW := crs.nagrname_new;

    NAGRTYPE_NEW := crs.nagrtype_new; BUILD1_ID := crs.build1_id; FLAT1 := crs.flat1;

    BUILD2_ID := crs.build2_id; FLAT2 := crs.flat2; ZONECODE_OLD := crs.zonecode_old;

    ZONECODE_NEW := crs.zonecode_new; ABONNAME_NEW := crs.abonname_new; COMMENT_INIT := crs.comment_init;

    ADDR_OLD := crs.abonaddr_old; nUserInitOld := crs.userinit_id;

  end loop;

    --если такой заявки нет

  if (nBrId is null) then

    insert into bronlin

    (BRONL_NAME, Z_STATE, REASON_ID, WORKTYPE_ID, NAGRNAME_OLD, NAGRTYPE_OLD,

     NAGRNAME_NEW, NAGRTYPE_NEW, ABONNAME_NEW, BUILD1_ID, FLAT1, BUILD2_ID, FLAT2,

     abonaddr_old, COMMENT_INIT, REGION_ID, ZONECODE_OLD, ZONECODE_NEW, userinit_id)

    values

    (cBrName, nInitialState, nreason, nworktype, NVL(cprevequipno, ' '), noldtermtype,

     NVL(creqequipno, ' '), nnewtermtype, NVL(cnewabonname, ' '), nbuild1, NVL(cflat1, ' '), nbuild2, NVL(cflat2, ' '),

     CADDR_OLD, NVL(ccomment, ' '), nregion, noldzone, nnewzone, nUserId)

     returning bronl_id into nBrId;

 

    update bronlin b set

        b.naryad_name = NVL(cAssignmentNo, ' '),

    b.userbill_id = nUserId,

    b.comment_bill = NVL(substr(cAssignmentRemarks, 1, 150), ' '),

                   -- если имя наряда непустое, а дата отсутствует - то берем текущую, иначе - исп. полученную дату

    b.date_bill =

      (case

        when (not Trim(CASSIGNMENTNO) is null) and (dtAssignmentDate is null) then sysdate

        else dtAssignmentDate

      end)

    where b.bronl_id = nBrId;

 

    Result := '0' || localtext('Заявление принято');

    return result;

  end if;

    --если заявка выполнена полностью

  if (z_state in (3, 4)) then

    Result := '1' || localtext('Данное заявление уже находится в выполненном состоянии');

    return result;

  end if;

    --надо сбрасывать состояние заявки:1

  if (WORKTYPE_ID <> NWORKTYPE or NAGRNAME_OLD||' ' <> cPrevEquipNo||' ' or

      NAGRTYPE_OLD <> nOldTermType or NAGRNAME_NEW||' ' <> cReqEquipNo||' ' or

      NAGRTYPE_NEW <> nNewTermType or  BUILD1_ID <> nBuild1 or FLAT1||' ' <> cFlat1||' ' or

      BUILD2_ID <> nBuild2 or FLAT2||' ' <> cFlat2||' ' or

      ZONECODE_OLD <> nOldZone or ZONECODE_NEW <> nNewZone or ADDR_OLD||' ' <> CADDR_OLD||' ') then

          -- удаляем (в триггере - убираются хвосты)

    delete from bronlin b where b.bronl_id = nbrid;

      -- с новыми параметрами

    insert into bronlin

    (BRONL_NAME, Z_STATE, REASON_ID, WORKTYPE_ID, NAGRNAME_OLD, NAGRTYPE_OLD,

     NAGRNAME_NEW, NAGRTYPE_NEW, ABONNAME_NEW, BUILD1_ID, FLAT1, BUILD2_ID, FLAT2,

     abonaddr_old, COMMENT_INIT, REGION_ID, ZONECODE_OLD, ZONECODE_NEW, userinit_id)

    values

    (cBrName, nInitialState, nreason, nworktype, NVL(cprevequipno, ' '), noldtermtype,

     NVL(creqequipno, ' '), nnewtermtype, NVL(cnewabonname, ' '), nbuild1, NVL(cflat1, ' '), nbuild2, NVL(cflat2, ' '),

     CADDR_OLD, NVL(ccomment, ' '), nregion, noldzone, nnewzone, nUserId)

     returning bronl_id into nBrId;

 

    update bronlin b set

        b.naryad_name = NVL(cAssignmentNo, ' '),

    b.userbill_id = nUserId,

    b.comment_bill = nvl(substr(cAssignmentRemarks, 1, 150), ' '),

                   -- если имя наряда непустое, а дата отсутствует - то берем текущую, иначе - исп. полученную дату

    b.date_bill =

      (case

        when (not Trim(CASSIGNMENTNO) is null) and (dtAssignmentDate is null) then sysdate

        else dtAssignmentDate

      end)

    where b.bronl_id = nBrId;

 

    Result := '0' || localtext('Заявление с данным идентификатором перерегистрировано');

    return result;

  end if;

 

    --просто изменить значения нек. полей

  if (ABONNAME_NEW||' ' <> cNewAbonName||' ' or COMMENT_INIT||' ' <> cComment||' '

      or nUserId <> nUserInitOld) then

    update bronlin b set b.abonname_new = NVL(cNewAbonName, ' '), b.comment_init = NVL(cComment, ' '),

                     b.userinit_id = nUserId

      where b.bronl_id = nbrid;

    Result := '0' || localtext('Атрибуты заявления обновлены');

    return result;

  end if;

 

  update bronlin b set

        b.naryad_name = NVL(cAssignmentNo, ' '),

    b.userbill_id = nUserId,

    b.comment_bill = NVL(substr(cAssignmentRemarks, 1, 150), ' ' ),

                   -- если имя наряда непустое, а дата отсутствует - то берем текущую, иначе - исп. полученную дату

    b.date_bill =

      (case

        when (not Trim(CASSIGNMENTNO) is null) and (dtAssignmentDate is null) then sysdate

        else dtAssignmentDate

      end)

    where b.bronl_id = nBrId;

 

  Result := '0' || localtext('Параметры заявления не изменились');

  return result;

END;

/

 

Хранимая процедураPR_SOAP_EXECUTE_ASSIGNMENT (14.09.2010)

CREATE OR REPLACE FUNCTION PR_SOAP_EXECUTE_ASSIGNMENT(

    NDEPID pls_integer,

    CORDERID varchar2,

    NACTIVITYTYPE pls_integer,

    CEQUIPNO varchar2,

    NZONEID pls_integer,

    NCONNTYPE pls_integer,

    nEquipmentType pls_integer,

    CASSIGNMENTNO varchar2,

    dtAssignmentDate date,

    CREMARKS varchar2,

    nUserId pls_integer)

RETURN VARCHAR2

as

  CPREF varchar2(5);

  nBrId pls_integer;

  nRegion pls_integer;

  nWorkType pls_integer;

  nTermType pls_integer;

  nZoneCode pls_integer;

  CBRNAME varchar2(30);

 

  WORKTYPE_ID pls_integer;

  NAGR_NAME varchar2(30);

  ZONECODE_ID pls_integer;

  TERMTYPE_ID pls_integer;

  NAR_NAME varchar2(30);

 

  result varchar2(255);

begin

  cPref := 'askr_'; --и префикс для таких заявок

  cBrName := cPref || cOrderId;

 

  --преобразования "стандарт -> внутр"

    --подразделение -> регион

  nRegion := null;

  for crs in (select stdx.int_id from stdx_departments stdx

    where stdx.std_id = NDEPID) loop

    NREGION := crs.int_id;

  end loop;

 

  if (nRegion is null) then

    Result := '1' || localtext('Не идентифицировано подразделение') || ': ' || nDepId;

    return result;

  end if;

 

  -- ищем заявление

  nBrId := null;

  for crs in (select b.bronl_id, b.worktype_id, b.nagrname_new, b.zonecode_new, b.nagrtype_new, b.naryad_name

    from bronlin b where b.region_id = nRegion and b.bronl_name = cBrName) loop

    nBrId := crs.bronl_id;

    WORKTYPE_ID := crs.worktype_id;

    NAGR_NAME := crs.nagrname_new;

    ZONECODE_ID := crs.zonecode_new;

    TERMTYPE_ID := crs.nagrtype_new;

    NAR_NAME := crs.naryad_name;

  end loop;

    -- не нашли - выходим

  if (nBrId is null) then

    Result := '1' || localtext('Заявление с данным идентификатором не зарегистрировано');

    return result;

  end if;

 

    --тип заявления -> вид работ

  nWorkType := null;

  for crs in (select stdx.int_id from stdx_typeofstatement stdx

    where stdx.std_id = NACTIVITYTYPE) loop

    nWorkType := crs.int_id;

  end loop;

  if (nWorkType is null) then

    Result := '1' || localtext('Не идентифицирован тип заявления') || ': ' || nActivityType;

    return result;

  end if;

 

    --зоновый код

  if (NZONEID <> -1) then

    nZoneCode := null;

    for crs in (select stdx.int_id from stdx_zonecodes stdx

      where stdx.std_id = nZoneId) loop

      nZoneCode := crs.int_id;

    end loop;

    if (nZoneCode is null) then

      Result := '1' || localtext('Не идентифицирован зоновый код') || ': ' || nZoneId;

      return result;

    end if;

  else

    nZoneCode := ZONECODE_ID;

  end if;

 

    -- способ подключения

  nTermType := null; --значение по-умолчанию

  for crs in (select stdx.int_id from stdx_typeofhookup stdx

    where stdx.std_id = nConnType and stdx.std_typeofequip_id = nEquipmentType) loop

    nTermType := crs.int_id;

  end loop;

  if (nTermType is null) then

    Result := '1' || localtext('Не идентифицирован способ подключения') || ': ' || nConnType;

    return result;

  end if;

 

 

 

  /*if (WORKTYPE_ID <> nWorkType) then

    Result := '1' || localtext('Не совпадают атрибуты заявления и наряда: вид работ');

    return result;

  end if;*/

  /*

  if (NAGR_NAME <> cEquipNo) then

    Result := '1' || 'Не совпадают атрибуты заявления и наряда: ' || 'имя нагрузки.';

    return result;

  end if;

  if (ZONECODE_ID <> nZoneCode) then

    Result := '1' || 'Не совпадают атрибуты заявления и наряда: ' || 'зоновый код.';

    return result;

  end if;

  if (TERMTYPE_ID <> nTermType) then

    Result := '1' || 'Не совпадают атрибуты заявления и наряда: ' || 'способ подключения.';

    return result;

  end if;

  */

 

  update bronlin b set

        b.naryad_name = NVL(CASSIGNMENTNO, ' '),

    b.nagrname_new = NVL(Trim(CEQUIPNO), ' '),

    b.zonecode_new = nZoneCode,

    b.nagrtype_new = nTermType,

    b.userbill_id = nUserId,

    b.comment_bill = nvl(substr(CREMARKS, 1, 30), ' '),

                   -- если имя наряда непустое, а дата отсутствует - то берем текущую, иначе - исп. полученную дату

    b.date_bill =

      (case

        when (not Trim(CASSIGNMENTNO) is null) and (dtAssignmentDate is null) then sysdate

        else dtAssignmentDate

      end)

    where b.bronl_id = nBrId;

  if (NAR_NAME <> CASSIGNMENTNO and not trim(NAR_NAME) is null) then

    Result := '0' || localtext('Наряд принят. Перерегистрировано имя предыдущего наряда');

  else

    Result := '0' || localtext('Наряд принят');

  end if;

  return result;

end;

  Таблица OBJCOORP - Объекты генерального плана

 

№ п.п.

Имя поля

Тип поля

Описание

1

OBJ_ID

NUMBER(10)

Идентификатор объекта

2

GEOLOCWGS84

MDSYS.SDO_GEOMETRY

Координаты объекта в системе координат WGS84

 

3

GEOLOCNONEARTH

MDSYS.SDO_GEOMETRY

Координаты объекта в системе координат Non-Earth (meters)

 

4

ORDER_NO

VARCHAR2(1024)

Характеристика точек излома для протяжённых объектов

 

5

CORR_DATE

DATE

Дата последней корректировки данных

             

 

Структура типа MDSYS.SDO_GEOMETRY:

SDO_GTYPE 

NUMBER

тип геом. примитива - 2001 или 2002   NOT NULL

SDO_SRID

NUMBER

идентификатор системы координат

262148 для NONEARTH

8307 для WGS84

может быть и NULL

SDO_POINT

SDO_POINT_TYPE

x ,y координаты или NULL

SDO_ELEM_INFO

SDO_ELEM_INFO_ARRAY

одномерный массив непустой/не NULL

различные атрибуты (тип и т.д.) геометрического примитива

SDO_ORDINATES

SDO_ORDINATE_ARRAY

одномерный массив непустой/не NULL

(x,y,z) пространственные координаты всех точек геометрического примитива

 

 

1.42.1.0 (25.11.2010)

Таблица RBS_TYPES – Хранение сконструированных для системы отчтености справочников

 

№ п.п.

Имя поля

Тип поля

Описание

1

ID

NUMBER(10)

Идентификатор типа

2

NAME

VARCHAR2(100)

Имя типа

3

READONLY

CHAR(1)

Является ли сиситемным

4

DESCRIPTION

VARCHAR2(255)

Описание типа

5

SQL

CLOB

SQL-запрос реализующий тип

6

DBTYPE

VARCHAR2(255)

Тип значения поля Id из SQL-запроса

7

AKA

VARCHAR2(50)

Уникальная метка типа

         

 

create table RBS_TYPES

(

  ID          NUMBER(10) not null,

  NAME        VARCHAR2(100) not null,

  READONLY    CHAR(1) default 'F' not null,

  DESCRIPTION VARCHAR2(255),

  SQL         CLOB,

  DBTYPE      VARCHAR2(255) not null,

  AKA         VARCHAR2(50) not null

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 64

    minextents 1

    maxextents unlimited

  );

-- Add comments to the table

comment on table RBS_TYPES

  is 'Таблица для хранения типов системы отчетности';

-- Create/Recreate primary, unique and foreign key constraints

alter table RBS_TYPES

  add constraint PK_RBS_TYPES_ID primary key (ID)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table RBS_TYPES

  add constraint UK_RBS_TYPES_AKA unique (AKA)

  using index

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table RBS_TYPES

  add constraint UK_RBS_TYPES_NAME unique (NAME)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

-- Create/Recreate check constraints

alter table RBS_TYPES

  add constraint CH_RBS_TYPES_READONLY

  check (readonly in('F','T'));

 

 

-- Create sequence

create sequence GENRBSTYPES

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

nocache;

 

-- Create TRIGGER

CREATE OR REPLACE TRIGGER TR_RBSTYPES_BI

  BEFORE INSERT ON RBS_TYPES

  FOR EACH ROW

BEGIN

  IF( :new.ID IS NULL ) THEN

    SELECT GENRBSTYPES.NEXTVAL INTO :new.ID FROM Dual;

  END IF;

END TR_RBSTYPES_BI;

 

 Таблица RBS_REALTYPES – Хранение параметров для сконструированных справочников типов системы отчетности

 

№ п.п.

Имя поля

Тип поля

Описание

1

ID

NUMBER(10)

Идентификатор

2

TYPE_ID

NUMBER(10)

Идентификатор типа, являющегося параметром

3

NAME

 VARCHAR2(50)

Имя переменной в SQL-запросе

4

DISPLAY_NAME

VARCHAR2(255)

Отображаемое имя параметра

5

ALLOW_MULTISELECT

 CHAR(1)

Разрешен ли мультивыбор значений типа-параметра

6

DEPEND_TYPE_ID

NUMBER(10)

Идентификатор типа, в котором используется параметр

         

 

CREATE TABLE RBS_REALTYPES

(

  ID                NUMBER(10) not null,

  TYPE_ID           NUMBER(10) not null,

  NAME              VARCHAR2(50) not null,

  DISPLAY_NAME      VARCHAR2(255),

  ALLOW_MULTISELECT CHAR(1) default 'F' not null,

  DEPEND_TYPE_ID    NUMBER(10) not null

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 64

    minextents 1

    maxextents unlimited

  );

-- Create/Recreate primary, unique and foreign key constraints

alter table RBS_REALTYPES

  add constraint PK_RBS_REALTYPES_ID primary key (ID)

  using index

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table RBS_REALTYPES

  add constraint FK_RBS_REALTYPES_DEPENDTYPE_ID foreign key (DEPEND_TYPE_ID)

  references RBS_TYPES (ID) on delete cascade;

alter table RBS_REALTYPES

  add constraint FK_RBS_REALTYPES_TYPE_ID foreign key (TYPE_ID)

  references RBS_TYPES (ID) on delete cascade;

-- Create/Recreate check constraints

alter table RBS_REALTYPES

  add constraint CH_RBS_REALTYPES_MULTISELECT

  check (allow_multiselect in('F','T'));

 

-- Create sequence

create sequence GENRBSREALTYPES

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

nocache;

 

-- Create TRIGGER

CREATE OR REPLACE TRIGGER TR_Rbsrealtypes_BI

  BEFORE INSERT ON rbs_realtypes

  FOR EACH ROW

BEGIN

  IF( :new.Id IS NULL ) THEN

    SELECT GENrbsrealtypes.NEXTVAL INTO :new.Id FROM Dual;

  END IF;

END TR_Rbsrealtypes_BI;

 

Таблица RSREPORTS  - Хранение сконструированных отчетов системы отчетности

№ п.п.

Имя поля

Тип поля

Описание

1

REPORT_ID

 NUMBER(10)

Идентификатор

2

REPORT_NAME

  VARCHAR2(256

Название отчета

3

REPORT_MARKUP

 BLOB

Файл разметки отчета

4

TYPE

 VARCHAR2(20)

Тип отчета («список» или «журнал»)

5

READONLY

 CHAR(1)

Является ли системным

6

DESCRIPTION

 CLOB

Описание отчета

         

 

-- Create table

create table RSREPORTS

(

  REPORT_ID     NUMBER(10) not null,

  REPORT_NAME   VARCHAR2(256),

  REPORT_MARKUP BLOB,

  TYPE          VARCHAR2(20) default 'Jornal' not null,

  READONLY      CHAR(1) default 'F' not null,

  DESCRIPTION   CLOB

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 16

    minextents 1

    maxextents unlimited

  );

-- Add comments to the table

comment on table RSREPORTS

  is 'Таблица содержит название отчета, его параметры, тип, маркап';

-- Add comments to the columns

comment on column RSREPORTS.TYPE

  is 'Является списком или журналом';

-- Create/Recreate primary, unique and foreign key constraints

alter table RSREPORTS

  add constraint PK_REPORTID primary key (REPORT_ID)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

 

-- Create sequence

create sequence GENRSREPORTID

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

nocache;

 

-- Create TRIGGER

CREATE OR REPLACE TRIGGER TR_RSREPORTS_BI

  BEFORE INSERT ON RSREPORTS

  FOR EACH ROW

BEGIN

  IF( :new.REPORT_ID IS NULL ) THEN

    SELECT GENRSReportId.NEXTVAL INTO :new.REPORT_ID FROM Dual;

  END IF;

END TR_RSREPORTS_BI;

 

Таблица RSREPORT_PARAMS – Индикаторы

№ п.п.

Имя поля

Тип поля

Описание

1

PARAM_ID

 NUMBER(10)

Идентификатор

2

PARAM_NAME

 VARCHAR2(256)

Название индикатора

3

PARAM_SQL_COUNT

 CLOB

SQL-запрос количества

4

USER_PARAM

 CHAR(1)

Является ли индикатором созданным пользователем

5

PARAM_SQL_LIST

 CLOB

SQL-запрос списка

6

PARAM_DESCRIPTION

 CLOB

Описание индикатора

7

READONLY

 CHAR(1)

Является ли системным

         

 

-- Create table

create table RSREPORT_PARAMS

(

  PARAM_ID          NUMBER(10) not null,

  PARAM_NAME        VARCHAR2(256),

  PARAM_SQL_COUNT   CLOB,

  USER_PARAM        CHAR(1) default 'T' not null,

  PARAM_SQL_LIST    CLOB,

  PARAM_DESCRIPTION CLOB,

  READONLY          CHAR(1) default 'F' not null

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 16

    minextents 1

    maxextents unlimited

  );

-- Add comments to the table

comment on table RSREPORT_PARAMS

  is 'Таблица хранящая параметры отчетов RSFlow';

-- Create/Recreate primary, unique and foreign key constraints

alter table RSREPORT_PARAMS

  add constraint PK_PARAMID primary key (PARAM_ID)

  using index

  tablespace INDX

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table RSREPORT_PARAMS

  add constraint UQ_PARAMNAME unique (PARAM_NAME)

  using index

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

-- Create/Recreate check constraints

alter table RSREPORT_PARAMS

  add constraint CH_RSREPORTPARAMS_USER_PARAM

  check (USER_PARAM in('F','T'));

 

-- Create sequence

create sequence GENRSREPORTPARAMS

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

nocache;

 

-- Create trigger

CREATE OR REPLACE TRIGGER TR_RSREPORT_PARAMS_BI

  BEFORE INSERT ON RSREPORT_PARAMS

  FOR EACH ROW

BEGIN

  IF( :new.PARAM_ID IS NULL ) THEN

    SELECT GENRSREPORTPARAMS.NEXTVAL INTO :new.PARAM_ID FROM Dual;

  END IF;

END TR_RSREPORT_PARAMS_BI;

 

Таблица RSREPORT_PARAMS_SQL – Параметры индикаторов

№ п.п.

Имя поля

Тип поля

Описание

1

PARAM_SQL_ID

 NUMBER(10)

Идентификатор параметра индикатора

2

PARAM_ID

 NUMBER(10)

Идентификатор индикатора

3

NAME

  VARCHAR2(50)

Имя переменной(параметра) в SQL-запросе индикатора

4

CAPTION

 VARCHAR2(255)

Отображаемое имя параметра индикатора

5

ALLOW_MULTISELECT

 CHAR(1)

Разрешен ли мультивыбор значений параметра

6

ALLOW_JOINING

 CHAR(1)

Разрешено ли объединение с однотипными параметрами индикаторов

7

TYPE

 NUMBER(10)

Идентификатор типа параметра

8

DESCRIPTION

VARCHAR2(255)

Описание параметра

         

 

 

-- Create table

create table RSREPORT_PARAMS_SQL

(

  PARAM_SQL_ID      NUMBER(10) not null,

  PARAM_ID          NUMBER(10) not null,

  NAME              VARCHAR2(50) not null,

  CAPTION           VARCHAR2(255),

  ALLOW_MULTISELECT CHAR(1) default 'F' not null,

  ALLOW_JOINING     CHAR(1) default 'F' not null,

  TYPE              NUMBER(10) not null,

  DESCRIPTION       VARCHAR2(255)

)

tablespace USERS

  pctfree 10

  initrans 1

  maxtrans 255

  storage

  (

    initial 64

    minextents 1

    maxextents unlimited

  );

-- Create/Recreate primary, unique and foreign key constraints

alter table RSREPORT_PARAMS_SQL

  add constraint PK_RSREPORT_PARAMS_SQL_ID primary key (PARAM_SQL_ID)

  using index

  tablespace USERS

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

alter table RSREPORT_PARAMS_SQL

  add constraint FK_RSREPORT_PARAMS_SQL_PID foreign key (PARAM_ID)

  references RSREPORT_PARAMS (PARAM_ID) on delete cascade;

alter table RSREPORT_PARAMS_SQL

  add constraint FK_RSREPORT_PARAMS_SQL_TYPE foreign key (TYPE)

  references RBS_TYPES (ID) on delete cascade;

-- Create/Recreate check constraints

alter table RSREPORT_PARAMS_SQL

  add constraint CH_RSREPORT_PARAMS_SQL_JOINING

  check (allow_joining in('F','T'));

alter table RSREPORT_PARAMS_SQL

  add constraint CH_RSREPORT_PARAMS_SQL_MS

  check (allow_multiselect in('F','T'));

 

 

-- Create sequence

create sequence GENRSREPORTPARAMS_SQL

minvalue 1

maxvalue 2147483647

start with 1

increment by 1

nocache;

 

-- Create TRIGGER

CREATE OR REPLACE TRIGGER TR_RSREPORT_PARAMS_SQL_BI

  BEFORE INSERT ON RSREPORT_PARAMS_SQL

  FOR EACH ROW

BEGIN

  IF( :new.PARAM_SQL_ID IS NULL ) THEN

    SELECT GENRSREPORTPARAMS_SQL.NEXTVAL INTO :new.PARAM_SQL_ID FROM Dual;

  END IF;

END TR_RSREPORT_PARAMS_SQL_BI;

 

 

Таблица PLACESXREGIONS – Кросс-таблица для определения списка отображаемых в регионе населенных пунктов

№ п.п.

Имя поля

Тип поля

NULL

Описание

1

PLACE_ID

 NUMBER(10)

NOT NULL

Идентификатор населенного пункта

2

REGION_ID

 NUMBER(10)

NOT NULL

Идентификатор региона

           

30.11.2010: 

Создание таблицы:

 

  PR_EXEC_DDL(

'ALTER TABLE PLACESXREGIONS'||

'  ADD CONSTRAINT UQ_PLACESXREGIONS UNIQUE (PLACE_ID,REGION_ID)'||

'  USING INDEX TABLESPACE %INDX%','TABLESPACE_INDX');

 

  PR_EXEC_DDL(

'CREATE BITMAP INDEX FK_PLACESXREGIONS_REGIONS ON PLACESXREGIONS (REGION_ID)'||

'  TABLESPACE %INDX_BMP%','TABLESPACE_INDX_BMP');

 

  PR_EXEC_DDL(

'CREATE INDEX FK_PLACESXREGIONS_PLACES ON PLACESXREGIONS (PLACE_ID)'||

'  TABLESPACE %INDX%','TABLESPACE_INDX');

 

ALTER TABLE PLACESXREGIONS

  ADD CONSTRAINT FK_PLACESXREGIONS_REGIONS

  FOREIGN KEY (REGION_ID) REFERENCES Regions (REGION_ID) ON DELETE CASCADE;

 

ALTER TABLE PLACESXREGIONS

  ADD CONSTRAINT FK_PLACESXREGIONS_PLACES

  FOREIGN KEY (PLACE_ID) REFERENCES Places (PLACE_ID) ON DELETE CASCADE;

 

INSERT INTO Placesxregions

     SELECT place_id, region_id FROM Places;

Таблица PLACES – Справочник населенных пунктов

№ п.п.

Имя поля

Тип поля

NULL

Описание

1

PLACE_ID

 NUMBER(10)

NOT NULL

Идентификатор населенного пункта

2

PLACE_NAME

VARC