Professional Documents
Culture Documents
EME-Guide To Manage Enterprise Metadata
EME-Guide To Manage Enterprise Metadata
EME-Guide To Manage Enterprise Metadata
Notice
COPYRIGHTS
Copyright © 1999-2003 Ab Initio Software Corporation. All rights reserved.
Reproduction, adaptation, or translation without prior written permission is prohibited, except as allowed under
copyright law or license from Ab Initio Software Corporation.
TRADEMARKS
The following are worldwide trademarks or service marks of Ab Initio Software Corporation (those marked ®
are registered in the U.S. Trademark Office, and may be registered in other countries): Ab Initio®;
ABINITIO.COM; >; Co>Operating®; Co>Operating System®; Cooperating®; Cooperating System®;
Continuous Flows; Continuous>Flows; init.com; INIT®; Re>Posit; Server+Server®; Server++®; The Company
Operating System; EME; Enterprise Meta>Environment; EME Portal; From The Beginning; Co>Operation;
Co>Operative; Co>Operating Enterprise; Cooperating Enterprise.
Certain product, service, or company designations for companies other than Ab Initio Software Corporation are
mentioned in this document for identification purposes only. Such designations are often claimed as trademarks
or service marks. In all instances where Ab Initio Software Corporation is aware of a claim, the designation
appears in initial capital or all capital letters. However, readers should contact the appropriate companies for
more complete information regarding such designations and their registration status.
WARRANTY DISCLAIMER
THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE. AB INITIO MAKES NO WARRANTY
OF ANY KIND WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. AB INITIO SHALL NOT BE LIABLE FOR ERRORS
CONTAINED HEREIN OR FOR INCIDENTAL OR CONSEQUENTIAL DAMAGE IN CONNECTION WITH THE FURNISHING,
PERFORMANCE, OR USE OF THIS MATERIAL.
Contents
Preface ix
Index 287
Who Should Read This manual is aimed at the administrator of the Enterprise
This Manual Meta>Environment, known as EME. It is assumed you are responsible
for defining your company’s technical and business metadata
requirements. In this manual, you will learn how to extend your existing
metadata and set up the Web user interface, which allows users to view
and edit your company’s metadata.
Example Description
File > Open “Choose the Open command from the File menu.”
Syntax Conventions Where DML syntax is shown, and labelled as such, we use the
following conventions:
Example Description
Web
user interface
Graphical
Development
Environment ®
Ab Initio
®
Co>Operating
System
third-party
Enterprise Meta>Environment ®
connector metadata
destination
or co
ct nn
nne ec
co to
conne
r
third-party third-party
metadata
ctor
metadata
source source
third-party
metadata
destination
Various User The EME addresses the metadata needs of three different
Constituencies Are constituencies: business users, developers, and system administrators.
Served Business users are interested in exploiting data for analysis, in
particular, with regard to databases, tables, and columns. Developers
tend to be oriented toward applications, needing to analyze the impact
of potential program changes. System administrator and production
personnel want job status information and run statistics.
Business and The EME makes it possible to answer a wide range of questions because
Technical Metadata it integrates both business metadata and technical metadata.
Are Integrated
The EME holds the active elements that compose your applications.
This means that business concepts (such as organizational structure or
business roles) can be directly linked to associated technical entities
(such as database instances or record formats).
In-depth Analysis The EME enables deep analysis of applications and the relationships
Across the Enterprise between them. Dependence analysis answers questions of data lineage:
Where did a given value come from? How was the output value
computed? Which applications produce and depend on this data?
Your Enterprise Is Special EME software, often called connectors, pull metadata from, and
Connected deliver metadata to, a wide variety of third-party products, including
design tools and OLAP systems. This makes it possible to maintain the
flow of metadata from business unit to business unit and from
operational systems to data warehouses to analytical systems.
Data Is Easy to The EME Web user interface provides an easily accessible view of
Access everything stored within the EME, permitting navigation, reporting,
dependence analysis, impact analysis, versioning, and differencing from
a standard Web browser from anywhere within the enterprise.
View Metadata
Create views to display metadata
in the Web user interface.
Extract Metadata
EME Use unload components to
Store Application B1
export metadata to third-
B party reporting tools.
Metadata U U1
B3
Check in projects.
B2 U3
Enable job tracking. U2
Store User-defined A major aim of the EME is to allow you to extend the application
Metadata metadata normally stored during check-in or graph execution and store
that metadata in the datastore. For example, you might want to capture
information about which group is responsible for different applications.
To this end, you must extend the default schema. Then you can use
View Metadata The goal of capturing metadata is to allow end users to view and
possibly edit it in the EME user interface, currently the Web browser.
To make metadata available in a browser, you must define one or more
views, which are subsets of the metadata that you want to appear in a
Web page. Metadata that is not included in a view is not accessible to
users.
The following figure is an example of how a view on metadata relating
to personnel might look in the browser.
Extract Metadata Finally, if you store your business-related information outside of the
EME, for example in third-party reporting tools, you can extract it using
Ab Initio’s unload components.
For more information, see Chapter 6 >Unloading Metadata from a
Datastore.
Complete These 1. Install the Co>Operating System, the EME/Web server software,
Prerequisites and the GDE, and configure the Web server, if you have not
already done so. For more information, see the installation section
of Chapter 1 in Guide to Managing Technical Metadata.
2. Open a Korn shell window, which you will use to verify and
update certain settings. (Note that steps 3-6 are also described in
the README file in installation-dir/examples/bmr/simple.)
3. Make sure the value of AB_HOME is the installation directory of the
Co>Operating System you are using. For example, issuing m_env
-v might return ab initio version 2.12 P251 largefile
if you are using version 2.12 of the Co>Operating System.
4. Run print -r $PATH to make sure that your path includes
$AB_HOME/bin. If it does not, append it to your path. Type:
export PATH=”$AB_HOME/bin;$PATH”
5. Set AB_AIR_ROOT to the root of the soon-to-be-created EME. Type
a fully qualified path to an existing directory.
For example, if you would like to name the sample EME
sample_eme and you would like it to reside in the sample
directory, you might type:
export AB_AIR_ROOT=c:/sample/sample_eme
Note If the directory does not exist, run mkdir directory-name to
create it, prior to setting AB_AIR_ROOT.
6. Make sure that a Web server has been installed successfully using
the install-aiw program. If not, see the introduction to Guide to
Managing Technical Metadata.
Build the Sample EME Now create the sample EME by running make_sample.ksh, located in
$AB_HOME/examples/bmr/simple. This Korn shell script creates the
EME, installs the base schema plus extensions, and defines views;
stores and annotates objects; and sets up the Web user interface,
including the main menu and a search index.
Permissions Since this script installs files into your Web server’s
html directory, you may need to run the script as root or temporarily
change the permission on your Web server directory in order to run the
script successfully. Note that if you run the script as root, you will not be
able to modify the EME until you change permissions on the EME files.
NOTE: If the script fails, you should fix whatever caused the error and
rerun the script.
See the Sample Now you can take a look at the sample EME you’ve just built.
Metadata in the Web
1. Open a Web browser and specify the following URL:
User Interface
http://machine-name/bmr/bmr_login.html.
2. When the login page appears, type your standard user ID and
password and then click Login.
The Business Scenario The Web page, shown above, presents some of the metadata of the
merged Abbot and Becket retail stores, as well as that of the consumer
demographic list from a third-party firm. (You might remember this
business situation from the Ab Initio Tutorial.)
The information you see in the figure is the subset of metadata that the
Web designer has chosen to present to you, not all the metadata stored
in the EME related to Abbot and Becket. The purpose of the Web user
interface is to coherently present information important to the business
user and to present that information in a way that it’s easy to see the
relationship between items of information.
Navigate the Web In Chapter 5 >Setting Up the Web User Interface you will learn how to
User Interface customize the elements of the Web page. We recommend that right now
you spend a little time navigating around the main menu and searching
for information.
The three blocks beneath the welcome message, from left to right, are
Steward Group members, Column members, and Business Attribute
members.
• Steward Groups present each group of data stewards, those people
who are responsible for tables or views.
• Business Attributes describe columns in various database tables
that have common meaning.
• Columns describes all table columns.
To drill down into any single object, click one of the hyperlinks. For
example, click the hyperlink “Abbot Stewards”. You can see which
Abbott employees are data stewards: Roger Koss and Diana George.
Sort icon
Step Recommendations
Verify your environment, then See Creating an EME Datastore on page 12.
create a new EME datastore.
Install the base schema. The schema describes the shape of your metadata.
Install and read about the Ab Initio-provided base
schema (page 19).
Install the extended schema Install and learn about extensions to the base schema.
(highly recommended). This schema is required for running other Ab Initio
products. See A Quick Look at the Extended Schema
on page 23.
Define your own extensions. Determine your company’s metadata requirements.
Metadata is organized around categories and
annotation rules. Read about them and look at some
examples of how to define them. See User-defined
Categories on page 24, User-defined Annotation
Rules on page 28, and Examples of Creating
Categories and Annotation Rules on page 33.
Populate the EME datastore. Learn about different ways to add metadata to an
EME datastore. See Chapter 3 > Adding Metadata to
an EME Datastore.
Define what metadata users can Users can see and search for metadata only in the
see in the EME Web user EME Web user interface. You define views to set the
interface. format and content of the metadata. See Chapter 4 >
Defining What Metadata Users Can See.
We highly recommend that you install the views on
the extended schema (page 53).
Set up the EME Web user Customize the look of the Web user interface for your
interface. company. Install Web resources and scripts, then
build a search index to allow users to search for
metadata. See Chapter 5 > Setting Up the Web User
Interface.
Set up security. Decide which users have permission to see and edit
annotation values. See Chapter 8 > Managing EME
Security.
Create a New EME Assuming you set the datastore root location through the AB_AIR_ROOT
Datastore configuration variable, you can then create a new datastore by typing:
air repository create
Otherwise, you can use the -root argument to specify the location and
name of the datastore, as in:
air -root /disk1/data/mystore repository create
Sample Datastore Installing the sample EME on a Unix platform (described on page 7)
gives you a sample datastore that looks something like the following.
categories Main
dml
welcome.html
default mp
Steward Groups
examples run
Abbot Stewards
extensions xfr
Becket Stewards
.repository_state
hosts Marketing Stewards
.air-project-parmeters
reports .project-end.ksh
abinitio Directory The abinitio directory is created automatically whenever you create a
datastore. It contains system objects and scripts — supporting material
for making sure that the EME datastore and the Web user interface will
function. It includes categories and annotation rules, which are
necessary for capturing and representing metadata. You will learn about
categories and annotation rules in the next chapter.
You should not edit anything directly in the abinitio directory.
Projects Directory The Projects directory is created automatically whenever you create a
datastore. It contains projects, which are Ab Initio applications kept
under source control. The sample project was imported from a file
system on another machine. The files in the sample project pertain to an
Ab Initio application that was imported into the datastore. You will
import your own projects into the Projects directory. You interact with
projects through the GDE and through the command line. Projects are
fully described in Guide to Managing Technical Metadata.
Users Directory The Users directory is created automatically whenever you create a
datastore. The subdirectories are created when users log in. These
directories can be used as private work areas, where users can store
private projects or private datasets or other application-specific files.
Metadata Directory The Metadata directory stores the sample metadata. You must define
your own directory to store metadata. We recommend that you call it
Metadata, but you can call it any name you want. The Menus
subdirectory contains the main menu and welcome message displayed
in the Web user interface, shown on page 9. Metadata about business
attributes and various steward groups, shown in the figure, are stored in
the Business Attributes and Steward Groups subdirectories,
respectively. Note that the subdirectories of Metadata correspond to the
figure of the Web user interface on page 9.
Connecting to a To accomplish tasks using the EME, you must connect to a specific
Datastore datastore. You can connect to only one datastore at a time. There are
several ways to establish the connection:
• Set the location in the EME Datastore Settings dialog, available
through Project > EME Datastore Settings in the GDE.
EME datastore location
Examine Your Firm’s The best way to determine your metadata needs is to study your existing
Applications applications and develop your own set of questions that you would like
to answer.
In the case of our example, consider the stored Ab Initio application,
JoinCustomers.mp, which combines two lists of customers and
transactions into a single list. The following figure shows the graph as it
appears in the GDE. (This graph is part of the tutorial in the Guide to
Managing Technical Metadata.)
Determine What The graph makes plain how the data is manipulated, but it does not
Metadata to Capture display all the information that the business needs. For example, there is
no information related to ownership and business area (marketing or
finance, for example) of the JoinCustomers application.
Therefore, the first item of information users might want to know is:
who is responsible for this application as a whole. You might want to
pose the question: “Who is the steward?” For each steward, you might
want to capture a name, contact information (phone number), and a
department.
With respect to this application, you might also want to identify which
business area this application belongs to.
You might pose the same question for the application’s data files: “Who
is the data steward responsible for these tables/files?”
It’s likely that you and your colleagues might devise many other
questions, but for the sake of simplicity, let’s consider only these two.
If you were to present this information graphically, you might draw it as
follows. Each application has a business area and a steward. Each data
file has a steward. Since each steward is an employee, you need a master
personnel list of employees that has the name and phone number of each
employee.
What the Metadata The goal of understanding your metadata requirements and the
Looks Like in the User relationships between metadata is to be able to present this information
Interface for viewing and editing in the EME Web user interface.
Eventually, you will build something similar to the following figure,
which suggests the interrelationship among personnel, applications, and
data files. The Web user interface in the following figure presents the
information for employee Jim Anchower.
mimeobj parameter
include global
phase
package type
dataset
flow_summary flow transform
input
output vertex uses dataset{s} as lookup
dataelement
vertex
vertex_summary
output input
Key:
one-to-many foreign-key relationship
many-to-many foreign-key relationship
Installing the Base The sample EME automatically installs the base schema. If you did not
Schema install the sample, then install the base schema manually. Make sure
AB_AIR_ROOT is set, then type:
The annotation rules are built in to the base schema. Here are the 15
annotation rules of the database category:
database
oid
name
display_name
path
db_name
dbms
dbms_version
projectOID
comment
description
created_by
created_date
modified_by
modification_date
categoryOID
For now, it is not necessary to learn the details of the base schema’s
categories and annotation rules. However, there are a few points worth
noting:
• Each category in the base schema has 11 annotation rules in
common: oid (unique object identifier), name, comment,
description, display_name, created_by, creation_date,
modified_by, modification_date, categoryOID, and path. These are
described in Common Rules on page 226.
• Each category has rules that are specific to it.
database
oid
name
display_name
path Rules common to
Rules specific to the
db_name all categories
database category
dbms
dbms_version
projectOID
comment
description
created_by
created_date
modified_by
modification_date
categoryOID
• The mimeobj category is the base category for all new user-defined
categories that cannot be derived from the built-in categories.
mimeobj has the common rules and only one annotation rule
specific to it — _value.
mimeobj
oid
name
display_name
path
_value Rule specific to the
mimeobj category
comment
description
created_by
created_date
modified_by
modification_date
categoryOID
Categories of the The extended categories pertain primarily to database indexes and keys:
Extended Schema
• Column • Index
• Invalid Value Item • Key
• Logical Element • Logical Entity
• Physical Element • TableView
• Valid Range Item • Valid Value Item
• Validation Spec
For more information about the categories and annotation rules of the
extended schema, see Extended Categories and Rules on page 234.
User-defined Categories
Introduction There are no strict rules about what should become a category, but, in
general, you should create a category if you want to treat a set of data as
a unit. Every category creates a logical table in the EME.
Based on the requirements specified in our example beginning on page
17 and shown in the following figure, we might consider creating three
categories: Application, Data Files, and Personnel.
Personnel phone
department
Categories Have Every new category must have a name. We recommend that you choose
Names a name that clearly describes the data, since this name may appear in the
Web user interface.
We also recommend that you use case consistently when naming
categories. For example, use uppercase (DATA FILES or
DATAFILES), initial caps (Data Files or DataFiles), or lowercase (data
files or datafiles) consistently for all categories. Names can be more
than one word. Specify multi-word category names in quotation marks
("Data Files") at the command line.
Categories Have New categories must be based on an already existing category, the
Parents so-called parent category. In addition, you must choose the appropriate
parent category. A good rule of thumb is that a new category describes
an “is a” or “are” relationship with its parent. (This concept is familiar
to object-oriented programmers.) For example, a category called
Application, which we specified as a result of examining the
JoinCustomers graph, should be based on the built-in graph category. It
meets the stated criterion: An application is a graph. The correct parent
category of the new Data Files category is datasets, since data files are
datasets.
What to Do When What is the parent of a new category that is not related to a graph? Such
There’s No Built-in categories should be based on the mimeobj category, which is a
Parent container for those categories whose members cannot be derived from
built-in objects. Personnel is an example of this sort of category, as
would be categories necessary for capturing business-related metadata,
such as employee names or business systems or processes (Accounts
Receivable, Accounts Payable, and so on).
Categories Have Most categories have members. Members are objects to which the
Members category’s annotation rules apply. The members of a category are those
objects that meet both of these criteria:
• They reside in the directory or (sub)directories you specify for that
category, or are referenced by a record-type annotation rule
(page 31).
• They are of the same type as the category’s parent.
Some Members Are Some members are built-in objects specific to Ab Initio applications.
Built-in Objects For example, graphs are built-in EME objects that reside in a project’s
mp directory. This directory is automatically created when you store a
graph for the first time.
To make one or more like-typed objects members of a category, you
specify the full path (to the file or the directory) to the air category
add-member-location command.
Example. If you want the members of the proposed Application
category to be EME graphs, then you would specify the full paths to the
mp directories of your EME projects, let’s say: /Projects/project1/mp
and /Projects/project2/mp. It’s up to you how many mp directories are
included as members.
On the other hand, any non-graph object in mp or in its subdirectories is
not a member of the Application category.
For examples of using air category add-member-location, see Specify
the Location of Category Members on page 35. For more details about
fine-tuning category membership, see the command syntax of air
category add-member-location on page 162.
Some Members Are Not Category members can also be objects that are not built-in or specific to
Built-in Objects an Ab Initio application. These non-built-in objects are members of
categories whose parent is mimeobj, that is, derived from a MIME
object. Personnel is an example of this sort of category.
Some Members Do Not Categories that are referenced by record-type annotation rules do not
Need to be Specified need to have their membership explicitly specified. The members of
these categories reside in the EME datastore, but they have neither
directory entries nor names. See Record Rules on page 31.
Each Member Has the Each member of a category is associated with the annotation rules
Category’s Rules explicitly defined for the category, in addition to the rules defined for
the parent category.
For example, the annotation rules for the Application category and those
inherited from the parent category (graph) apply to each graph in
/Projects/project1/mp and /Projects/project2/mp. The following
figure illustrates this only for the graphs in project1’s mp directory
(graph1, graph2, and so on) and, for the sake of space, omits the
annotation rules common to all built-in categories (page 226).
/Projects/project1/mp
author rule
graph1 version rule
business area rule
steward rule
Annotation Rules Annotation rules must have unique names. The name must be a valid
Have Names DML identifier; see the Data Manipulation Language Reference.
We recommend that you use case consistently in rule names. Thus,
while Business_Area, BusinessArea, businessarea, and business_area
are all acceptable, we recommend that you use a single format for
names.
Names are case-insensitive; thus, steward and Steward are not allowed.
Spaces are not permitted in annotation rule names, nor are hyphens. For
example, Business-Area is not valid.
The name of the rule is not necessarily the name displayed in the user
interface. You can set a display name for the rule. For example, you can
display business_area as “Business Area” or “Business area”.
You Can Assign Rules You can assign annotation rules to more than one category. For
to Multiple Categories example, an application can have a steward; a data file can also have a
steward. Therefore, the steward rule can be assigned to both the
Application and Data Files categories.
Note You may assign the new rules you create to the categories in the
base schema; however, we recommend that you derive new categories
from the base schema and then define annotation rules for the new
categories.
Make Sure a New Rule In addition to the rules explicitly defined for them, categories also have
Doesn’t Already Exist the annotation rules of their parents. For example, the Application
in the Base Schema category has the graph category’s 14 annotation rules (see the 11 rules
listed in Common Rules on page 226 and the 3 annotation rules named
in graph Category Rules on page 229.)
Before you define a new annotation rule for a category, make sure that
the rule doesn’t already exist in the base schema. For example, the name
and comment rules are inherited from Personnel’s parent category,
mimeobj. (In fact, the name and comment rules are common to all
built-in categories, as shown in the table of common rules on page 226.)
For this reason, it would be invalid to explicitly define a name or
comment rule for Personnel. You might have noticed that the name rule
shown in the figure on page 17 was deleted from the figure on page 24.
There Are Different Not all annotation rules are alike. When you create a new rule, you can
Types of Rules constrain the number and kinds (data type) of values it can have. In
effect, you are deciding how your end users can specify values for a
given object. The types of annotation rules are:
• String
• Choice
• Reference
• Record
String Rules An annotation rule on an object can have as its value a single string or
multiple strings. The string or strings are attached to the individual
object (member) and are not shared across multiple objects.
A rule that has one string value is said to be single-valued. Example:
Each employee has a unique Social Security number. The end user must
enter one value.
String rules that have more than one value at the same time are said to
be multivalued. For example, the value of the phone rule for a given
member of the Personnel category can be one or more phone numbers.
Choice Rules An annotation rule can define choice-type rules, in which the end user is
presented with a set of values for a single member of the category to
which the rule has been assigned. Use a choice-type rule when you have
an expectation about the valid values that an annotation rule might take.
You may require the end user to select only one of a number of choices.
An example of a single-valued choice rule might be the status rule: For a
given application, an end user might have to choose from Approved,
Disallowed, or Pending.
Alternatively, you might define a multivalued choice rule that allows a
member object to have more than one value at a time. That is, end users
can specify multiple values for this object. For example, a member of
Personnel might work in two departments — Development and QA.
You might imagine, therefore, that for the department annotation rule
you might want the user to be able to choose from all your company’s
departments — Finance, Development, Operations, Documentation,
QA, and Executive. After defining the choice rule, single-valued or
multivalued, you must explicitly define the list of choices.
By default, choices are restricted to the predefined list of values you
create. Sometimes, however, you might want an end user to be able to
specify a value that is not in the predefined list of choices. For example,
for a given application you might want to allow a user to enter
Operations as the value of business_area rather than restrict the user’s
choice to the choices in the list.
derives from
When a user specifies a value that is not in the list, you might also want
them to be able to permanently add that choice to the list of valid
choices, so that other users can see it displayed in the Web user
interface. If you don’t allow users to permanently add a new choice, the
values they specify are saved in the EME datastore but are not displayed
as choices in the Web user interface.
Application business_area
steward
mp/ ref
ere Personnel phone
n ce
graph1 rul
e
department
Personnel/
graph2
John Doe
... e Jim Anchower
ru l
n ce
ere
ref Mitzi Katz
Data Files steward
dat/
dataset1
dataset2
...
Use a reference-type rule when you want to have access to the entire set
of metadata associated with an object. In this case you have access to
the steward’s name, phone number, and department. Just like string
Record Rules The value of an annotation rule can be the set of annotation values on
another category. For example, the value of the email_info annotation
rule on the Personnel category is all the annotation values defined on
Email Info. The effect is that the annotation values of Email Info are
embedded in the Personnel category members — John, Jim, Mitzi, and
so on.
John Doe
Jim Anchower
Mitzi Katz
...
The Email Info category does not need to have its membership
explicitly defined. Its members are record objects that hold the
annotation values for each member of Personnel.
“jdoe@juno.com”
value of email_info “jdoe@mysite.com“
Personnel for John Doe
Personnel/
“jima@rcn.com“
John Doe email_info value of email_info “janch@mysite.com“
Jim Anchower email_info for Jim Anchower
Mitzi Katz email_info
... “mk@hotmail.com“
value of email_info “mkatz@mysite.com“
for Mitzi Katz
The advantage of the record-type annotation rule is that you do not need
to specify a name and location for the associated metadata. A
record-type annotation rule is not directly accessible from the normal
directory tree for annotation rules.
Summary of Types of The following table summarizes the four types of annotation rules.
Rules
Type Values Example
Rule Values Can Be By default, users cannot edit the values of annotation rules. However,
Edited you can define rules whose values users can edit in the Web user
interface.
Where Rules Are Annotation rules are stored in /abinitio/annotation rules. Do not
Stored in the EME manipulate annotation rules directly.
Create Categories Use the air category create command to define the Application
category, which derives from the graph category and therefore inherits
all of graph’s rules. Similarly, define the Data Files category as derived
from dataset. The new category Personnel has mimeobj as its parent,
because Personnel is a category whose members cannot be derived from
built-in objects. Finally, create a directory to hold the members of this
category.
Create Annotation You use the air arule create command to create all annotation rules. In
Rules the following example, the command defines the rule called
business_area. In addition, you define a set of characteristics for the
rule. For example, the rule will be displayed in the Web user interface as
Business Area (-display Business Area).
The department rule is a choice rule (-type choice). Users must select a
single choice (-multi-value) from a predefined list of six choices; they
may not specify additional choices (+in-list).
air arule create department \
-display “Department” \
-type choice \
-multi-value \
+in-list
Note that multi-word strings must be quoted.
air arule add-choice department \
“Human Resources” MIS Finance\
Administration Sales Marketing
NOTE: If you need to delete or make changes to a rule, use air arule
rm (page 160) or air arule modify (page 158), respectively.
To remove a choice from a choice list, use air arule
rm-choice (page 160).
Associate Rules with Using air category add-rule (page 164), you must explicitly assign an
Categories annotation rule to a category. You can assign annotation rules to
multiple categories. In the following examples, steward has been
assigned to Application and Data Files.
air category add-rule Application \
business_area steward
Specify the Location The air category add-member-location (page 162) command
of Category Members associates objects with a category. These objects are said to be
members, or instances, of the category. Each member has all the
annotation rules assigned to the category. To make an object or objects a
member of a category, you specify its location in the EME. In the case
of Application (below), all the graphs in the mp directories of
How Objects Get into Application-related objects are stored automatically when you check in
a Datastore a graph or a project through the GDE. Tracking runtime data can also be
stored by checking the Save Tracking Data to EME Datastore checkbox
in the GDE’s Run Settings dialog. (For more information, see the
chapter on using the Web to access the EME datastore in Guide to
Managing Technical Metadata.)
Users can explicitly store other objects using air utility commands or
through Ab Initio graphs.
Examples To create the members of the Personnel category that represent your
employees, create and store them as text-type MIME objects in the
Personnel directory using air reposit text. For example:
air reposit text \
-string “John Doe” “/Metadata/Personnel/Doe, John”
air reposit text \
-string “Jim Anchower” \
“/Metadata/Personnel/Anchower, Jim”
air reposit text \
-string “Mitzi Katz” “/Metadata/Personnel/Katz, \
Mitzi”
This command stores each text string as a MIME object, assigning it a
MIME type of text/plain.
Follow the -string keyword with the first string to be stored, in this
case, “John Doe”. The second argument, for example,
“/Metadata/Personnel/Doe, John”, is the path to the EME
datastore location where you want the strings to reside.
The air reposit commands are described in the air utility command
reference chapter in Guide to Managing Technical Metadata.
Recommendations We recommend that the string you store to create the object be the
object name. We also recommend that you use last name, first name
format, as in “Doe, John”, to ensure the correct sort order.
air annotation add You use air annotation add (page 148) to assign a value to an
Command annotation rule for a given object.
To use this command, you need to know information about the member
object, annotation rule, and annotation value. This information can be
obtained by running several air commands (page 41).
• Member object. You need to know where it resides in the
datastore and if its category has the annotation rule to which you
want to assign a value.
• Annotation rule. You need to know its name and type (for
example, string or choice) and whether it is single-valued or
multivalued.
• Annotation value. For a choice-type rule, you need to know
whether you can add a value that is not among the predefined list
of values. For a reference-type rule, you need to know whether the
value is a member of the target category.
Adding a Value for a Values for string- and choice-type annotation rules are specified as
String- or Choice-type strings.
Annotation Rule
Choice-type rules. Assume that the Mitzi Katz object is a member of
the Personnel category. This category has an annotation rule named
department, which is of type choice.
Personnel phone
department
Personnel/
John Doe
Jim Anchower Choices are Human Resources, MIS,
Mitzi Katz Finance, Administration, Sales, and
Marketing.
Let’s say you want to add a value of Sales for the department rule to the
Mitzi Katz object. In this case, you might type:
air annotation add \
“/Metadata/Personnel/Katz, Mitzi” \
department -string “Sales”
The first argument is the datastore location of the Mitzi Katz object, the
second argument is the name of the annotation rule, and the third
argument is the value specified with the -string keyword.
If department allowed multiple values at one time, then you could
specify more than one department for this employee, as in:
air annotation add \
“/Metadata/Personnel/Katz, Mitzi” \
department -string “Sales” “Marketing”
Running the command again on the same object but with a different
department value (for example, Administration) will append that value
to the original values (for example, “Sales” and “Marketing”).
String-type rules. Assume that Personnel’s phone rule is a
single-valued string rule. To specify a phone for Jim Anchower, a
member of this category, you might type:
air annotation add \
“/Metadata/Personnel/Anchower, Jim” \
phone -string “781 301-1234”
Adding a Value for a The value of a reference-type annotation rule is an object in the rule’s
Reference-type Rule target category. You specify the value as a full path to the object.
For example, Application’s steward rule is a reference-type rule that
points to Personnel. Therefore, the value of steward for the members of
Application must be a member of Personnel: John Doe, Jim Anchower,
or Mitzi Katz.
Assume that the steward of graph1 is John Doe. To add John Doe as the
value of steward for graph1, you type:
add annotation add \
/Projects/myproject/mp/graph1.mp \
steward “/Metadata/Personnel/Doe, John”
Useful Related Here are several commands you might find useful when using air
Commands annotation add.
air annotation dump See the annotation rules and values for a
(page 150) given object.
Load Components The EME provides the following five components for loading bulk
metadata into a datastore.
Two components allow you to manage the extended metadata:
• Load Mimeobj creates and loads a new MIME object into the
EME. MIME objects are the basis for all objects in the extended
metadata schema.
• Load Annotation Values creates and loads a new annotation into
the EME and connects it to the specific object. This component is
used in the sample graph on page 43.
Three components allow you to load some technical metadata objects:
• Load Table Dataset creates and loads a new table dataset. This
component is used in the sample graph on page 43.
• Load File Dataset creates and loads a new file dataset.
• Load Type creates and loads a new DML type object.
All of these components take the name of the EME datastore that you
are loading as a parameter. The main control over each component’s
behavior derives from the record format that you populate. The record
formats are documented for each component in Appendix B > Load and
Unload components.
Sample Graph The sample graph below creates a number of dataset objects in the EME
datastore and then creates and stores two annotation rules — Business
Area and Steward Group — for each dataset. For the sake of
convenience, this section concentrates on the customers and transaction
tables.
What You Need to Know To understand what happens when you run the sample graph, you need
to know that several categories and annotation rules already exist:
• The categories Table_View, Steward Group, and Business Area
have been previously defined.
• Each category has several annotation rules. Table_View has
Owner, TableOrView, Business_Area, and Steward_Group.
• Business_Area is a reference-type annotation rule that points
to the Business Area category; that is, its values must be
members of Business Area.
• Steward_Group is a reference-type annotation rule that points
to the Steward Group category.
• The members of the Steward Group and Business Area categories
are non-built-in objects that have been explicitly stored.
• The members of Steward Group are SG1, SG2, SG3, and SG4.
• The members of Business Area are Marketing, Finance, and
Operations.
Input to the Sample The input component, Example Metadata Spreadsheet, takes as its input
Graph an Excel spreadsheet, consisting of five records. Each record contains a
database name, a table name, and two annotation rules: Business_Area
and Steward_Group.
Remove Header and Remove Header is actually a renamed Filter by Expression component.
Replicate Components It selects and deletes the header, the first line of the spreadsheet. The
output is fed to Replicate, which generates two identical output streams.
Reformat to Dataset The stream fed to Reformat to Dataset Load runs first, in phase 0. The
Load Transform Reformat performs only some minor format changes, constructing a
string that points to a DML (.dml) file for each table and another that
points to a database (.dbc) file for each database. See the figure below
of the Reformat’s transform function.
Then for each input record, Load Table Dataset creates and loads a table
dataset into the datastore and links it to the database.
Normalize to Get Normalize to Get Dataset Annotations has two interesting transform
Dataset Annotations functions: length and normalize.
Transforms
Length. The length transform function sets the number of times that
Normalize runs with the same records. In this case, the length is 2, one
for the Business_Area rule, another for the Steward_Group rule.
Here are the details of the Transform Editor’s Business Rules pane. The
first time the transform function is called (index is 0), a record for the
Business_Area rule is generated. The second time (index is 1), a record
for the Steward_Group rule is generated.
The Results After running the graph, you can see the results in the Web browser.
(This assumes that you have defined views for the metadata. You will
learn how to define views in Chapter 4 > Defining What Metadata Users
Can See.)
From the following figure of the Web page for the company_a database,
you can see that the customers and transactions tables are associated
with this database.
For example, the following figure shows that the transactions table’s
annotation values for Steward_Group and Business_Area rules are SG1
and Operations, respectively. Compare this to the input spreadsheet on
page 44.
You can look at metadata from other perspectives. For example, you can
view which objects are members of a given category. The following
figure shows the Business Area category and its members: Finance,
Operations, and Marketing.
Clicking a hyperlink for a member object brings up the Web page for
that object. The following figure shows the Operations member of the
Business Area category. You can see the tables and databases with
which it is associated. The only annotation rule associated with this
member is Comment.
Scripts for Storing Appendix G > >Sample Scripts contains a suite of scripts for creating
Bulk Metadata categories and annotation rules, storing annotation values, and defining
views on the categories.
Once you have extended the base schema according to your business
requirements, and populated an EME datastore with metadata
(annotation values), it’s time to define what metadata users can see in
the Web user interface. This task is accomplished through views.
Introduction to Views
What Is a View? Views allow users to see and edit metadata in the Web user interface.
Views are the only means for users to see your company’s metadata.
Anatomy of a The following figure shows a rendered view — a Web page of metadata
Rendered View for Jim Anchower, a member of the Personnel category. The navigation
bar and the footer, which can be customized for your company, are not
part of the rendered view. (You will learn how to customize the
navigation bar, footer, and other aspects of the Web page in Chapter 5 >
Setting Up the Web User Interface.)
Category name Category member User-defined label Annotation value for this member
Navigation bar
Footer
View Names You can define multiple views for a category. Each view on the same
category must have a unique name, although you can reuse view names
across categories, as illustrated here.
Short view
Short view
First Plan Your Views We recommend that you describe your views on paper before creating
them. Look at each category to determine which annotation values you
want to appear in each of its views. Which items of metadata would you
like users to see as a unit in the browser? Which views would you like to
be included in other views? (The last two rendered view-elements in the
figure on page 54 are actually views included in another view.)
Special Views Note that there are several views with specialized purposes:
• A view that allows end users to modify annotation values. See
Defining a View for Editing Values of a Category Member on
page 73.
Its default name is edit-view. To change the default name, see Set
View for Editing Annotation Values on page 90.
• A view that displays search results.
By default, the list view is used to render search results. To change
the default name, see View to Display Search Results on page 72
and Set Default View for Search Results on page 87.
Next, Create Empty When you create a view on a category, it defines no content. It is merely
Views a blank slate associated with a category. We recommend that you create
all your views using air category add-view (page 166) before defining
content.
Example Create the Details, List, and Short views and associate them
with the Data Files category. Create like-named views and associate
them with the Steward category.
air category add-view “Data Files” Details \
List Short
air category add-view Steward Details \
List Short
Note When you customize the Web user interface for your company,
as described in the next chapter, you will need to specify the names of
your default views for displaying metadata. By default, these views are
named list and details. Either create views with the names list and
details or substitute the names of your views. (For more information,
see Set Default Views in the Main Menu on page 88.)
Finally, define content You define content for a view by creating one or more view-elements.
for the view See Defining Content for Views on page 54 for more information.
Sample Scripts for Appendix G >Sample Scripts contains a suite of scripts for creating
Creating Views categories and annotation rules, storing annotation values, and defining
views on the categories.
Views on the If you installed the extended schema included in the installation package
Extended Schema (described in A Quick Look at the Extended Schema on page 23 and in
Extended Categories and Rules on page 234), then you might want to
install the views defined on the categories of the extended schema. The
views are named list and details. You can install these view definitions
by running $AB_HOME/connectors/EME/standard-view.ksh. Note
that if you installed the sample EME, the views on the extended schema
were installed automatically.
What Is a A view-element describes the metadata that will be rendered in the Web
View-element? user interface. Each view-element consists of both a label and a
description of which annotation values to display for a given member of
the category.
The Web page in the following figure shows how five view-elements
are rendered in the browser.
Member of Personnel category
Annotation value of the
comment rule for member
Jim Anchower
User-defined label for
the comment rule
Rendered view-elements
Label of a Each view-element must have a label, which is text describing the item
View-element of metadata. For example, in the above figure, Comment, Phone, and
Department are all user-defined labels that appear to the left of an
individual annotation value.
The bold text Applications this employee is responsible for and Data
Files this employee is responsible for are also labels, but they introduce
a group of annotation values from another view.
simple A single annotation value from the current category (the one on
which the view is defined)
or
A single annotation value from another category or categories
with which the current category has foreign-key relationships
(that is, reference-type rules “connect” the categories)
Example: First three view-elements in the preceding figure
Escape Characters in These characters must be escaped by a forward slash when used as part
Element-descriptors and of the syntax of an element-descriptor or element-view:
Element-views
• < (left angle bracket)
• > (right angle bracket)
• . (period)
• / (forward slash)
• | (vertical bar)
So the format is actually: / | category/.rule/ >/ | category/.rule/ >
For example:
“/|Data Files/.steward/>/|Steward/.phone_no/>”
Annotation Value on the Assume you have created the empty view DF-Details on the Data Files
Current Category: category and now you want the Comment label and the value of its
Example 1 comment rule (type string) to appear in the rendered view.
transaction comment
Comment
label Value of comment rule
Annotation Value on the The same syntax applies when the annotation rule is of type reference.
Current Category: Assume you want the rendered DF-Details view to show the steward
Example 2 responsible for a given data file, that is, the value of the steward
reference-type rule.
DF-Details view
Steward: steward-value
dat/ sg/
personnel
customers steward Eric Smith phone_no
comment
steward ... personnel
transactions
comment phone_no
Steward
label
Value of steward rule on Data Files category
Annotation Value On In this example, you want to use the information in the previous figure,
Another Category: but now you are adding a view-element to a view on Steward. In the
Example 1 following figure, the categories have been reversed. Assume we want
the rendered S-Details view to display the data files that are the
responsibility of a given steward, that is, the value of the steward
reference-type rule.
sg/ dat/
personnel steward
phone_no customers
Eric Smith comment
Paul Bergen personnel steward transaction
phone_no comment
The syntax of the element descriptor is in the < relation | format — the
reverse of the previous example, because our perspective is reversed:
we are building the view with respect to Steward rather than Data Files.
Steward, which is pointed at by Data Files, provides a value for Data
Files; that is, Data Files has a foreign key relationship with Steward.
air category add-view-element Steward \
“S-Details” -simple “Data Files” \
/<“Data Files”/.steward/|
When the view is rendered for a given steward, the Web page shows
zero or more data files for that steward.
Annotation Value on You might need to specify a chain of one or more reference rules in
Another Category: order to access a single value. Consider the following example. You
Example 2 want the rendered DF-Details view to display the phone number of the
steward, but the information about the steward’s phone number is
associated with the Steward category.
Note in the figure that the Steward category has a phone_no rule.
Accessing the information in another category requires that a reference
rule “connects” the two categories. In this example, steward is a
reference-type rule, whose value is a member of Steward.
DF-Details view
Steward’s Phone: phone_no
Steward’s
Phone label
Value of phone_no rule on Steward category
Annotation Value on Let’s say that three categories — Steward, Data Files, and Database —
Another Category: are related through two reference-type rules. As shown in the following
Example 3 figure:
• Steward provides a value to (or is pointed at by) Data Files through
the steward annotation rule. In other words, Data Files has a
foreign key relationship with Steward.
• Data Files depends on Database by means of the database rule.
S-Details view
Database: database-name
The goal is to access a value in Data Files that comes from Database and
then include that value in the S-Details view on Steward. To accomplish
this goal, the syntax must express these two relationships:
<relation | | relation>
Annotation Value on Let’s say that three categories — Steward, Data Files, and Application
Another Category: — are related through two reference-type rules. As shown in the
Example 4 following figure:
• Steward provides a value to (or is pointed at by) Data Files through
the steward annotation rule. Another way of saying this is that Data
Files has a foreign key relationship with Steward.
• Data Files provides a value to (or is pointed at by) Application
through the input annotation rules. Application has a foreign key
relationship with Data Files.
In this example, the goal is to build the S-Details view on Steward that
includes the name of the graph or graphs that use data files for which a
given steward has responsibility.
To express these two relationships, use an element descriptor with the
<relation | <relation | format:
air category add-view-element Steward \
“S-Details” -simple “Application” \
“/<Data Files/.steward/|/<Application.input/|”
S-Details view
Application: graph-name
sg/ dat/ / mp
personnel steward
Eric Smith phone_no customers input JoinCustomers
Annotation Value on The goal of this example is to include all applications that depend on the
Another Category: output of a given application in the A-Details view of Application. This
Example 5 example is unlike the previous examples in that it is built around two
relationships between the same categories: Application and Data Files.
The syntax of the element descriptor is in the | relation> <relation |
format.
air category add-view-element Application \
“A-Details” -simple “Application” \
“/|Application/.output/>/<Application/.input/|”
The syntax | Application.output > expresses the fact that the
output rule points to the data file that is the output of an application. The
syntax <Application.input | returns all the applications that use
the output files as input.
A-Details view
Application: graph-name
/ mp dat/
output
JoinCustomers input customers
output
LoadJoined... input transaction
Including Another View in The goal of this example is to add the contents of the S-Details view on
Your View: Example Steward to the DF-Details view on Data Files. This situation is shown in
the following figure.
DF-Details view
Comment: comment-value
Steward’s Phone #: phone_no-value
S-Details view
Steward Info
Name: name-value Name: name-value
Phone #: phone_no-value Phone #: phone_no-value
... ...
The value of the steward rule depends on the Steward category; for
example, the value of dat1’s steward rule depends on the value s1. This
relationship is expressed as:
/|“Data Files”/.steward/>
The name of the view to be included is expressed as the name of the
target category, a dot, and the name of the view on the target category:
Steward/.S-Details
The full syntax for accessing the S-Details view on Steward and adding
it to the DF-Details view on Data Files is:
air category add-view-element \
“Data Files” “DF-Details” \
-view “Steward Info” /|“Data Files”/.steward/>\
Steward/.S-Details
When DF-Details for the dat1 object is displayed in the Web user
interface, the view will display, among other things, the name and the
phone number of the steward that points to it, in this case, the steward
s1. Note the horizontal line in the following figure that separates the
-simple view-elements from the -view view-element.
Display Options You can control the way -view view-elements are displayed in the view
you are defining. The following figure shows a rendered view on the
TableView category. The bottom of the view displays a rendered -view
view-element. Note that all the labels, rule names, and annotation values
of the included view are displayed.
Label of -view
view-element
Show Columns
hyperlink
Toggling To allow users to toggle between the expanded and collapsed rendered
view, you must specify the +can-toggle option to the air category
add-view-element command. By default, the option is turned off
(-can-toggle). Make sure that the value is +can-toggle if you specify the
-auto-show option.
Note You can modify the toggling behavior of all -view view-elements
at once by changing the value of the show_all_views_expanded
configuration variable in the Web user interface. See Show All Views
Expanded or Collapsed on page 89.
Including Text
Decorate view-elements, defined by the -decorate keyword to air
category add-view-element, allow you to add text to a rendered view.
For example, perhaps you want to add an introduction to be displayed at
the top of a Web page.
First you must store the text as a MIME object using air reposit mime
or air reposit text. (See Guide to Managing Technical Metadata for
details for the command syntax.) For example:
air reposit text \
-string “This view contains information about \
the tables for which stewards are responsible.”\
“/Projects/documentation/view-text”
Then add the text as a -decorate view-element. The format is:
-decorate label datastore-path-to the-MIME-object
For example:
air category add-view-element \
“Data Files” “DF-Details” \
-decorate “table-steward” \
“/Projects/documentation/view-text”
Note that the label for a -decorate view-element is not displayed in the
rendered view.
Making Views For view-element values to be searchable, the view to which the
Searchable view-elements belong must be defined on a searchable category. For
example, let’s say you define the A-Details view on the Steward Groups
category and make three of its view-elements searchable. For users to be
able to search for values of these three view-elements, Steward Groups
must be defined as a searchable category when you set up the Web user
interface. For instructions, see Make Categories Searchable on page 87.
View to Display The results of a search are displayed in their own view. By default,
Search Results search results are displayed in a view named list. Once you click GO to
begin the search, the results are displayed in the list view, directly
following the search criteria:
Search criteria
List view
To change the name of the view for search results, see Set Default View
for Search Results on page 87.
Initial Number of By default the search view shows 60 search results. To change the
Search Results default number, set the value of the initial_results_limit configuration
variable as described in Set Initial Number of Search Results Shown on
page 88.
Search Index By default, the EME executes a search by scanning a search index of
annotation values. (Optionally, you may disable the search index. See
Enable/Disable the Search Index on page 88.) You must build this index
yourself. For more information, see Creating a Search Index on page 94.
Clicking this hyperlink opens a new Web page, which allows users to
edit annotation values for a single member object of a given category.
For example, clicking “edit...” on the Web page for Abbot Stewards
opens the Edit Steward Group: Abbot Stewards page, shown in the
following figure. Users can edit the annotation values from this page
and save the values in the EME datastore.
Label of view-element
for comment rule
Annotation value
of view-element
for comment rule
Label of view-element
for Members rule
Annotation value
of view-element
for Members rule
Edit View Generates Much of the edit page in the preceding figure — the title and scroll bars,
an Edit Web Page the page title (Edit ...), the fields, and the controls — is created
automatically by Ab Initio software. The “edit...” hyperlink is also
automatically placed next to the category and object names.
The content of the edit page, however, is generated from an edit view.
An edit view is special in the sense that users cannot only see annotation
values in the rendered edit view, they can edit them too. All you have to
do is create a view and define view-elements that, when rendered,
become the content of the edit page. You should define an edit view for
every category whose values are modifiable.
Name of the Edit View The edit view should have the same name across all categories on which
such views are defined. The default name for this special view is
edit-view, but you may choose any name you want.
Enter the name, if different from that the default, as the value of the
edit_view_name variable.
Defining the Edit View First create a view for each category with editable values. For example:
air category add-view "Steward Group" edit-view
Defining Its Content We recommend that the content of the edit view — its view-elements —
closely resemble (but not necessarily be identical to) the content of the
view to which it corresponds. For example, here is the definition of a
view defined on Steward Groups:
air category add-view-element "Steward Group" default -simple \ +index
"Comment" comment
air category add-view-element "Steward Group" default -simple \ +index
Members Members
air category add-view-element "Steward Group" default -view \
"TableViews this Steward Group is responsible for"
"/<TableView/.Steward_Group/|" "TableView/.default-list"
This definition creates the rendered Web page, shown in the first figure
on page 73. Note that the last view-element, labeled “Tableviews this
Steward Group is responsible for,” does not appear in the edit page (the
second figure on page 73). Indeed, the edit page was generated from the
following edit-view definition, which excludes this view-element:
air category add-view-element "Steward Group" edit-view -simple +index
"Name" name
air category add-view-element "Steward Group" edit-view -simple +index
"Comment" comment
air category add-view-element "Steward Group" edit-view -simple +index
"Description" description
air category add-view-element "Steward Group" edit-view -simple +index
"Members" Members
Exclude View-elements We can assume that the creator of the above edit-view definition did not
or Turn On Permissions? want users to be able to modify which tables or views are managed by
the Abbot stewards. Hence, he or she excluded this view-element from
the definition of the edit view.
An alternative to excluding such view-elements from an edit view
would be to turn on EME permissions so that unauthorized users or
groups will not see annotation values to which they do not have access.
For more information about permissions, see Chapter 8 > Managing
EME Security.
Just-for-information Edit views can include view-elements for rules whose values cannot be
View-elements edited as well as those which are not present in the view on which the
edit view is based. A possible reason for including rules that cannot be
edited might be to present information useful to the user who wants to
modify another annotation value.
For example, you might want to present the date that the annotation
values related to Abbot Stewards were last modified. You would
accomplish this by adding a view-element for the modification_date
rule.
air category add-view-element "Steward Group" edit-view -simple +index
"Modification date" modification_date
When the edit view is rendered, it yields the edit page shown in the
following figure. Note that Modification date, which is defined as
-can-edit, cannot be edited in the view.
New view-elements
appear at the bottom
of the page
Reordering Newly added view-elements always appear at the bottom of the edit
View-elements page. If you are not pleased with the order of view-elements in the
rendered page, you must remove the out-of-order view-element and
re-add it. So, for example, to have Members in the previous figure
appear last, you would remove it using air category rm-view-element
and then add it again using air category add-view-element, like so:
air category rm-view-element "Steward Group" edit-view Members
air category add-view-element "Steward Group" edit-view -simple +index
Members Members
How Controls Are The EME renders the edit controls based on the definition of the
Rendered associated annotation rule, as specified in air arule create (page 152).
• If the rule’s value can be edited (+can-edit), then the controls
support editing. For example, both the comment and Members
rules can be edited. The modification_date rule, a built-in rule of
the base schema, is defined as -can-edit. Its annotation value is
displayed but cannot be modified.
• The rule type determines the type of control rendered. For
example, the Members rule is a choice rule (-type choice), and
therefore a combination text-and-drop-list field is displayed.
• If the rule is defined as +big-text, then the control is a multiline
edit field. For example, the comment rule is a +big-edit string rule,
therefore, the control is a multiline edit field.
Note You can also make the edit control 25-30% wider by setting
the use_wide_edit_controls configuration variable. See Set Width
of Edit Controls in an Edit View on page 90.
• If a choice-type rule is defined as -in-list and +add-choice, then
users can add a choice that does not appear in the drop-down list.
Conversely, if a choice-type rule is defined as +in-list, the edit
page does not accept a value that is not in the drop-down list.
• If the rule is single-valued (-multi-value), then only one value can
be saved. If the rule is multivalued (+multi-value), then the edit
page allows the user to specify more than one value.
Category name
3 simple
view-elements
2 view
view-elements
Log In to the Web After setting up the Web user interface, you can log in to your Web
User Interface browser at host-name/bmr/bmr_login.html to begin viewing business
metadata.
Before You Begin You may, if you want, copy $AB_HOME/lib/bmr to a new location,
then, in the copy, customize the images, style sheets, and scripts
included with the distribution. You will specify the directory location of
the customized files in the procedure.
To run install-bmr, you will need to know the following information:
• The directory in which your Web server stores html resources. The
table lists the most common choice for each supported server.
For this software This directory is likely to be ...
IIS on Windows c:/inetpub/wwwroot
Apache on Windows c:/Program Files/Apache Group/Apache/
htdocs
Apache on Unix /home/httpd/html
• The directory where your Web server finds html resources and the
subdirectory into which the Web server should find business
metadata html resources.
• If running Windows, the domain of the users who will be logging
in to the EME’s Web user interface. The local domain is "." (dot).
• The path to your EME datastore.
Navigation bar
3
2
Main menu has 4
blocks: tiled from left
to right, from top to
bottom
4
Footer
Centered footer text, e.g., the Email address for Right-most hyperlink, e.g.,
name of your EME datastore the Support team URL for HTML-based Help
What Controls Its The appearance and contents of the main page are determined by
Appearance and
• Configuration variables
Content?
• User permissions
• Group membership
• Cascading style sheets
Configuration Variables You can set a number of configuration variables to control many aspects
of the main page and other attributes. For example, you can:
• Choose the categories to appear as hyperlinks in the navigation bar
• Control the content and presentation of the main menu
• Choose the categories users can search (shown in navigation bar),
the number of search results that are shown initially, and whether
the EME accomplishes the search through a search index or an
exhaustive linear search
• Create hyperlinks to appear in the footer, for example, Support
email address, URL for HTML help, and name of your datastore
• Change the number of initial items returned by a search
This chapter explains in detail how to set configuration variables.
User Permissions The appearance of the main page is also affected by EME user
permissions. For example, certain annotation values may or may not
appear, depending on which objects you have granted users permission
to see. For more information on permissions, see Granting Permissions
on page 129.
Group Membership You can customize the main page for the groups that users belong to.
For example, the development group can see a different main page than
the executives group. You accomplish this by setting configuration
variables for different attributes of the main page. Use the air system
group add-group (page 184) to set up groups for your company. For
background information, see Setting Up User Groups on page 126.
All users belong to the world group. The world group is the
built-in group to which every user who can log in to the EME Web user
interface belongs. The figure on the previous page shows the main page
of the sample EME for the world group.
Cascading Style Sheets The appearance of the Web user interface is determined by a built-in
cascading style sheet, $AB_HOME/lib/bmr/html/css/abinitio.css. If
you want to customize the main page for your company, create a file
called site.css and define your new CSS definitions there. Place the file
in your Web server’s html_dir/bmr_subdir/css directory. By defining
your settings in a site-specific style sheet, rather than in abinitio.css,
you preserve your custom settings, even if you rerun install-aiw or
install-bmr.
air web-interface You configure all attributes of the Web user interface through a group of
Commands air web-interface commands. For a complete description of all
commands, see air web-interface Group on page 191.
Displaying Variables To see documentation for all the configuration variables, use the air
Documentation web-interface describe command:
air web-interface describe -all
Displaying Current To see the current settings of all configuration variables for a particular
Settings Of Variables user group, use the air web-interface show command:
air web-interface show group -all
You might want to run show before setting up the main page for the first
time, in order to become familiar with the initial settings of all
configuration variables.
Setting Variables The command to set configuration variables is air web-interface set,
which takes a group name, the name of a configuration variable, and a
value for the variable:
air web-interface set group configuration-setting value
Setting Up the Footer The footer has a Support Email Address Hyperlink and a Help
Hyperlink on the right of the footer as well as centered text that you can
customize.
Support Email Address The configuration variable client_support_email specifies the email
Hyperlink address for your company’s Support team. It appears as the Support
hyperlink in the footer of the Web page.
The default value is someone@example.com. To change the value
for the world group to Support@widgets.com, you would specify:
air web-interface set world \
client_support_email_address Support@widgets.com
Setting Up the Main The configuration variable main_menu_blocks specifies the content and
Menu appearance of the main menu, which is the area between the navigation
bar and the footer. It consists of one or more blocks which are tiled from
left to right, and from top to bottom.
Field Description
Customizng the Undoubtedly, you will want to modify the main page’s Welcome
Welcome Message message (page 81). Use air cat /Metadata/Menus/welcome.html to
copy the file from this location in the EME to your file system. (Note If
the file is not in the default location, use air web-interface show
(page 194) to see the current setting of the main_menu_blocks
configuration variable for a particular group.) Edit and save the HTML
file. Then use air reposit mime to copy the file back to the datastore. If
you copy it to a location other than the default, be sure to specify that
location in the setting of the main_menu_blocks configuration variable.
For a full description of air cat and air reposit mime, see Guide to
Managing Technical Metadata.
Users can click these to navigate to the values of various categories. The
practical limit is five or six hyperlinks. Make sure that you keep the
MAIN hyperlink so that users can easily return to the main page.
To specify hyperlinks for the world group of the sample EME you
would specify:
air web-interface set world navbar_links \
“[('MAIN', '/Metadata/Menus/Main', 1),
('DATABASES', '/abinitio/categories/Database', 1),
('STEWARD GROUPS', '/abinitio/categories/Steward Group', 1),
and so on ...
]”
Each navigation bar hyperlink definition has the following fields:
Field Description
Hyperlink name String. Text marker to appear in the navigation bar, for
example, DATABASES.
Setting Up Searching To customize searching in the Web user interface, you need to:
• Decide which categories you want users to be able to search
• Decide which view should display the search results
You may also:
• Change the initial number of search results displayed to the user
• Enable the quick search index or use the exhaustive linear search
method
Note that the views defined on the above specified categories must
contain some view-elements that are searchable; that is, you must have
defined the view-elements with the +index option. See Making Views
Searchable on page 71.
Set Default View for The configuration variable metaview_as_search_results specifies the
Search Results name of the view in which to render search results. By default, the list
view is used to render search results. You may define your own view
with a different name. Set the value of metaview_as_search_results only
if the name of your view differs from the default.
air web-interface set world \
metaview_as_search_result ‘my-list’
For an example of the list view rendering search results, see the figure
in Anatomy of the Web User Interface on page 81.
Set Initial Number of The configuration variable initial_results_limit specifies the initial
Search Results Shown number of search results to display. The default value is 60. Users can
click a hyperlink to display all search results found. Set this variable
only if you want to do not want the default value. For example:
air web-interface set world \
initial_results_limit 40
Enable/Disable the The configuration variable use_search_index specifies whether the Web
Search Index user interface should do searches using a search index or do a slower
linear search. The default value is 1, which enables the search index. To
turn off the search index, set use_search_index to 0.
air web-interface set world use_search_index 0
Setting Up Views All the annotation values displayed in the Web user interface are shown
in a view. You can set up a number of attributes related to views.
Specifically, you can decide:
• The names of the default views to display annotation values in the
Web user interface
• Whether or not -view view-elements are displayed expanded or
closed
• The name of the default view for editing annotation values
• The width of the edit controls in an edit-view
• The name of the default view to display search results (see the
previous topic, Set Default View for Search Results)
Set Default Views in the Each category-type block in the main menu presents its annotation
Main Menu values in a view. The categories on the default main page and the
sample main page use the default views called details and list.
An example of a list view is the presentation of values for the Steward
Groups.
The Web user interface uses two settings to determine which view to
display an object in: category_list_view and details_view. By default,
these variables are set to ‘list’ and ‘details’, respectively. You must
define views with these names for every category whose values you
want to display. (For information about defining your own views, see
Chapter 5 > Defining What Metadata Users Can See.)
If you intend to use the default list and details views, you do not need to
set the category_list_view and details_view configuration variables. If
you define your own views with different names, specify the name of
your default views. For example:
air web-interface set world \
category_list_view ‘my-list’
and
air web-interface set world details_view \
‘my-details’
Set View for Editing The configuration variable edit_view_name specifies the name of a
Annotation Values special view that allows users to edit annotation values. You must
define this special view for each category that has annotation values that
you want users to be able to edit. This view must have the same name
across categories. Set the value of edit_view_name only if the name of
your editing view is different from the default, edit-view.
air web-interface set world \
edit_view_name‘edit-view’
For more information about creating this special view, see Defining a
View for Editing Values of a Category Member on page 73.
First Set Up Interface First configure the interface for the world group, since this is the most
for World Group generic group in your company. The main page for world should display
metadata that is appropriate for all users. See Setting Configuration
Variables for the Web Interface on page 83 for details about how to set
individual configuration variables. Any configuration variables that you
do not explicitly set will take the value of the default interface. So, for
example, if you do not set client_footer_center_html, then the centered
footer text remains Sample Business Metadata.
If you would like users to see customized main pages, create groups for
the users in your company, and if you haven’t already done so. See
Setting Up User Groups on page 126.
Then build the interface for groups other than world. You need only set
the variables whose values are different from those you set for world.
Set the Group Order Then you need to run air web-interface set-order to set the order of
groups that the Web interface searches for settings and values. Settings
defined on groups earlier in the list override settings on groups defined
later in the list. The world group should be last in the list.
For example, if you define a custom main menu block for the Dev group
with a special welcome message, then this setting overrides the main
menu block setting for world. Then, when a member of the Dev group
(and the Dev group only) logs in, he or she sees a main page that has a
custom menu block; all other settings derive from the world group.
Similarly, the users who are in the Exec group, and the Exec group only,
see their custom welcome message. Setting the group order for these
groups is as follows:
air web-interface set-order Dev Exec world
Assuming each user is in only one group, reversing Dev and Exec in the
list would have no effect on the rendered Web page for the users of each
group.
air web-interface set-order Exec Dev world
Note You must explicitly specify the world group, even though it is
built-in. Place world at the end of the list of groups.
If you need to reset the group order, run the command again, specifying
all groups. To see the order of your groups, run air web-interface
show-order.
When a User Is in More When a particular user is a member of two or more groups, the first
Than One Group value encountered for a particular variable is the value that is used.
Therefore, the group order you set is key to creating the correct Web
user interface for this user.
The EME software then scans a search index of annotation values and if
it finds a match between the specified text and an entry in the search
index, it displays the entry or entries. (The number of entries that is
initially displayed is controlled by the initial_results_limit configuration
variable described on page 88.)
Prerequisites for The search index feature is optional. To make searching available, you
Creating a Search must complete the following tasks:
Index
• Make sure your views contain some searchable view-elements.
Searchable view-elements are those created with the +index
argument. Only these view-elements can be searched. See Making
Views Searchable on page 71.
• Designate specific categories as searchable. The views defined on
these categories must have some searchable view-elements. See
Make Categories Searchable on page 87.
• Designate a view to display the search results. Alternatively, you
may accept the default search view named list. See Set Default
View for Search Results on page 87.
How to Build a Search 1. Create an EME for the search index. Give the “search” EME the
Index same name as your metadata EME but append _si to the name. For
example:
air -root “$AB_AIR_ROOT”_si repository create
2. Build the search index by running this python script.
python $AB_HOME/lib/bmr/bin/build-index.py
Rebuilding a Search You must rebuild the search index whenever you make changes to your
Index views — for example, by adding or deleting searchable view-elements,
adding views, or modifying the list of searchable categories. Before
following the steps above, be sure to delete the old version of the search
EME:
air -root “$AB_AIR_ROOT”_si repository destroy
-force
Then re-create the search EME datastore and re-run build-index.py.
Condition 1 The view’s element descriptor must describe objects that depend
directly on the current object for a value. The format for expressing this
relationship is:
“/<category/.rule/|”
Condition 2 The annotation rule specified in the descriptor must have been defined
with the +can-edit option to air arule create. To check this, run air
arule dump on rule to check that “can edit” is set to 1. Running the
command on Steward_Group yields the following output:
/abinitio/annotation rules/Steward_Group
reference rule ------------------
display name: Steward_Group
default value:
can edit: 1
multi-value: 1
revert-on-edit: 0
target category: Steward Group
Condition 3 If access control is enabled (that is, +access-control is set for air
repository options), then the user must have edit permission on the rule
rule in the category category. To check this, run air category
show-permissions on category. The command output must indicate that
the user has edit permission on rule.
If access control is disabled (that is, -access-control is set for air
repository options), ignore this condition.
Clicking Create Object in the sample EME opens a page from which
you can choose a category.
Enabling Create The “Create Object” hyperlink appears automatically when the
Object hyperlink following conditions obtain:
• You have an edit view for the category. The edit view defines the
annotation rules that you want users to be able to edit. For
instructions on creating an edit view, see Defining a View for
Editing Values of a Category Member on page 73.
Make sure that at least one annotation rule included in the edit
view is editable; that is, the rule is defined with the +can-edit
option to air arule create.
• The user must have write permission on both of these:
• The annotation rule defined with the +can-edit option
• The object he or she is trying to edit
• The user must be able to edit the name annotation rule.
• The category must have one and only one member location. That
is, only one directory path was specified to air category
add-member-location for the category.
• The member location must have edit permission.
Field values are unloaded as strings. For those annotation rules whose
values are not easily mapped to strings, the unloaded string is the EME
datastore path to the annotation value. This is also true for the values of
reference-type annotation rules.
Displaying Record Use the -dml option to show the record format of the command’s
Formats output. The output format varies with the category and command
options specified.
Example To display the record format of the annotation rules of the Business
Attribute category, type:
air category unload “Business Attribute” -dml
The record format is shown in the following figure, with additional
explanations:
data type/length, rule name, display name of rule
record
ascii string(big endian integer(4)) oid; /* oid*/
one rule per field ascii string(big endian integer(4)) abbreviation; /* Abbreviation*/
ascii string(big endian integer(4)) approval_status; /* Approval
Status*/
ascii string(big endian integer(4)) created_by; /* Created By*/
ascii string(big endian integer(4)) creation_date; /* Creation Date*/
ascii string(big endian integer(4)) modification_date; /* Modification
Date*/
value is a single string ascii string(big endian integer(4)) modified_by; /* Modified By*/
OR record
a sized vector big endian integer(4) count;
ascii string(big endian integer(4))[count] list;
end Valid_Values; /* Valid Values*/
ascii string(big endian integer(4)) comment; /* comment*/
ascii string(big endian integer(4)) description; /* description*/
ascii string(big endian integer(4)) name; /* name*/
ascii string(big endian integer(4)) value; /* value*/
ascii string(1) newline = A"\n";
end
In general, each annotation rule in the category is mapped to a field in
the record format. Field values are unloaded as strings, as shown in the
preceding figure. If the annotation rule is multivalued (that is, created
with the +multi-value option), then the field contains a sized vector of
strings rather than a single string. Integer values in sized vectors are
always explicitly big endian integer(4), regardless of the architecture
of the host operating system.
Specifying Individual By default, annotation values for all rules in a given category are
Rules to Unload unloaded. There are two ways to modify this behavior:
• The -no_inherit option causes annotation rules inherited from a
base category to be ignored; only those annotation rules that are
native to the specified category are unloaded.
• Use the -arule rule ... option to explicitly list the names of the
annotation rules to be unloaded. Rules not specified are ignored.
Controlling the You can control the display of date, time, and boolean annotation values
Display of Some by setting various configuration variables (page 279).
Values
Example 1 To display the record format of the annotation rules of the Business
Attribute category but not its parent category, type:
air category unload “Business Attribute -dml \
-no_inherit
Note the restricted output, compared to that on page 103:
record
ascii string(big endian integer(4)) oid; /* oid*/
ascii string(big endian integer(4)) abbreviation; /* Abbreviation*/
ascii string(big endian integer(4)) approval_status; /* Approval
Status*/
record
big endian integer(4) count;
ascii string(big endian integer(4))[count] list;
end Valid_Values; /* Valid Values*/
ascii string(1) newline = A"\n";
end
Example 2 To display the record format of the Abbreviation annotation rule in the
Business Attribute category:
air category unload "Business Attribute" -dml \
-arule Abbreviation
The output is as follows. Note that the output includes the oid
annotation rule, even though it was not explicitly specified.
record
ascii string(big endian integer(4)) oid; /* oid*/
ascii string(big endian integer(4)) abbreviation; /* Abbreviation*/
ascii string(1) newline = A"\n";
end
Sample Output from Consider the relationships shown in the following figure as the source of
Example 2 sample data. Steward is a reference-type rule that points to Personnel.
Application business_area
steward
mp/
graph1 Personnel phone
graph2 department
Personnel/
...
John Doe
Jim Anchower
Data Files steward Mitzi Katz
dat/ ...
dataset1
dataset2
...
Let’s assume that you want to unload metadata about each category. In
particular, you would like to see how foreign-key relationships between
categories, expressed by reference-type annotation rules, are presented.
air category unload Application \
-arule name steward business_area
air category unload “Data Files” \
-arule name steward
air category unload Personnel \
-arule name phone department
The sample output, below, is tabulated for the sake of presentation. Note
that the value of steward for Application and Dataset is the steward’s
OID. For example, graph1 steward is @13.1.0, the OID of Mitzi Katz.
Application
oid business_area name steward
@1.1.0 finance graph @13.1. Personnel
@2.1.0 operations graph @11.1. oid department name phone
@11.1.0 MIS John Doe 617 555-1234
Dataset @12.1.0 Jim Anchower 617 555-1234
MIS
oid name steward @13.1.0 MIS Mitzi Katz 617 555-1234
@30.1.0 dataset1 @11.1.0
@31.1.0 dataset2 @12.1.0
Displaying a List of You can use the –list option of air category unload to display a list of
Rules and Display formal names and display names of each annotation rule in the specified
Names category. While similar to the -dml option, the -list option is easier to
parse and may be useful for scripting or documentation purposes.
Example 1. To display a list of annotation rules and their display names
for the Dataset category, type:
air category unload dataset –list
The output is:
oid : oid
created_by : Created By
creation_date : Creation Date
databaseOID : Database OID
modification_date : Modification Date
modified_by : Modified By
category : category
comment : comment
description : description
name : name
path: Location
Note The generated component is actually a light wrapper for the air
category unload command. The parameters are set as appropriate from
the original command, and, as such, are not designed to be edited later.
If you change these parameters, you may need to update the embedded
DML accordingly. Alternatively, you can create a new component.
Sample Graph The sample graph Unload Builtin Categories.mp demonstrates the
Ab Initio standard approach to unloading annotation rules and values
from categories and loading them into a relational database.
Here’s what the graph does:
• A single table is created and populated for each category.
• A single column of the table is created for each annotation rule.
• The graph contains one phase for each category to be unloaded.
• Each phase of the graph contains the following component pattern:
unload_category reformat output table
Related Issues Recall that every annotation value is unloaded as a string, so you may
wish to do type conversion. The sample graph is set to create tables
automatically based on the output record format of the Reformat
component. If table creation is automatic, you may want to review the
size and type of the automatically generated columns.
See README First Install and set up the EME ODBC driver according to the instructions in
the README.htm file on the EME ODBC driver CD-ROM.
Example: Views of The following example is based on the schema of the sample EME
Steward Group and (described on page 7) and presents the Steward Group and TableView
TableView Categories categories as relational tables in a Microsoft Access database. The
example also compares the display in the browser with that in Microsoft
Access, where possible.
Take a look at the view of the Steward Group category, shown in the
following figure.
• The first view-element is comment, a single-valued annnotation
rule.
• The second view-element is members, a multivalued annotation
rule: a steward group can have more than one steward. Indeed,
Abbot has two stewards: Diana George and Roger Koss.
• The last view-element is a view defined on the TableView
category. TableViews This Steward Group Is Reponsible For
describes the name of the table or view, the associated database,
the owner of the table or view, and a description. As the view
shows, the Abbot Stewards group is responsible for a-customers
and a-transaction.
Multivalued
annotation rule
View view-element
How Categories Are When translated through the EME ODBC driver, the Steward Group
Translated by the and TableView categories become four tables in Microsoft Access.
ODBC Driver
Take a look at the Steward Group relational database table, named after
the category whose view is shown above. The rows of the table are the
members of the Steward Group category, that is, the various steward
groups in the sample EME: Abbot, Becket, and Experts on marketing.
The columns of the table are the category’s single-valued annotation
rules. For example, the comment annotation rule, shown in the view
above, is included in the table.
Rows are category members Columns are single-valued annotation rule, for example, comment
Cross-reference Table Note that the table does not have a members column. The reason is that
members is an annotation rule that allows multiple values. Relational
database tables can have only one value in a cell so as not to violate the
uniqueness constraint on OID. To represent this many-to-many
relationship, therefore, the members column is placed in its own table,
called a cross-reference table. A cross-reference table has two columns,
both of which compose its primary key. The columns are (1) the column
that cannot be represented in the original table, in this example, the
members column, and (2) the primary key of the original table, that is,
its OID column, as in Steward_GroupOID, which uniquely identifies
the steward group.
Taken together, the primary table and the cross-reference tables yield a
more complete picture of the steward groups in the sample EME. From
the Steward Group table you can see that steward group @326.1.0 is the
Abbot Stewards (see Display Name column). From the first two rows of
the cross-reference table, you can see that the Steward Group oid
326.1.0 occurs once for each member, Diana George and Roger Koss.
From the browser view (page 112), it is apparent that steward groups
have a relationship to the TableView category: Abbot Stewards are
responsible for both a-customers and a-transactions tables. The
following figure shows how the EME ODBC driver translates the
TableView category into a relational database table called TableView.
Note that in the table you cannot see any information about steward
groups. Because the relationship of tables to steward groups is
many-to-many, the ODBC driver once again creates a cross-reference
table called called TableView_xref_Steward_Group.
Summary of the ODBC The following table summarizes how the ODBC driver maps EME
Driver Mappings categories, members, and annotation rules.
ODBC Driver Maps a ... To ...
Category Relational database table. Its OID column is
the table’s primary key.
Category member Table row.
Single-valued annotation rule Table column.
Multi-valued annotation Row of a cross-reference table.
Reference rule OID of the target object; from a relational
database perspective, this is the foreign key
into the target object’s category.
Record rule OID of the target record.
Display Metadata The EME Web user interface is dynamic and intended as an interactive
Graphically in an tool; hyperlinks allow you to navigate and discovering the metadata in
OLAP Tool the EME. Often, however, you may simply want to generate reports
about certain predefined subsets of the metadata, for example, trending
of graph performance, exception reporting, or listings of business
atttributes without documentation. As an alternative to the EME Web
user interface, OLAP tools can display a report on a subset of the
metadata attractively and in a manner tailored to particular users.
For example, the following figure shows a view of the Customer table in
the EME Web user interface. It displays information about the table as a
whole as well as detailed information about each column — including
its name, data type, whether nulls are allowed, logical element, and a
long description. This view might be perfect for a technical user, for
Manipulate Metadata The following figure of the EME Web user interface shows the job runs
in an OLAP Tool for the Example4 graph. It shows some information about the graph as
well as the name, status, elapsed time, and a description of each run.
A Crystal Reports table presents less metadata than the view in the Web
browser — just the job names and elapsed run times of Graph4.
However, it adds the average elapsed time in seconds of all job runs.
Enabling User At login time, the Web server checks the name and password in a user’s
Authentication account. By default, it will do so by looking in the EME, and then in the
operating system. If you want user authentication to take place only in
the EME, then you must turn it on by running:
air repository options +internal-namespace
Enabling Access To set permissions on objects and annotation rules, you must first
Control enable access control to the EME. Run air repository options to turn
on access control:
air repository options +access-control
Now users have the default permissions described in Default
Permissions When Access Control Is Enabled on page 130. If access
control is not enabled, there is no security in the EME.
Modifying the aiw After enabling user authentication and access control, you must modify
Script the aiw CGI (Common Gateway Interface) script to run aiw-server.
1. Open the aiw script, which resides in the cgi-bin directory under
the document root of the Web server.
2. Locate the last line of the script:
exec $AB_HOME/bin/Xthin-aiw
and change the name of the executed command from Xthin-aiw to
Xaiw-front.
3. Save the script and close the file.
Starting the aiw Web Only the owner of the EME datastore should start aiw-server. Use the
Server for a Specific aiw-server start command, specifying the -repo argument followed by
Datastore the path to the datastore.
For example, the following starts the dev-datastore datastore:
aiw-server start -repo /tmp/dev-datastore
You will see a message when the Web server is ready.
See also the chapter on managing the EME in Guide to Managing
Technical Metadata.
Checking Server The aiw-server program can concurrently serve any number of
Status datastores.
To see which datastores are running, execute the command aiw-server
status. For example, at the command line type:
aiw-server status
The output might be:
Status Repository Path
------ ---------------
Running /tmp/sr12145
Running /tmp/dev-datastore
Control Files The aiw-server program writes a control file for each running EME. A
typical file name is: /var/abinitio/aiw-server!custhost!178665!833.
The location of these control files is determined by the value of the
AB_AIW_SERVER_WORK_DIR configuration variable. The value must be
an existing, readable directory. If you do not set this variable, then the
value of the AB_WORK_DIR configuration variable is used.
AB_WORK_DIR’s default value is /var/abinitio.
Make sure you set these configuration variables consistently for both the
server and the aiw script running in the cgi-bin directory. You can
accomplish this by modifying the aiw script directly or by using
.abinitiorc files carefully. To verify the settings of these variables use
the m_env -describe command, as in:
m_env -describe AB_AIW_SERVER_WORK_DIR
Examples of Consistent The following is an example of consistent variable settings in the Korn
Settings shell scripts that start and stop the aiw server as well as in the aiw CGI
file. Note that the value of AB_AIW_SERVER_WORK_DIR is
/usr/local/abinitio/special_directory in all
contexts.
export AB_HOME=/usr/local/abinitio/mpower
export PATH="$AB_HOME/bin:$PATH"
export LD_LIBRARY_PATH=$AB_HOME/lib
export LIBPATH=$AB_HOME/lib:/usr/lib
export SHLIB_PATH=$AB_HOME/lib
unset _CEE_ENVFILE
Stopping the aiw Web To shut down aiw-server (and the control files), use the aiw-server
Server for a Specific stop command, specifying the -repo argument and the path to the EME
Datastore datastore. For example:
aiw-server stop -repo /tmp/dev-datastore
Authenticating Users
User Authentication Is The EME supports internal authentication of users, thereby giving you
Based on User control over which users can log in to the EME through the Web user
Accounts interface as well as what they can see, once logged in. You must enable
user authentication; see Enabling User Authentication on page 120.
User authentication is based on the notion of user accounts. User
accounts are created within a given EME datastore. It is not necessary to
have an operating system account.
When the user logs in, the Web server checks the user’s credentials
directly in the EME. If the user’s name and password match those in the
account, the user is authenticated and will be logged in.
Attributes of a User A user account specifies a set of attributes about a user in your
Account company. Each user of the EME must have an account. A user account
has a number of attributes: name, uid (user ID), password, an optional
disabled flag, and group.
• The name is a human-readable value describing the EME user.
Examples are ‘Mitzi’, ‘Mitzi Katz’, and ‘mkatz’. A name is a set of
alphanumeric characters. Spaces are allowed, but you must use
quotes on the command line around multi-word user names.
• The uid is an integer ID representing the user. The uid is used
internally for the sake of efficiency, but normally the user’s
account is administered through the name attribute.
• The password is stored internally in an encrypted form, currently
DES 56-bit one-way encryption. A valid password consists of
alphanumeric characters and should be no longer than 8 characters.
• A value of ‘*’ is assigned as the default password when you
don’t supply a password for a new user account. Note that
users cannot log in until they have a valid password.
• A value of ‘NONE’ means the this user is not required to
supply a password.
Web users will not be able to use their accounts until they or the
administrator have changed the password.
• The disabled flag can be set to TRUE when you want to forbid the
user access to the EME.
• The group specifies the groups to which this user belongs. For
more information, see Setting Up User Groups on page 126.
Creating User Create user accounts by running air system user create (page 188).
Accounts User passwords can be created on the command line, or later, by using
the air system user change-password command (page 188).
Changing a Password You might want to change a password for the following reasons:
• The user has forgotten his or her password. The EME does not
“remember” passwords; they are immediately encrypted.
• A user’s account was created without a password. This user cannot
log in to the EME.
• You want the user to enter his or her password at the command
line.
• You want a user who previously did not require a password (-none
option was specified) to have a password, or vice versa.
To change the password for an existing user account, you can use air
system user change-password (page 188). With this command, you
can change the current setting to another password, to -none (no
password required), or to no value, which means the user must enter his
current password at the command line.
Alternatively, you can allow users to change their own passwords in the
Web user interface. To do so, enable user authentication in the EME, as
described Enabling User Authentication on page 120. Then a Change
Password hyperlink will appear in the navigation bar of the Web user
interface.
Displaying Users Use air system user show (page 190) to display the account
information for a particular user or all users.
Migrating User Migrating user accounts from one EME to another is a two-step process.
Accounts to Another
• First you copy the user accounts of the source EME to a binary file
EME
using air system export users-and-groups (page 184).
• Then you import the binary file to the target EME using air system
import users-and-groups (page 187).
Migrate user accounts only when you want users of the target EME to
have access to the Web user interface through their user accounts and
not their Unix accounts.
Enabling/Disabling When you want to prevent a particular user from logging in to the EME,
User Accounts use air system user disable (page 189). For example, to prevent user
mkatz from logging in, run:
air system user disable ‘mkatz’
When you want to allow a user whose account has been disabled to once
again log in to the EME, use air system user enable (page 189). For
example:
air system user enable ‘mkatz’
Purpose of Groups Groups make it easier for you to administer a user’s permissions to read
and write EME metadata. Read and write permissions refer to a user’s
ability to see (read) or edit (write) metadata in the Web user interface or
at the command line. Rather than assign permissions to each user in
your company, you assign each user to a group and then assign
permission to the entire group. (Permissions are explained in detail in
the next section.) For example, you might want all members of the
Managers group, but not the members of the Marketing group, to be
able to see (read) sensitive personnel metadata.
All EME users assigned to the same group have the same permissions to
access or modify metadata in the Web user interface. A user who
belongs to more than one group has the sum total of permissions for all
groups to which he or she belongs. For example, if user Mitzi is in
groups X and Y, then she has all the permissions assigned to group X
and all the permissions assigned to group Y.
Creating Groups To create a group, use air system group create (page 185), specifying
the group name and optionally the gid. You may, if you wish, do a “test
drive” of the operation before actually creating the group by using the
-dry-run argument.
Example: To create the Data Stewards group, type:
air system group create ‘Data Stewards’
Assigning Users to There are two ways to assign users to groups. You can assign a user to
Groups an existing group when you create the user (air system user create).
Alternatively, you can create a new user and then add him or her to an
existing group by running air system group add-user (page 184).
Example 1. Create the group and then create the user and assign him or
her to a group:
air system group create managers
air system user create mkatz -group managers
Example 2. Create the group and the user, then add the user to the
group:
air system group create managers
air system user create mkatz
air system group add-user mkatz managers
Assigning Groups to Groups can also contain other groups. Structuring groups in this way
Other Groups makes it easier to grant and maintain widespread permissions. Let’s say,
for example, you already have defined a number of groups (Doc, Dev,
Exec, Mkting, and HR) and assigned them permissions specific to the
job responsibilities of the users in the group. However, you want to
grant certain permissions to all users in all groups. Of course, you can
always grant the permissions to each group individually, but it would be
much more efficient to create an umbrella group called Employees, add
Doc, Dev, Exec, Mkting, and HR to Employees, and then assign
permissions to Employees.
Use air system group add-group (page 184) to add a group to another
group. Assuming Employees already exists, you would invoke the
command once for each added group:
air system group add-group Doc Employees
air system group add-group Dev Employees
air system group add-group Exec Employees
... and so on
A user in Doc, Dev, and Employees has the permissions of all three
groups. If a user has permissions based on membership in multiple
groups, then the permissions combine in the least restrictive way. For
more information, see How Group Permissions Combine on page 131.
Removing Users or When a user’s job responsibilities change, you probably need to change
Groups from Groups his or her group membership. For example, if user ‘jdoe’ is in the
Analysts group, but then becomes a consultant, you probably want to
remove him from Analysts and add him to Consultants:
air system group remove-user jdoe Analysts
air system group add-user jdoe Consultants
Removing Groups Use air system group remove-group (page 185) to remove a group
from Groups that had been included within another group. This action does not delete
the group, it merely removes it from the containing group.
Displaying Group To see the user membership of a group or all groups, use the air system
Membership group show command (page 186). For example:
air system group show Consultants
Granting Permissions
You must grant permissions in order for users or groups to be able to
read and write metadata in the Web user interface or at the command
line.
• Read permission defines which users or groups can see metadata.
• Write permission defines which users or groups can edit, save,
load, or delete metadata.
Two Kinds of The permissions model gives you control over which metadata groups
Permissions or individual users can read or write:
• You can grant users or groups permission to read/write the values
of individual annotation rules in a category. These are called
rule-level permissions.
• You can grant users or groups permissions to read and write
individual members (objects) of a category. These are called
object-level, or member-level, permissions.
Consider the Personnel category drawn as a logical table with some
sample members and annotation rules. You can grant permission to an
EME user or group to read and/or write the values of annotation rules,
such as comment and department. These annotation rules are the
columns in the logical table shown below.
You can also grant permission to users or groups to read and/or write all
the values of the annotation rules associated with the member objects of
the Personnel category — John Doe, Jim Anchower, Mitzi Katz, and so
on. These member objects are the rows in the logical table.
...
rule-level permissions
Default Permissions When access control is enabled (as described in Enabling Access
When Access Control Control on page 120), users and groups have these default Unix-style
Is Enabled permissions:
• No read or write permission on annotation rules.
• Read permission on objects, but not write permission. Note this
exception: the object owner, the users in the same group as the
owner, and the administrator have both read and write permission.
(Unix-style permissions are fully described in the chapter on managing
the EME in Guide to Managing Technical Metadata.)
Now you can modify the default permissions.
Write Permission If you intend to grant write permission on an annotation rule, make sure
Prerequisite that the rule was created with the +can-edit argument to air arule
create (page 152). If you grant write permission on a rule that cannot be
edited, the user or group will not be able to edit the value of the rule.
To find out whether or not an annotation rule can be edited, use air
arule dump (page 157).
Read Permission If you want users or groups to be able to see the values of an annotation
Prerequisite rule in the Web user interface, make sure that the annotation rule is
defined as a view-element in a view. (Views are described in detail in
Chapter 4 >Defining What Metadata Users Can See.)
To find out whether or not an annotation rule is used in a view
definition, run air category dump (page 171).
Even if an annotation rule is not part of a view, a user or group can still
see the rule’s value, assuming read permission is granted, by running air
annotation dump (page 150) at the command line.
Setting Permissions Use air category set-permissions (page 177) to grant read/write access
on Annotation Rules to a given category’s annotation rules to a specific group or user. For
example, the following command sets permission on five annotation
rules of the Personnel category. As a result, each user in the Personnel
group now has read (+read) and write (+write) permission on the name,
comment, phone, department, and salary annotation rules of Personnel.
air category set-permissions "Personnel" "Managers" \
name +read +write \
comment +read +write \
phone +read +write \
department +read +write \
salary +read +write
Setting Permissions Use the air object set-permissions command (page 182) to grant
on Objects permissions on a member object. We expect that primarily you will set
read and write permission on a directory object. (A directory is
considered an object in the EME.) However, by using the -R option to
the command, you can set the permissions on all the objects contained
within the directory.
For example, let’s say you want to set permissions on the objects in the
Personnel directory so that the users in the Managers group have read
and write permission on personnel information about the general staff
but only read permission on each other’s information (the Execs). To set
these permissions on the following directory structure:
Personnel/
Execs Staff
6 5 4 3 2 1
How Group When a user in one group also belongs to another group that has
Permissions Combine different permissions, then the user has the least restrictive permissions.
For example, let’s say that Bob, Ted, Alice, and Carol belong to the
Managers group, and Bob also belongs to the Execs group. Managers
have read permission (+read) but not write permission (-write), and
Execs have both read and write (+read +write) permissions.
Managers group
Bob
Ted
Alice
Carol +read -write
The result is that Bob has read and write permissions on the Personnel
category. This is called a logical OR combination of possibilities.
Consider the combinations of write permissions shown in the table:
Note that +read -write permissions set on Managers and +read +write
permissions set directly on user Bob (rather than on a group to which
Bob belongs) yields the same result shown above.
How Rule and Object When a user or a group has one set of permissions on the member
Permissions Combine objects of a category (shown as rows in the logical table) and has a
different set of permissions on an annotation rule in the same category,
then the user has the most restrictive permissions.
The following example illustrates how these permissions work. Let’s
say we want to accomplish these three goals:
1. Grant the Managers group — Bob, Carol, Alice, and Ted — read
and write permission on all the personnel information about the
general staff (objects 1, 2, and 3 in /Personnel/Staff) but only read
permission on all the personnel information about the company’s
Personnel category
oid name comment phone department salary
Execs Staff rows
1
2
6 5 4 3 2 1
3
+read -write +read +write 4
5
6
Set Permissions for the Managers Group to Personnel
air object set-permissions -R Managers
Give Bob, the CEO, permission to read and write salary ...
/Personnel/Execs +read -write
/Personnel/Staff +read +write air category set-permissions
Personnel Bob salary +read +write
Managers group
Bob
Ted
Alice
Carol
What is the result? Does Bob now have permission to read and write
salary information on all member objects of Personnel? The answer is
no: Bob can write the Staff rows (1, 2, and 3), but not the Execs rows (4,
5, and 6).
This is the case because row and column permissions combine
according to the logical AND combination of possibilities. This yields
the most restrictive permissions.
Consider the combinations of write permissions shown in the table:
If Managers has this And Bob has this Then user Bob
permission to OBJECT permission to RULE has
+write +write +write
+write -write -write
-write +write -write
-write -write -write
As shown in the table, Bob can acquire write permission (+write) when
both the group to which he belongs has write permission on the member
objects of the category and he (user Bob) has permission on the salary
annotation rule: +write AND +write = +write. This is shown in the first
row of the table.
Applying this to the salary annotation rule, we can see that user Bob has
write permission to the Staff objects in rows 1, 2, and 3 (+write from
Managers and +write from user Bob), but not to the Execs objects in
rows 4, 5, and 6 (-write from Managers and +write from user Bob). The
same holds true for read permission.
Personnel category
salary
Execs Staff rows
1 +write +write
2 +write +write
6 5 4 3 2 1 +write +write
3
+read -write +read +write 4 -write +write
5 -write +write
6 -write +write
So how do we achieve the goal of granting user Bob read and write
permission to the objects (rows 4-6) related to Execs. Again, we need to
grant explicit permission to user Bob:
air object set-permissions Bob \
/Personnel/Execs +read +write
This gives user Bob permission to write these objects, because,
according to the table of logical OR combination of possibilities
(page 132), -write permission for the Managers group (to which Bob
belongs) combined with explicit +write permission for user Bob yields
write permission for user Bob.
The following figures show that Bob now has full permissions to salary.
Set Mixed Permissions for the Managers Group to Personnel objects user Bob’s write permission on salary
air object set-permissions -R Managers
/Personnel/Staff +read +write
/Personnel/Execs +read -write
Personnel category
salary
rows
1 +write +write
2 +write +write
3 +write +write
4 -write +write
5 -write +write
6 -write +write
The third and last goal is to give Bob exclusive read and write
permission on salary information. Currently, the other users in
Managers have read and write permissions on the objects in Staff with
respect to salary as well as read permission on the objects in Execs with
respect to salary.
To change this situation, we must restrict the permissions of Managers
so that the group cannot read and write the values of the salary
annotation rule:
air category set-permissions \
Personnel Managers salary -read -write
Because object and rule permissions combine through a logical AND
(page 134), other users in Managers now cannot read or write salary.
See the following figure.
2 +write -write
3 +write -write
4 -write -write
5 -write -write
6 -write -write
-root Specifies the Optionally, -root root specifies the root of the EME datastore. In most
EME Datastore cases, use an absolute path name, for example, /disk3/data/datastore1.
Typically, you specify the EME datastore name by setting the
configuration variable AB_AIR_ROOT. For example, to set the root of the
datastore1 datastore and then execute the air ls command, you could
type at the prompt:
export AB_AIR_ROOT=/disk3/data/datastore1
air ls -l
Alternatively, you can specify the EME datastore name on the
command line. For example:
air -root /disk3/data/datastore1 ls -l
The EME root can be the URL of a remote file, for example,
//host/projects/warehouse/datastore1. A remote host can be specified
if the EME software and the Co>Operating System software are
installed on that host and your environment is configured to allow
access to that host by way of the Co>Operating System.
-version Specifies the Version name or number Optionally, -version version specifies
Version or Tag either the version name or number of the datastore to be accessed. For
example, to display project information for version 125, type:
air -version 125 project show /Projects/warehouse
Assuming that version 125 has been tagged QA-ready, you could
alternatively specify the preceding command as:
air -version QA-ready project show \
/Projects/warehouse
If you specify a version number that does not exist, the EME rolls back
the version number to the most recent existing version and then executes
the command. For example, assume a given object has three versions —
5, 12, and 20. You run an air command on that object and specify the
-remote Specifies a Optionally, -remote specifies that the air utility should start the EME
Remote Connection server remotely even if a direct connection is possible. Alternatively,
you can achieve this by setting the AB_AIR_USE_LOCAL_STORAGE
configuration variable to False.
Commands The air utility commands related to categories and annotations fall into
a number of groups. For a detailed description of each group and related
commands, see:
• air annotation Group on page 148
• air arule Group on page 152
• air category Group on page 162
• air object Group on page 181
• air system Group on page 184
• air web-interface Group on page 191
Arguments Many air commands require you to supply the name of an object as an
argument. You can refer to objects by a variety of names, as described
in Specifying Object Names as Arguments on page 142.
Path Names Begin A path name must begin with one of these special characters:
with /, /~, or @
• / (slash)
• /~ (slash and tilde)
• @ (at sign)
After that, you separate elements of the path with / .
Path Names You almost always specify a name of a datastore object as a path
Beginning with / beginning with a slash ( / ).
Specify a Prefix to In very rare circumstances name conflicts can arise. For example, it is
Disambiguate Names possible, though unlikely, that a graph could contain a layout and a
component having the same name. To avoid this problem, specify a
disambiguating prefix between elements of the path.
The following table contains the list of disambiguating prefixes.
Prefix Description
Prefix Description
air annotation Group Assigns and removes annotation values, comments, and page 148
descriptions
air annotation add Adds an annotation value to an object that is a member of a page 148
category
air annotation document Sets an object’s description and comment properties page 149
air annotation dump Displays all annotation rules and values (if any) for a page 150
member object of a category
air annotation rm Removes from an object one or more annotation values, or all page 151
annotation values of the specified rule
air arule Group Manages the creation and modification of annotation rules page 152
air arule add-choice Creates or appends a list of choices for a choice-type page 152
annotation rule
air arule create Creates an annotation rule with the specified attributes page 152
air arule dump Displays information about an annotation rule page 157
air arule modify Modifies the characteristics of an annotation rule page 158
air arule rm Deletes the annotation rule from an EME datastore page 160
air arule rm-choice Removes one or more choices, or all choices, from a rule’s page 160
choice list
air category Group Manages the creation, modification, and deletion of page 162
categories and views; also grants permissions to users and
groups to access a category’s annotation rules.
air category add-member-location Adds objects residing in a specified location to the category's page 162
membership
air category add-rule Associates annotation rules with a category, adding each rule page 164
to the category’s list of rules
air category add-view Creates a view and associates it with a category page 166
air category add-view-element Describes view-elements and associates them with an page 167
existing view on a given category
air category clear-permissions Removes the current permission settings on a category’s page 170
annotation rule
air category create Creates a category with the specified name and based on the page 170
parent category
air category dump Displays information about a category, including its location, page 171
its parent, the location of its members, its annotation rules,
and its views
air category inheritvia-rule When an annotation rule that can inherit values has no value, page 172
the value will be inherited from an object that has the
specified annotation rule
air category list-members Displays the members of a given category page 172
air category modify-rule Modifies certain characteristics of a category’s annotation page 173
rule
air category rm Deletes the specified category from the datastore page 173
air category rm-member-location Removes the specified location from the category's member page 174
locations
air category rm-rule Removes the rule from the category's set of rules page 175
air category rm-view Removes views from the specified category page 176
air category rm-view-element Removes elements from a category’s view page 176
air category set-permissions Grants permissions to the specified user or group to read and page 177
write the values of some or all of the annotation rules in a
specific category
air category show-permissions Displays the current permissions on a category’s annotation page 179
rules
air category unload Unloads the contents of the specified category to standard page 180
output
air object Group Manipulates objects and directories in the EME; the page 181
commands described here pertain to permissions
air object clear-permissions Clears permissions for objects in a directory location page 181
air object restore-permissions Restores the initial permissions on objects page 181
air object set-permissions Sets the read and write permissions on one or more objects page 182
for a single user, a single group, or all users
air object show-permissions Displays permissions for objects in an EME datastore page 183
air system Group Administers system objects, groups, and user accounts page 184
air system export Copies all EME user accounts and groups to a binary file, for page 184
users-and-groups export to another EME datastore
air system group add-group Adds a group to another group page 184
air system group add-user Adds the specified user to the specified group page 184
air system group create Creates a user group with the specified name page 185
air system group remove-group Removes a group from its container group page 185
air system group remove-user Removes the specified user from the specified group page 186
air system group show Displays a list of groups, optionally showing their page 186
membership
air system import Creates the user accounts on the target EME datastore from page 187
users-and-groups the specified export file
air system install categories Builds the base schema’s categories and rules page 187
air system user change-name Changes the user name for the specified user page 187
air system user change-password Specifies a new clear password for the user page 188
air system user create Creates an account for the specified user page 188
air system user disable Disables the account of the specified user page 189
air system user enable Enables the disabled account of the specified user page 189
air web-interface Group Administers settings for the main page and other aspects of page 191
the business metadata Web user interface
air web-interface clear Deletes the settings for a specific group of users page 191
air web-interface describe Displays descriptions of the configuration variables for the page 191
business metadata Web user interface
air web-interface set Sets a configuration variable for a specific aspect of the Web page 192
user interface for a specific group of users
air web-interface set-order Sets the order of groups that are searched for variables and page 193
values in order to build the Web user interface for a particular
group
air web-interface show Displays the current values of the configuration variables for page 194
a specific group of users
air web-interface show-order Displays the current order of groups page 194
air annotation add Adds an annotation value to an object that is a member of a category.
air annotation add rpath1 arule {rpath2 | -string s1 ...}
air annotation dump Displays all annotation rules and values (if any) for a member object of
a category.
air annotation dump [-reverse] rpath [-category category]
Example To see the annotation rules and values for graph1, type:
air annotation dump \
/Projects/myproject/mp/graph1.mp
If graph1 is a member of the Application category and if Application is
based on the built-in graph category, then this command will display all
the rules and values for graph and then all the rules and values for
Application.
For example, you might see something like the following. All of these
annotation rules are single-valued. If no value follows the annotation
rule name, as in the version rule, then the value is unset.
graph: -----------------------------------
oid: 0232.1.0
name: /Projects/myproject/mp/graph1.mp
comment:
description: Accounts Receivable App
display_name: My Graph
created_by: S Finkel
creation_date: 3/1/2001 16:19:10
modified_by: S Finkel
modified_date: 5/2/2001 14:20:07
categoryOID: 0052.1.1
path: /Projects/myproject/mp/graph1.mp
author: Ab Initio Software Corp
version:
Application: ------------------------------------------------------
business_area: Finance
steward: John Doe
air annotation rm Removes from an object one or more annotation values, or all
annotation values of the specified rule.
air annotation rm rpath arule {-all | value ...}
air arule add-choice Creates or appends a list of choices for a choice-type annotation rule.
add arule add-choice [-q] arule choice ...
Usage information The specified rule must have been created with a
-type choice argument.
The first time you run the command for a given choice-type annotation
rule, it creates the choice list. Rerunning the command against the same
annotation rule appends the choice list to the existing choice list.
Note To remove a choice, run air arule rm-choice (page 160).
air arule create Creates an annotation rule with the specified attributes.
air arule create [-q] [-f] arule ⇒
[-display string] ⇒
-type {string | choice | reference | record} ⇒
[-default-value value] ⇒
[-datatype datatype] ⇒
[-size size] ⇒
[+can-edit |-can-edit] ⇒
[+revert-on-edit |-revert-on-edit] ⇒
[+big-text |-big-text] ⇒
[+multi-value |-multi-value] ⇒
[+raw-text |-raw-text] ⇒
[+in-list |-in-list]⇒
[+add-choice |-add-choice] ⇒
[target-category]
-datatype datatype Optional. The data type for this rule’s values.
datatype may be STRING (default), INTEGER,
TIME, BOOL, and FLOAT.
air arule dump Displays information about the specified annotation rule.
add arule dump arule
Usage information For all annotation rules, the output displays the
rule’s display name, default value, whether or not it can be edited, and
whether or not it takes a single value or multiple values.
For choice-type rules, the output also displays the rule’s choice list,
whether or not values can be added to the choice list, and whether or not
users must choose values from a predefined list.
For reference-type rules, the output also displays the name of the rule’s
target category.
In the output, 1 means “yes” and 0 means “no.”
in_list: 1
add_choice: 0
choices: approved
pending
defaulted
Example 3 To find out about the Steward_Group rule, type:
air arule dump Steward_Group
The output shows that Steward_Group is a reference-type rule that
points to the Steward Group target category. The rule has no default
value, can be edited, and can take multiple concurrent values. It name is
displayed in the Web user interface as Steward Group.
/abinitio/annotation rules/Steward_Group
reference rule ------------------
display name: Steward Group
default value:
can edit: 1
multi-value: 1
target category: Steward Group
Alias The alias for this command is air dump arule.
air arule rm-choice Removes one or more choices, or all choices, from a rule’s choice list.
air arule rm-choice [-q] arule {-all | choice ...}
Example Assume that the choice list for the department rule consists
of a number of strings: “Operations” “Finance” “Marketing”
“Research”. To remove Finance and Marketing from the list of
possible values, type:
air arule rm-choice “Finance” “Marketing”
air category Adds objects residing in the specified location to the category's
add-member-location membership.
air category add-member-location [-q] category [depth] rpath ...
Usage information Only objects that match the type of the parent
category and are contained in the specified locations become members
of the specified category. For example, if the parent category is graph,
then only graph objects residing in rpath can become members of graph.
The depth argument gives you fine control over which descendant
objects of rpath are candidates for membership in a category. By
default, all descendants of rpath can become members of a category,
assuming they are of the same type as the category’s parent. Therefore,
in the figure on page 163, graph1, graph2, and test will become
members of Application if you specify:
air category add-member-location Application \
/Projects/project1/mp
However, mime-object1 and all the documents in the Docs folder are
excluded because they are not graph objects. (Documents are MIME
objects.)
Application
/Projects/project1/mp business_area rule
steward rule
graph1.mp
test /
graph2.mp
test.mp
mime-object1
Doc1
Docs Doc2
Doc3
air category add-rule Associates one or more annotation rules with the specified category,
adding each rule to the category’s list of rules.
air category add-rule [-q] [-f] category ⇒
arule [+required | -required] [+inherit | -inherit] ⇒
[arule [+required | -required] [+inherit | -inherit]] ...
-q Optional. Suppresses error if the rule is
already associated with the category.
However, if arule has the same name but
different attributes, then an error occurs.
Usage information You can associate more than one annotation rule
with the specified category. See Example on page 166.
+required option Use +required when you want to require a user of the Web user
interface to specify a value for this annotation rule. For example, you
might make the steward rule required, because you want to ensure that
every dataset has an owner.
+inherit option Use +inherit when you want to increase the likelihood that an object
will have a value for a given rule. The +inherit option works in
conjunction with the air category inheritvia-rule command (page
172). If you specify +inherit, you must also issue the air category
inheritvia-rule command.
In the following figure, the steward rule is defined as +inherit.
air category add-rule Application \
steward +inherit
This means that if a member of Application doesn’t have an explicitly
set value for steward, then steward can inherit its value from the value
of the reference-type rule specified in air category inheritvia-rule.
air category inheritvia-rule Application \
business_area
In the example, the reference rule is business_area. Assume that the
value of business_area is a member of the Systems category.
Personnel
Personnel/
Application Systems John Doe
mp/ system/ Mitzi Katz
business_area Jim Anchower
graph1 finance steward
steward
graph2 business_area marketing steward
steward
business_area operations
graph3
steward
Now let’s say that the value of the steward rule for the graph1 object is
unset. (Default values are not considered.) According to the +inherit
option and the air category inheritvia-rule specification, the EME
determines whether the value of the business_area rule for graph1 refers
to a category with a steward rule and, if so, whether that steward value
has a value. In the example, the value of business_area for graph1 is
finance in the Systems category. Fortunately, Systems is associated with
a steward rule, whose value is a member of Personnel. The value of the
steward annotation rule for finance is Mitzi Katz. Therefore, the value
of steward for graph1 is set to Mitzi Katz.
In the event that Systems does not have a steward rule, or if its steward
rule has no value, then the value of steward on graph1 is set to the
default value, if any was specified when the annotation rule was created.
Otherwise, the value remains unset.
For example, graph2’s steward rule has no value. The value of
business_area on graph2 is marketing, but the value of steward on
marketing is unset. Therefore, the EME software is unable to supply a
value for steward on graph2.
air category add-view Creates a new, empty view and associates it with the specified category.
air category add-view [-q] category view...
Example To create the DF-Details view and associate it with the Data
Files category, type:
air category add-view “Data Files” DF-Details
air category Describes one or more elements of data (view-elements) and associates
add-view-element them with an existing view view on the specified category.
air category add-view-element [-q] [-f] category ⇒
view ⇒
element-type ⇒
[+index | -index] ⇒
[+display-contents | -display-contents]
[+auto-show | -auto-show] ⇒
[+can-toggle | -can-toggle] ⇒
label ⇒
element-descriptor ⇒
element-view ⇒
[element-type [+index | -index] [+auto-show | -auto-show]
[+can-toggle | -can-toggle] label element-descriptor element-view]...
air category Removes the current permission settings on one or more annotation
clear-permissions rules of a category.
air category clear-permissions category {-all-rules | arule ...}
air category create Creates a category that has the name category and is based on the parent
category parent.
air category create [-q] category parent
air category dump Displays information about the specified category, including its
datastore location, its parent category, the datastore location of its
members, its annotation rules, and its views.
air category dump category
“Views” displays the names of the views defined on Application and the
view-elements (label, type, and rule) that make up each of its view.
air category When an annotation rule that can inherit values (+inherit) has no value,
inheritvia-rule the value will be inherited from an object that has the specified
annotation rule.
air category inheritvia-rule category arule
air category Modifies certain characteristics for an annotation rule associated with
modify-rule the specified category.
air category modify-rule category arule ⇒
[+required | -required]
[+inherit | -inherit]
category Name of an existing category.
air category rm Deletes the specified category from the EME datastore.
air category rm [-q] [-keep-annotations] category ...
-q Optional. Suppresses error if the category
does not exist.
-keep-annotations Optional. Retains annotation values of the
category’s members.
category ... Name of one or more categories you want to
remove.
air category Removes the specified location from the category's member locations.
rm-member-location
air category rm-member-location [-q] ⇒
[-keep-annotations] ⇒
category ⇒
rpath ...
Application
/Projects/project1/mp
vertex1
graph1 vertex2
graph2 member
member
mime-object1
Doc1
Docs Doc2
Doc3
Suppose that you then decide that only graph2 should be a member. You
would run air category rm-member-location again to remove graph1:
air category rm-member-location Application \
/Projects/project1/mp
All graph objects in this location lose their membership (that is,
graph1); however, graph2 remains a member, because it was explicitly
made a member of Application.
air category rm-rule Removes the annotation rule arule from the category's set of rules.
air category rm-rule [-q] [-keep-annotations] category arule...
air category rm-view Removes the specified view, or all views, from the specified category.
air category rm-view [-q] category {view ... | -all}
air category Removes the specified elements, or all elements, from a category’s
rm-view-element view.
air category rm-view-element [-q] category view {label ... | -all}
air category Grants permissions to the specified user or group to read and write the
set-permissions values of some or all of the annotation rules in a specific category.
air category set-permissions category ⇒
{-all-users | user-name | group-name} ⇒
{{-all-rules {[+read | -read] | [+write | -write] |
{+read | -read} {+write | -write}}
OR
{arule ... {[+read | -read] | [+write | -write] |
{+read | -read} {+write | -write}} ...}
air category Displays the current permissions on one or more annotation rules for the
show-permissions specified category.
air category show-permissions category [arule ...]
air category unload Unloads the contents of the specified category to standard output.
air category unload category ⇒
[-dml | -component | -list] ⇒
[-no_inherit] ⇒
[path]⇒
[-arule rule...]
air object Clears permissions for one or more objects in a directory location.
clear-permissions
air object clear-permissions [-R] rpath ...
air object Sets the read and write permissions for a single user, a single group, or
set-permissions all users on one or more objects in an EME datastore.
air object set-permissions [-R] ⇒
{user-name | group-name | -all-users} ⇒
{rpath ...{[+read | -read] | [+write | -write] ⇒
| {+read | -read} {+write | -write}}...
.
-R Optional. Restores permissions on the
object rpath as well as any other objects
contained within rpath (that is, objects in a
directory) recursively.
Example. To recursively set read and write permissions for the Data
Stewards group with respect to the A-team, B-team, and C-team:
air object set-permissions -R “Data Stewards”\
\Stewards\A-team \Stewards\B-team +read +write\
\Stewards\C-team +read -write
For more information, see Granting Permissions on page 129.
air system export Copies all EME user accounts and groups to a binary file, for export to
users-and-groups another EME datastore.
air system export users-and-groups rpath
air system group Adds the specified user to the specified group.
add-user
air system group add-user [-q] user-name group-name
air system group Creates a user group with the specified name.
create
air system group create group-name [-dry-run] [-gid]
air system group Removes the specified user from the specified group.
remove-user
air system group remove-user [-q] user-name group-name
air system group Displays a list of one or more groups, optionally showing the
show membership of the group(s).
air system group show {group-name | -all} -v
Examples Assume that the cats group contains the following users:
felix, tabitha, and sheba, and the dogs group contains fido, lassie, and
cleo. Both groups belongs to the animals group. To see the membership
of all groups, type:
air system group show -all -v
The output would be:
group
-----
animals
contains: cats dogs
cats
is in: animals
contains: felix tabitha sheba
dogs
is in: animals
contains: fido lassie cleo
air system import Creates the user accounts on the target EME datastore from the
users-and-groups specified export file. The file was created by running air system export
users-and-groups (page 184).
air system import users-and-groups rpath [-dry-run] [-keep-ids]
Usage information The command accepts only the output from air
export users-and-groups. If a given user or group already exists, a
warning is issued and that user or group is not created.
By default, if a given user ID is already taken, a new user ID is created.
However, if the -keep-ids option is specified, then the system issues a
warning and does not create the user or group.
air system install Builds or rebuilds the categories and annotation rules of the base
categories schema. The categories are stored in /abinitio/categories. The
annotation rules are stored in /abinitio/annotation rules.
air system install categories
air system user Changes the user name for the specified user.
change-name
air system user change-name old-username new-username
air system user Specifies a new clear password for the user.
change-password
air system user change-password user-name ⇒
[-clear-password clear-password | -none]
air system user create Creates an account for the specified user.
air system user create ⇒
user-name ⇒
[-dry-run] ⇒
[-uid uid-number] ⇒
[ -group group-name] ⇒
[-clear-password clear-password] ⇒
[-crypted-password crypted-password]
air system user enable Enables the disabled account of the specified user.
air system user enable user-name
air system user show Displays information about the account of a given user or of all users.
air system user show {user-name | -all}
JimAnchower 10015 * no -
JohnDeer 10013 * no -
NoPwdUser 10012 * no -
air web-interface clear Deletes all or some of the configuration settings of the business
metadata Web user interface for the specified group of users.
air web-interface clear group {-all | setting...}
air web-interface Displays descriptions of some or all of the configuration variables for
describe the business metadata Web user interface.
air web-interface describe -w {-all | setting...}
Setting Description
air web-interface set Sets a configuration variable for a specific aspect of the business
metadata Web user interface for the specified group of users.
air web-interface set group setting value
air web-interface Sets the order of groups that are searched for variables and values in
set-order order to build the Web user interface for a particular group.
air web-interface set-order group1 group2 ...
.
group1 Valid group name. First group searched by the Web
user interface for variables and their values.
air web-interface show Displays the current values of some or all of the configuration variables
of the business metadata Web user interface for the specified group.
air web-interface show -w group {-all | setting...}
air web-interface Displays the current order of groups, as set by air web-interface
show-order set-order (page 193).
air web-interface show-order
Usage information The world group should appear at the end of the
list, as in:
cats
dogs
mammals
world
Related Manual If you need information about other Ab Initio components, see the
Component Reference.
Folder to Access GDE To locate the GDE components described in this appendix, expand the
Components top-level folder $AB_HOME/connectors in the GDE’s Component
Organizer, then the EME subfolder.
Parameters
Input Record Format The input record format for Load Annotation Values is fixed:
record
string("\0") project = NULL("");
string("\0") url = NULL(""); // url for object to be annotated
string("\0") rule; // name (rule) for the annotation
string("\0") annotation_url = NULL("");
string("\0") value = NULL("");
string("\0") mime_type = NULL("");
string("\0") comment = NULL("");
end
It is found in $AB_HOME/connectors/dml/annotation.dml.
Load Category
Parameters
About Loading Edited A common way to use Load Category is to first unload a category with
Objects Unload Category, then edit the values of user-defined annotation rules,
and finally store the updated objects in the same datastore with Load
Category. You can also use Load Category to migrate annotation values
from one EME datastore to another.
You use Load Category when you want to edit values of user-defined
annotation rules. Except for the built-in annotation rules listed below,
you cannot use Load Category to populate built-in annotation rules.
Built-in annotation rules are not editable except for the following:
• comment
• description
• display_name
• mime_type
• _value
When you are editing annotation values, the object you are editing must
exist unless it is a MIME object. If it is a MIME object, and it does not
yet exist in a datastore, Load Category creates it in the datastore and
populates its values.
If the object you are editing is a MIME object that does not yet exist, the
following rules apply:
• The directory where you are trying to create the MIME object must
already be specified as a member location for the category.
• You must populate both the path and the _value annotation rules
for the MIME object that you are creating.
Load Category can populate annotation values that are subrecords. If the
subrecord does not yet exist, Load Category can create it only if each
subrecord field contains a MIME object. If the subrecord does not yet
exist, and it contains any other kind of field, Load Category rejects that
input record.
Load Category can populate an annotation value that refers to an
annotation value in another category. That is, it can update an
annotation rule that is a reference rule.
Specifying Annotation Based on the parameters you specify, Load Category automatically
Values to Load generates the input record format. Load Category produces the same
output as the air category unload command with the -dml option. For
an example of the record format generated, see Displaying Record
Formats in Chapter 6 of the Enterprise Meta>Environment Guide to
Managing Enterprise Metadata.
Use the arule parameter to specify the annotation rules whose values
you want to load. This allows you to load only the particular annotation
values you choose, rather than the entire object. Alternatively, if you
want to load almost all annotation values except for a few, you can
modify the DML record format that Load Category generates. Simply
remove the definitions for the annotation value you do not want to load.
Related Topics • Load File Dataset Command-line Syntax in the GDE Help
• Load Table Dataset (page 203)
Parameters
Input Record Format The input record format for Load File Dataset is fixed:
record
string("\0") project;
string("\0") dataset_url; // project relative url for file dataset
string("\0") dml_string = NULL("");
string("\0") dml_url = NULL("");
string("\0") comment = NULL("");
end;
It is found in $AB_HOME/connectors/dml/file_dataset.dml.
project The datastore path for the project in which the file
dataset will be defined. Required.
Load Mimeobj
Parameters
Input Record Format The input record format for Load Mimeobj is fixed:
record
string("\0") project = NULL("");
string("\0") url; //URL for the object to be annotated
string("\0") value; //value of the mime object
string("\0") mime_type = NULL(""); //MIME type default = text/plain
string("\0") comment = NULL("");
end
It is found in $AB_HOME/connectors/dml/mimeobj.dml.
Parameters
Input Record Format The input record format for Load Table Dataset is fixed:
record
string("\0") project;
string("\0") database_name;
string("\0") table_name;
string("\0") dml_string = NULL("");
string("\0") dml_url = NULL("");
string("\0") comment = NULL("");
end;
It is found in $AB_HOME/connectors/dml/table_dataset.dml.
Load Type
Parameters
Input Record Format The input record format for Load Type is fixed.
record
string("\0") project = NULL("");
string("\0") dml_string;
string("\0") dml_url;
string("\0") comment = NULL("");
end;
It is found in $AB_HOME/connectors/dml/type.dml.
project Datastore path for the project in which the type will
be defined. If the project is not defined, the path for
the type is assumed to be absolute.
Parameters
Description of Input The input record format for Remove Objects and Annotations is fixed:
Record for Remove record
Objects and string("\0") project = NULL("");
Annotations string("\0") url = NULL(""); // url for object
string("\0") rule; // annotation rule name
string("\0") value = NULL("");
end
The record format is in $AB_HOME/connectors/dml/annotation.dml.
Specifying the Objects How you define the contents of the input record for Remove Objects
and Values to Remove and Annotations determines whether you delete entire objects or
particular annotation values. For example, you can use this component
to delete
• All data stewards in a particular steward group
• Just the home phone number for each data steward
• All datasets from a particular project
The following table shows what to specify according to what you want
to delete.
Object In the url field, specify the URL for the object you want to delete.
If you want to specify a relative URL, in the project field, specify the
project that contains the object you want to delete.
Do not specify values for the rule and value fields.
Any annotation value for a In the url field, specify the URL for the object that contains the
particular annotation rule annotation value you want to delete.
In the rule field, specify the annotation rule for the value you want to
delete.
Do not specify a value in the value field.
If you want to specify a relative URL, in the project field, specify the
project that contains the object that contains the annotation value you
want to delete.
The component replaces a removed value with an empty string or
NULL according to the value type. If an annotation rule has more than
one value, the component removes all values.
A particular value for a In the url field, specify the URL for the object that contains the
particular annotation rule annotation value you want to delete.
In the rule field, specify the annotation rule for the value you want to
delete.
In the value field, specify the particular value you want to delete.
If you want to specify a relative URL, in the project field, specify the
project that contains the object that contains the annotation value you
want to delete.
If the specified annotation rule has a single value that matches the
specified value, the component replaces the value with an empty string
or NULL according to the value type. If the specified annotation rule
has one or more values that do not match the specified value, those
values remain in the datastore.
Unload Category
Unload Category unloads the annotation rules of all objects that are
members of a given category.
Parameters
mimeobj parameter
input
output vertex uses dataset(s) as lookup
dataelement
vertex
vertex_summary
output input
Key:
one-to-many foreign-key relationship
many-to-many foreign-key relationship
Built-in Categories by The preceding figure shows how the schema’s 19 built-in categories are
Group related to one another. To make it easier to understand the schema, we
have divided it into six groups:
• Data-manipulation, or application, categories
• Data-execution, or job-tracking, categories
• Data-description categories
• Metadata-extension category
• Project-related group of categories
• Dependency analysis group of categories
Note that there is some overlap in the figures, as some categories have
foreign-key relationships with categories in other groups. For
completeness, the figures include cross-references. Also, the graph
category appears in both the data-manipulation and data-execution
groups.
graph
flow
input
output
vertex
Data-execution Group of The data-execution group consists of the categories that relate to
Categories running an application.
job graph
phase
vertex_summary flow
flow_summary
Data-description Group The categories in the data-description group describe your data
of Categories structures.
database
dataset
dataelement
Metadata-extension The metadata-extension group has only one category, mimeobj. This is
Category the base category for all new user-defined categories that cannot be
derived from the built-in categories.
mimeobj
Project-related Group of The project-related group of categories describe the technical metadata
Categories within the EME.
graph parameter
database
project
common
include global
package type
dataset
transform
vertex
dataelement
vertex
output input
Description of Base You cannot modify or delete the annotation rules of the base schema.
Categories and Rules Note that the names are case-sensitive.
Common Rules These annotation rules are common to all categories in base schema.
display_name Alias for the object, used to refer to the object in the
Web user interface. Default is value of name.
creation_date Date and time that the original version of this object
was created. The date and time format can be
controlled by configuration variables (page 279).
modification_date Date and time that the current version was last
modified. The date and time format can be
controlled by configuration variables (page 279).
database Category Rules Rules for the database (a mime object with a MIME type of
“text/x-abinitio-db-dbc”). See also Common Rules (page 226).
dataelement Category Dataelement field in a file or table. See also Common Rules (page 226).
Rules For more information about individual data elements, see the Data
Manipulation Language Reference.
dataset Category Rules Rules for a dataset, the logical representation of a file or table. See also
Common Rules (page 226).
flow Category Rules Rules for the dataflow between two vertices of an Ab Initio graph. See
also Common Rules (page 226).
flow_summary Category Rules for the tracking information for a single flow in a job. See also
Rules Common Rules (page 226).
global Category Rules Rules for global variables defined as part of a package. See also
Common Rules (page 226).
graph Category Rules Rules for an Ab Initio graph. See also Common Rules (page 226).
input Category Rules Rules for the uses of a dataelement as a source in a graph. See also
Common Rules (page 226).
job Category Rules Rules for the execution of a graph. See also Common Rules (page 226).
exit_status Exit code that ended the job. Code can be: starting,
running, paused, finished, error, unknown.
mimeobj Category Rules Generic object from which many user extensions to the schema are
derived. A MIME object can store the contents of arbitrary files. See the
Guide to Managing Technical Metadata for more information about
MIME types. See also Common Rules (page 226).
output Category Rules Rules for uses of a dataelement as a target in a graph. See also Common
Rules (page 226).
package Category Rules Rules for the record format (.dml) and transform (.xfr) files as part of a
package in the EME. See also Common Rules (page 226).
parameter Category Rules for the project parameters defined in the EME. See also Common
Rules Rules (page 226).
phase Category Rules Rules for a single phase within a job. See also Common Rules (page
226).
project Category Rules Rules for the projects defined in the EME. See also Common Rules
(page 226).
transform Category Rules for transforms defined as part of a package. See also Common
Rules Rules (page 226).
type Category Rules Rules for types defined as part of a package. See also Common Rules
(page 226).
vertex Category Rules Rules for a vertex (component) within an Ab Initio graph. Note that
subgraphs are not represented. To indicate subgraphs, the denotation “.”
is used, effectively flattening the graph, for example,
crm.prepare-accounts, where prepare-accounts is the name of the
subgraph. See also Common Rules (page 226).
location For file components, the URL of the file. For table
components, the name of the table. Else, blank.
vertex_summary Rules for the tracking information for a single vertex in a job. See also
Category Rules Common Rules (page 226).
Logical group The logical group consists of seven categories. dataelement is in the
base schema. Each box denotes a single category.
is a
Validation Spec
Physical group The physical group consists of five categories. Physical Element
appears in both logical and physical groups; dataset and dataelement are
in the base schema.
is a
Key
foreign
Description of This section describes all the annotation rules defined on the extended
Extended Categories categories in standard-schema.ksh. You cannot modify or delete these
and Rules rules, but you can add rules to these categories and derive new
categories from them. Note that the names are case-sensitive.
Column Category Rules Extends the Physical Element category, which extends the dataelement
category (page 234) to represent a database table.
Index Category Rules Represents an index on a table. Extends the base schema’s mimeobj
category (page 230).
Invalid Value Item An explicit invalid value. Extends the base schema’s mimeobj category
Category Rules (page 230). You should not define locations for members of this
category. For information about members, see page 25 and page 26.
Key Category Rules Represents a key on a table. Extends the base schema’s mimeobj
category (page 230). See also Common Rules (page 226).
. Annotation rule Description
Logical Element Base for logical, or business, attributes. Extends the base schema’s
Category Rules mimeobj category (page 230).
Logical Entity Category Grouping of Logical Elements. Extends the base schema’s mimeobj
Rules category (page 234).
Physical Element Extends the base schema’s dataelement category (page 234) to represent
Category Rules fields and columns.
TableView Category Extends the base schema’s dataset category (page 228) to represent a
Rules database table or view.
Valid Range Item Range of valid values. Extends the base schema’s mimeobj category
Category Rules (page 230). You should not define locations for members of this
category. For information about members, see page 25 and page 26.
Valid Value Item An explicit valid value. Extends the base schema’s mimeobj category
Category Rules (page 234). You should not define locations for members of this
category. For information about members, see page 25 and page 26.
Validation Spec Category Definition of the valid values for a field or logical element. Extends the
Rules base schema’s mimeobj category (page 230). You should not define
locations for members of this category. For information about members,
see page 25 and page 26.
What Are Load Load Connectors are a suite of graphs, shipped with the Co>Operating
Connectors? System, that extract metadata from various prepackaged applications
and load that metadata into an EME datastore.
This section describes the structure of each connector and also provides
some guidelines on how to modify these graphs to meet specific needs.
All of the load connectors reside in a subdirectory of
$AB_HOME/connectors.
General Information
Where the Graphs and • All but one of the graphs reside in
Scripts Reside $AB_HOME/connectors/metadata-source. Their names are in the
form metadata_source_to_eme.mp, where metadata_source is
one of these:
• ERwin — ER1 diagram
• Oracle Designer — Oracle Designer repository
• DB2 — DB2 database catalog
• Oracle — Oracle database catalog
• Teradata —Teradata database catalog
• SQL Server — Microsoft SQL Server database
• Sybase — Sybase database
• Redbrick — Redbrick database
• The graph load_eme_from_files.mp resides in
$AB_HOME/connectors/EME/Load. It loads the files that were
generated from a database catalog into an EME datastore on
another physically disconnected system.
• Expanding the $AB_HOME/connectors folder in the GDE shows
a subdirectory for each load connector. From the subdirectories,
you can find the graph you need for a given metadata source. You
can open it by right-clicking its name and selecting the Edit item.
• Complementary shell scripts (metadata_source-to-eme.ksh) reside
in the same location as the graph. These graphs have been set up to
run without modification from the command line.
Host and EME All of the graphs default to the host settings for the EME. You should
Datastore Settings change to the host settings that connect to the server where your data
source is located.
Check the EME Datastore Settings dialog to make sure that it specifies
the datastore into which you want to load the metadata. Alternatively,
override the TARGET_EME_DATASTORE parameter (page 242) at
runtime.
Korn Shell is required Since these graphs use conditional components, they require a Korn
Shell (Unix, Windows NT, or mainframe) to run.
extend-schema.ksh The graphs are designed to populate the categories of the extended
schema (page 234) for a target EME project. The extended schema is
automatically installed by the sample EME. If you did not install the
sample EME, then you must run
$AB_HOME/connectors/EME/extend-schema.ksh to install it. The
script installs the extended schema’s categories, annotation rules, and
views and then builds the directory structure for your target project so
that the metadata loaded into these directories will be members of the
following four categories of the extended schema:
• TableView extends the dataset category. Its member objects will
reside in $TARGET_PROJECT/tables.
• Column extends the dataelement category. Its member objects will
reside in $TARGET_PROJECT/tables.
• Key represents a table’s keys. Its member objects will reside in
$TARGET_PROJECT/keys.
• Index represents a table’s indices. Its member objects will reside in
$TARGET_PROJECT/indexes.
Run this script only once for each project. The script assumes that:
• You have set the TARGET_PROJECT environment variable to a
project in an EME datastore.
• The project already exists.
An alternative to running a script, you may set the EXTEND_SCHEMA
parameter (page 242) when you run the graph on the command line.
Parameter Description
Parameter Description
Field Description
All EME load components have their reject and error ports connected to
output files. These files are all located in $WORKDIR. Their names are
in the format: load_object_type_rejects.dat and
load_object_type_errors.dat. All of these files should be empty upon
successful completion of the graph execution.
NOTE: All EME loads are set up to run in separate phases, as they
often depend on the loading of the underlying object before
loading the annotations.
Initialize EME Datastore Initialize EME Datastore runs the extend schema script,
subgraph extend-schema.ksh (conditional on EXTEND_SCHEMA), and sets up
database name lookup. This subgraph makes sure that the EME schema
is up-to-date and that the necessary project structure is in place. This
component is optional and may be disabled once the script has been run
once for a given project.
This subgraph then analyzes the database configuration file
($DBC_FILE) passed in to determine the database name, which is
stored in a temporary file for use as a lookup in later phases.
This subgraph is the same for all metadata sources.
Prepare Tables and Prepare Tables and Views extracts dataset and record-format
Views Subgraph information (conditional on $LOAD_TABLES) from the metadata
source and prepares it for loading into the EME datastore as table
datasets.
This subgraph also sets the View/Table flag and the Owner annotations
on the dataset object created.
Prepare Keys Subgraph Prepare Keys extracts primary and foreign key information (conditional
on $LOAD_KEYS) from the metadata source and builds records for
creating key objects in $TARGET_PROJECT/keys and for annotating
these objects with the columns that make up the key and the dataset to
which this key applies.
Load to EME Datastore Load to EME Datastore or Export Files does one of these:
or Export Files Subgraph
• It loads the dataset information, objects, and annotations into the
EME if the LOAD parameter is set to True.
• It creates export files for subsequent loading if the
EXPORT_FILES parameter is set to True.
Location of the Two connector graphs exist. If you have ERwin 3.5.2 installed, use
Graphs and the Shell $AB_HOME/connectors/ERwin/erwin_to_eme.mp. If ERwin 4 is
Scripts installed, use $AB_HOME/connectors/ERwin/erwin4_to_eme.mp.
Some functionality is available only with ERwin 4; these constraints are
noted in the text below. The corresponding shell scripts are
erwin_to_eme.ksh and erwin4_to_eme.ksh, respectively. These
connectors are available only on Windows.
Models Stored in If the models are stored in ModelMart, then you need to modify all of
ModelMart the ERwin unload components to use the ModelMart interface.
Prepare Tables and The Prepare Tables and Views subgraph runs in two phases.
Views Subgraph
Phase One The first phase identifies all of the datasets defined in the
ERwin diagram ($ERWIN_FILE) and creates the corresponding
datasets in the tables directory of the project. The load operation is
accomplished by the Load Table Dataset component. In addition, the
ERwin-to-dml utility, with the -table-as-dml flag set, creates the record
format files (.dml files) and loads them into the dml directory of the
project. You may pass additional parameters (for example, -is-valid,
-is-null, and -fixed-length) to the ERwin-to-dml utility in order to
provide additional control over the DML generated. See ERwin-to-dml
help for more information.
Phase Two The second phase unloads table and entity information
from the ERwin diagram and uses the Is Derived flag on each entity to
determine whether it is a view or an authentic table. These flags are then
converted into annotation format ready for loading by the Load
Annotation Values component.
Note To join the entities back to their corresponding tables, the graphs
use the Twin property of the table, which references the entity name.
Prepare Column The Unload ERwin component of the Load Column Information
Information Subgraph subgraph extracts the column information from ERwin. The data is
passed through a Normalize component to generate the corresponding
annotation values to be loaded. A Normalize component handles the
decomposition of the data type into its constituent pieces and
subsequently outputs four values for a single input record. To populate
additional annotations, add cases for different ERwin properties to this
component.
Prepare Keys The data emerges from ERwin at the key-column level of detail; that is,
Subgraph there is one row for every column in every key. This information is
stored in the entity/attribute part of the model. The twin attribute is used
to obtain the physical table name, as opposed to the logical entity name.
(This is accomplished by the Join to set Table component.)
The data is then split into two streams. The first stream is rolled up to
create a single key object record for each key. This flow is then split
again to load the key objects into the datastore and to normalize into the
key specific annotations to be attached. The second stream is simply
reformatted to create the individual column annotations. These two
streams are finally merged before loading into the datastore.
Prepare Indexes The data comes out of ERwin at the index-column level of detail. The
Subgraph Scan component makes sure that the column and index names are set
appropriately on the last record of the index. The Rollup component
then pulls out the relevant index properties from the incoming data
stream into a single record.
The data is then split into two streams. The first stream is rolled up to
create a single index object record for each index. This flow is then split
again to load the index objects into the datastore and to normalize into
the index specific annotations to be attached. The second stream is
simply reformatted to create the individual column annotations. These
two streams are finally merged before loading into the datastore.
Prepare Logical The Prepare Logical Elements subgraph is found only in the ERwin
Elements Subgraph connector. It builds records to be used in creating logical entities and
logical elements in the EME. Logical entities will be placed in
$TARGET_PROJECT/logical_entities/entity, and logical elements
will be placed in
$TARGET_PROJECT/logical_elements/entity/element. Table
columns are then updated with a link to the logical element.
Prepare Valid Values The Prepare Valid Values subgraph is found only in the ERwin
Subgraph connector. It creates Validation Spec records that are subsequently used
to annotate Columns. The Validation Spec contains Valid Values,
Invalid Values, and Value Ranges (minimum and maximum values), as
defined in the ERwin model.
How to Install the To install the ERwin 3.5.2 API, you need to do the following:
ERwin 3.5.2 API
1. Connect to the following:
http://ca.com/products/alm/erwin/companion_products/
download1.htm
2. Download the Link Objects API.
3. Unzip and install this file.
4. Run regsvr32 “c:\Program Files\PLATINUM\ModelMart
3.0\ERWMMAPI\er2api32.dll” (if you have installed in the default
location).
Read access You need read access to the tables and views mentioned herein.
Prepare Tables and First, all column information is pulled out of the CI_COLUMNS view
Views Subgraph and database-compatible DML record formats are created using a
Rollup component and the ddl_to_dml built-in function. These record
formats are associated with their tables in records used to create datasets
in the tables directory of the project. In addition, record format files
(.dml files) are created and will be loaded into the dml directory of the
project.
Next, table and view information are unloaded from the Oracle
Designer repository (views CI_TABLE_DEFINITIONS and
CI_VIEW_DEFINITIONS). This information is merged and passed
through a Normalize component, which effectively pivots the
table/view level information into multiple records. If you want to add
more annotations for tables and views, you should create them in this
component.
Prepare Column The column information is unloaded from the Oracle Designer
Information Subgraph repository using the CI_COLUMNS view. The data is passed through a
Normalize component to generate the corresponding annotation values
to be loaded. To populate additional annotations, simply add cases for
different fields in the input record to this component.
Prepare Keys Oracle Designer holds the key information in the CI_CONSTRAINTS
subgraph view and the columns that make up the key in the
CI_KEY_COMPONENTS view.
The graph runs in two phases.
Phase One The first phase extracts the key information and builds
records for creating the key objects in the datastore in
$TARGET_PROJECT/keys. It also creates a lookup file containing
all the key definitions (which are kept in $WORKDIR).
Phase Two The second phase reads the lookup file and passes it
through a Normalize component to get the individual key annotations. It
also uses the lookup to resolve any foreign-key references. This data is
then merged with the key column details, which have been extracted
from the CI_COLUMNS and CI_KEY_COMPONENTS views. These
are then attached to the key records created in the first phase.
Prepare Indexes Oracle Designer holds the index information in the CI_INDEXES view
Subgraph and the columns that make up the columns in the CI_INDEX_ENTRIES
view. The graph runs in two phases.
First, the index information is extracted and records for creating the
index objects are built in $TARGET_PROJECT/indexes. It also
creates a lookup file containing all the index definitions (which are kept
in $WORKDIR).
Next, the lookup file is read and passed through a Normalize component
in order to get the individual index annotations. This data is then merged
with the index column details, which have been extracted from the
CI_COLUMNS and CI_INDEX_ENTRIES views. The merged
information is then attached to the indexes created in the datastore in the
first phase.
Parameter The OWNER parameter is the database schema in which the tables
reside. See also sectionGraph Parameters on page 242.
Read access You need read access to the tables and views mentioned herein.
Prepare Tables and The Prepare Tables and Views subgraph runs in two phases.
Views Subgraph
Phase One The first phase uses the m_db gendml command to
generate the DML for all of the datasets and views for the given user.
This information is then loaded into the datastore, creating datasets in
the tables directory of the project. The load operation is accomplished
by the Load Table Dataset component. In addition, record format files
(.dml files) are created and loaded into the dml directory of the project.
Phase Two The second phase unloads table and view information
from the DB2 catalog (views SYSCAT.TABLES and
SYSCAT.VIEWS). It merges this information and passes it through a
Normalize component, which effectively pivots the table/view level
information into multiple records. If you want to add more annotations
for tables and views, you should create them in this component. Finally,
the Load Annotation Values component loads the annotations into the
datastore.
Prepare Column The column information is unloaded from the DB2 catalog
Information Subgraph SYSCAT.COLUMNS view. The data is passed through a Normalize
component to generate the corresponding annotation values to be
loaded. To populate additional annotations, add cases for different fields
on the input record to this component.
Prepare Indexes Index information is unloaded from the DB2 catalog through the
Subgraph SYSCAT.INDEXES view, and the columns that make up the indexes
are found in the SYSCAT.INDEXCOLUSE view. The subgraph runs in
two phases.
Phase One The first phase extracts the index information and creates
the index objects in $TARGET_PROJECT/indexes.It also creates a
lookup file containing all the index definitions (which are kept in
$WORKDIR).
Phase Two The second phase reads the lookup file and passes it
through a Normalize component to get the individual index annotations.
This data is then merged with the index column details, which have
been extracted from the SYSCAT.INDEXCOLUSE view. These are
then attached to the indexes created in the datastore in the first phase.
Parameter This graph takes one additional parameter, OWNER, which is the
database owner of the schema objects to be unloaded. See also
sectionGraph Parameters on page 242.
To reduce unload times from large Oracle catalogs, you may limit the
extract processes by adding WHERE clauses. You may set the
following parameters in the graph parameters editor:
• WHERE_CLAUSE_DBA_TABLES
• WHERE_CLAUSE_DBA_VIEWS
• WHERE_CLAUSE_DBA_TAB_COLUMNS
• WHERE_CLAUSE_DBA_IND_COLUMNS
• WHERE_CLAUSE_DBA_CONSTRAINTS
• WHERE_CLAUSE_DBA_INDEXES
Read access You need read access to the tables and views mentioned herein.
Prepare Tables and The Prepare Tables and Views subgraph runs in two phases.
Views Subgraph
Phase One The first phase uses the m_db gendml command to
generate the DML for all of the datasets and views for the given user.
This information is then loaded into the datastore, creating datasets in
the tables/db_name directory of the project. The load operation is
accomplished by the Load Table Dataset component. In addition, record
format files (.dml files) are created and loaded into the dml directory of
the project.
Phase Two The second phase unloads table and view information
from the Oracle catalog (views SYS.DBA_TABLES,
SYS.DBA_VIEWS, and SYS.ALL_TAB_COLUMNS). It merges this
information and passes it through a Normalize component, which
effectively pivots the table/view level information into multiple records.
If you want to add more annotations for tables and views, you should
create them in this component. Finally, the Load Annotation component
loads the annotations into the datastore.
Prepare Column The column information is unloaded from the Oracle catalog
Information Subgraph SYS.DBA_TAB_COLUMNS and SYS.ALL_COL_COMMENTS
views. The data is passed through a Normalize component to generate
the corresponding annotation values to be loaded. To populate
additional annotations, add cases for different fields in the input record
to this component.
Prepare Keys Key information is retrieved from the Oracle catalog through the
Subgraph SYS.DBA_CONSTRAINTS view, and the columns that make up the
key are unloaded through the SYS.DBA_CONS_COLUMNS view. The
subgraph runs in two phases.
Phase One The first phase extracts the key information, filters it for
primary, foreign, and unique keys, and then creates the key objects in
the datastore in $TARGET_PROJECT/keys. It also creates a lookup
table containing all the key definitions (which is kept in $WORKDIR).
Phase Two The second phase reads the lookup file and passes it
through a Normalize component to get the individual key annotations. It
also uses the Lookup component to resolve any foreign key references.
This data is then merged with the key column details, which have been
extracted from the SYS.DBA_CONS_COLUMNS view. These are then
attached to the keys created in the datastore in the first phase.
Prepare Indexes Index information is retrieved from the Oracle catalog through the
Subgraph SYS.DBA_IND_COLUMNS view. This view holds information at the
index column level. The subgraph runs in two phases.
Phase One The first phase extracts the index information, rolls it up
to the index level, and creates the index objects in the datastore in
$TARGET_PROJECT/indexes.
Phase Two The second phase takes this aggregated data and passes it
through a Normalize component to get the individual index annotations.
This data is then merged with the original index column details. The
merged information is then attached to the indexes created in the
datastore in the first phase.
Parameter This graph takes one additional parameter, OWNER, which is the
database owner of the schema objects to be unloaded. See also
sectionGraph Parameters on page 242.
Read access You need read access to the tables and views mentioned herein.
Handling of Spaces The data extracted from the Teradata tables is space-padded out to its
full size. All unload components are followed by a reformat operation,
which strips trailing spaces from all fields.
Prepare Tables and The Prepare Tables and Views subgraph runs in two phases.
Views Subgraph
Phase One The first phase uses the m_db gendml command to
generate the DML for all of the datasets and views for the given user.
This information is then loaded into the datastore, creating datasets in
the tables/db_name directory of the project. The load operation is
accomplished by the Load Table Dataset component. In addition, record
format files are created and loaded into the dml directory of the project.
Phase Two The second phase unloads table and view information
from the Teradata catalog. (View and table information are saved in
DBC.TABLES.) This data is passed through a Normalize component,
which effectively pivots the table/view level information into multiple
records. If you want to add more annotations for tables and views, you
should create them in this component. Finally, the Load Annotation
Values component loads the annotations into the datastore.
Prepare Column The column information is unloaded from the Teradata catalog
Information Subgraph DBC.COLUMNS view. The data is passed through a Normalize
component to generate the corresponding annotation values to be
loaded. To populate additional annotations, add cases for different fields
in the input record to this component.
Prepare Keys Key information is retrieved from the Teradata catalog through the
Subgraph DBC.INDICES view, and the columns that make up the key are
retrieved through the DBC.ALL_RI_CHILDREN view. Primary keys
are defined in the DBC.INDICES view as records with an index type of
‘K’. Foreign keys are derived from the DBC.ALL_RI_CHILDREN
view. Each of these two views holds its information at the key column
level of detail. The subgraph runs in two phases.
Phase One The data from the two views are rolled up to get the
key-level aggregate information, which is loaded into the datastore in
$TARGET_PROJECT/keys. This data is also passed through a
Normalize component to get the individual key annotations.
Prepare Indexes Index information is retrieved from the Teradata catalog through the
Subgraph DBC.INDICES view. (Note that primary keys are also indexes.) This
view holds information at the index column level. The graph runs in two
phases.
Phase One The first phase extracts the index information, rolls it up
to the index level, and creates the index objects in the datastore in
$TARGET_PROJECT/indexes.
Phase Two The second phase takes this aggregated data and passes it
through a Normalize component to get the individual index annotations.
This data is then merged with the original index column details. These
are then attached to the indexes created in the datastore in the first
phase.
Parameter The OWNER parameter is the database owner of the schema objects to
be unloaded. See also sectionGraph Parameters on page 242.
Read access You need read access to the tables and views mentioned herein.
Prepare Tables and The Prepare Tables and Views subgraph runs in two phases.
Views Subgraph
Phase One The first phase uses the m_db gendml command to
generate the DML for all of the datasets and views for the given user.
This information is then loaded into the datastore, creating datasets in
the tables/db_name directory of the project. The load operation is
accomplished by the Load Table Dataset component. In addition, record
format files (.dml files) are created and loaded into the dml directory of
the project.
Phase Two The second phase unloads table and view information
from the SQL Server sysobjects and sysproperties catalogs. This data is
passed through a Normalize component, which effectively pivots the
table/view level information into multiple records. If you want to add
more annotations for tables and views, you should create them in this
component. Finally, the Load Annotation Values component loads the
annotations into the datastore.
Prepare Column The column information is unloaded from the sysobjects, syscolumns,
Information Subgraph systypes, and sysproperties views. The data is passed through a
Normalize component to generate the corresponding annotation values
to be loaded. To populate additional annotations, add cases for different
fields in the input record to this component.
Prepare Keys Key information is retrieved from the SQL Server catalog through the
Subgraph sysobjects and syscolumns views, and the columns that make up the key
are retrieved through the sysforeignkeys view. Each of these two views
holds its information at the key column level of detail. The subgraph
runs in two phases.
Phase One The data from the two views are rolled up to get the
key-level aggregate information, which is loaded into the datastore in
$TARGET_PROJECT/keys. This data is also passed through a
Normalize component to get the individual key annotations.
Prepare Indexes Index information is retrieved from the SQL Server catalog through the
Subgraph sysindexes, sysobjects, syscolumns, and sysindexkeys views. This view
holds information at the index column level. The graph runs in two
phases.
Phase One The first phase extracts the index information, rolls it up
to the index level, and creates the index objects in the datastore in
$TARGET_PROJECT/indexes.
Phase Two The second phase takes this aggregated data and passes it
through a Normalize component to get the individual index annotations.
This data is then merged with the original index column details. These
are then attached to the indexes created in the datastore in the first
phase.
Parameter The OWNER parameter is the database owner of the schema objects to
be unloaded. See also sectionGraph Parameters on page 242.
Read access You need read access to the tables and views mentioned herein.
Prepare Tables and The Load Tables and Views subgraph runs in two phases.
Views Subgraph
Phase One The first phase uses the m_db gendml command to
generate the DML for all of the datasets and views for the given user.
This information is then loaded into the datastore, creating datasets in
the tables/db_name directory of the project. The load operation is
accomplished by the Load Table Dataset component. In addition, record
format files (.dml files) are created and loaded into the dml directory of
the project.
Phase Two The second phase unloads table and view information
from the Sybase dbo.sysobjects and dbo.sysusers catalogs. This data is
passed through a Normalize component, which effectively pivots the
table/view level information into multiple records. If you want to add
more annotations for tables and views, you should create them in this
component. Finally, the Load Annotation Values component loads the
annotations into the datastore.
Prepare Keys Key information is retrieved from the Sybase catalog through the
Subgraph dbo.sysobjects and dbo.syscolumns views. (Note that you need read
access to dbo.sysusers so that the connector can translate the owner
name to an internal user ID.) The columns that make up the key are
Phase One The data from the two views are rolled up to get the
key-level aggregate information, which is loaded into the datastore in
$TARGET_PROJECT/keys. This data is also passed through a
Normalize component to get the individual key annotations.
Prepare Indexes Index information is retrieved from the Sybase catalog through the
Subgraph dbo.sysindexes view. This view holds information at the index column
level. The graph runs in two phases.
Phase One The first phase extracts the index information, rolls it up
to the index level, and creates the index objects in the datastore.
Phase Two The second phase takes this aggregated data and passes it
through a Normalize component to get the individual index annotations.
This data is then merged with the original index column details. These
are then attached to the indexes created in the datastore in the first
phase.
Read access You need read access to the tables and views mentioned herein.
Initialize EME The Initialize EME subgraph sets up the EME schema and loads the
subgraph database configuration file into a specified location. This subgraph also
determines the database name and creates a lookup file for components
to use in later phases. The lookup file restricts which table information
is extracted from the database and loaded into the EME.
Prepare Tables and The Prepare Tables and Views Subgraph unloads from two Redbrick
Views Subgraph views: RDW_COLUMNS and RBW_TABLES. The data streams are
then filtered based on a lookup of the tables_to_migrate.dat dataset
created in the first phase. The record format for the dataset object is
created from the ddl information extracted from RDW_COLUMNS by
the ddl_to_dml utility. To process the data from RBW_TABLES, a
Normalize component organizes the view annotations that will be
loaded into the target EME datastore. The component effectively pivots
the table/view level information into multiple records. If you want to
add more annotations for tables and views, you should create them in
this component.
Prepare Column The column information is unloaded from the RBW_COLUMNS view.
Information Subgraph The data is passed through a Filter by Expression component to remove
the table columns. Then a Normalize component generates the
Prepare Indexes Index information is unloaded from the Redbrick catalog through the
Subgraph RBW_INDEXCOLUMNS view. It also creates links between the tables
of interest and their indexes as well as the relationship between the
index and the key constraints. A Normalize component creates the
annotations for the index. You can include additional annotations in this
component.
Load EME Datastore The view dataset information as well as database objects and their
or Export Files annotations are loaded into the EME datastore and exported into files.
Subgraph The export is accomplished through conditional components, allowing
you to specify whether to write the data to files or not.
Parameters The graph takes the same parameters as the other graphs. See
sectionGraph Parameters on page 242.
Set the EXPORT_FILES parameter on the connector graphs to True
(page 243). The $WORKDIR directory contains the files produced
when the EXPORT_FILES parameter is set to True.
What Are Unload Unload connectors are a suite of graphs, shipped with the Co>Operating
Connectors? System, that unload metadata from an EME datastore into third-party
reporting tools like MicroStrategy, BrioQuery, and Business Objects.
This section describes the Ab Initio connectors for integrating metadata
with each of these products.
Three Modes of The mstr_load program operates in one of three modes, depending on
Operation whether you specify -dump, -schema, or neither. The modes are:
• Loading metadata mode
• Unloading properties mode
• Exporting schema mode
Loading Metadata Mode If neither -dump nor -schema is specified, then the program loads
metadata. In loading metadata mode, mstr_load reads records from
stdin or the file named in the -file file-name argument. In either case,
the record format of the input data must be as it appears below,
assuming "\0" is delimiter:
record
string("\0") tableName = "";
string("\0") columnName = "";
string("\0") metaName = "";
string("\0") metaDisplayName = "";
string("\0") metaValue = "";
string(1) newline = A"\n";
end;
In general, each record of input is converted into an XML string for later
interpretation by the MicroStrategy Web interface.
The form of the generated XML is:
<metaName displayName=”metaDisplayName”>metaValue</metaName>
Interpretation of the input data follows these rules:
• If no column name is specified, the target object is the named
table.
• If no metaName is specified, the metaValue is attached literally,
rather than as an XML string.
• The first occurrence of a table or column name clears any existing
property values.
• Only one table (or column) of a given name can exist in the
MicroStrategy schema. If multiple input records name the same
table (or column), then the XML or literal value is appended to the
existing property.
• The name used for tables should be prefixed with the table’s
namespace (for example, Scott.Customers).
• The table (or column) name should be the MicroStrategy schema
name, not the MicroStrategy object name (see Exporting Schema
Mode).
Unloading Properties If -dump is specified, then the program unloads metadata. The -dump
Mode option outputs data in the following format, assuming "\0" is delimiter:
record
string("\0") tableName = "";
string("\0") columnName = "";
string("\0") propertySet = "";
string("\0") propertyName = "";
string("\0") value = "";
string("\0") useDefault = "";
string(1) newline = A"\n";
end;
Specify the -dump option when it is necessary to unload the existing set
of extended properties from a project. One record for each table or
column that has a property of the given name in the given property set is
sent to stdout or to the file specified with the -file file-name argument.
Specifying " " as the property (-property property-name) causes all
properties of the given set to be dumped as separate records. Similarly,
specifying " " as the property set (-propertyset property-set-name)
causes all properties in all sets to be dumped as separate records.
Use this option if you deem it necessary to append property values over
multiple runs. This can be accomplished by unloading the given
property and merging the results with data to be loaded through
mstr_load in loading metadata mode. This is possible because there is
no way to distinguish an XML string of the form shown in Loading
Metadata Mode on page 269 that was created by mstr_load internally
from one that is of the same form loaded as a literal.
Exporting Schema Mode If -schema is specified, then the program operates in exporting schema
mode. The -schema option allows users to see the names of existing
table and column objects within the MicroStrategy schema. All table
and column objects are unloaded. The record format specifies the
internal object name and the schema name. In practice, these are likely
to be the same.
The -schema option outputs data in the following format, assuming "\0"
is delimiter:
record
string("\0") tableObjectName = "";
string("\0") tableName = "";
string("\0") columnObjectName = "";
string("\0") columnName = "";
string(1) newline = A"\n";
end;
Accessing Metadata To access metadata from within BrioQuery, you must do the following:
from BrioQuery
1. Unload metadata from the EME into a relational database.
You can easily accomplish the first step by running a graph. A
sample graph has been provided, and is fully described in
Unloading Categories into a Relational Database on page 109.
2. Configure the desired remarks.
Configuration of remarks takes place within BrioQuery. The use of
SQL queries to obtain metadata makes the metadata display highly
flexible. For example, BrioQuery supports multiple values being
returned across joined tables and allows simple formatting in the
display.
(For detailed information on accessing metadata from within
BrioQuery, read about metadata definitions in the Data Model
chapter of the Brio documentation.)
brio_cfg Utility The EME includes the brio_cfg utility. This utility, which resides in
$AB_HOME/bin, adds a series of Ab Initio remark entries (in
$AB_HOME/connectors/brio/ab_meta.ini) to the BrioQuery
metadata configuration file, bqmeta0.ini, which is the source of the
default selections used for new BrioQuery connections. These remarks
display metadata based on the built-in categories and annotation rules of
the EME’s base schema (page 222). The utility makes a backup of the
original target file and names it target_config_file.bak. After you run
the utility, an "Ab Initio EME" entry appears in the metadata
configuration list.
The syntax of brio_cfg is:
brio_cfg source_config_file target_config_file
Example To install the standard Ab Initio remarks into the configuration file used
by BrioQuery, type:
brio_cfg $AB_HOME/connectors/brio/ab_meta.ini
$WINDIR/bqmeta0.ini
The following shows the entries added to the bqmeta0.ini file to specify
a default remark set.
[BrioQuery Meta Data Sources]
AbInitio=Ab Initio EME
...
[AbInitio]
TableRemarkTabCount=1
ColumnRemarkTabCount=1
TableRemarkTab1=Ab Table Remark1
ColumnRemarkTab1=Ab Column Remark1
Platform Restriction The utility and graph run only on Microsoft Windows platforms where
Business Objects Designer has been installed.
To identify that the correct module of Business Objects Designer is
installed on your machine, search the Windows registry (from regedit)
for Designer.Application. You should see the following registry entries:
\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Designer.Application
\HKEY_classes_root\Designer.Application
bo_load Syntax The bo_load utility, which resides in $AB_HOME/bin, allows you to
create, update, and unload Business Objects universes.
$AB_HOME/bin/bo_load.exe
-universe string
{-document | -create | -update | -unload}
[-user string -password string -repository string]
[-connection string]
[-delimiter string]
[-file string]
Format of Input and This section describes the DML you must specify for documenting data,
Output Data creating and populating universes, updating an existing universe, and
unloading tables, classes, columns, objects, and joins. All fields are
strings.
Document The DML fields you must specify for documenting data in a universe:
• className
• objectName
• description
Create and Update Following are the DML fields you must specify for creating and
populating a new universe, updating an existing universe, or unloading
the tables, classes, columns, objects, and joins from a universe.
Table tablename —
Class classname —
description
Components There are also .mpc files that make this functionality available as
Ab Initio components. These components can be found in
$AB_HOME/connectors/BusinessObjects:
• BusinessObjects_Create.mpc
• BusinessObjects_Update.mpc
• BusinessObjects_Document.mpc
• BusinessObjects_Unload.mpc
The above components all have the same parameters: Universe, User,
Password, Repository, Connection. See bo_load’s argument list on
page 274.
create_universe_from This graph reads table, column, and key information from the EME and
_eme.mp Graph uses it to create a Business Objects universe. It resides in
$AB_HOME/connectors/BusinessObjects.
The graph has the following parameters:
Parameter Description
The graph reads metadata from the EME set by the AB_AIR_ROOT
configuration variable or in the EME Datastore Settings dialog in the
GDE. The graph creates tables and columns derived directly from the
table datasets defined in the source project (see the Reformat to Table
Record and Reformat to Column Record components in the graph). The
classes and objects are implemented as direct mappings from the
corresponding tables and columns (see the Reformat to Class Record
and Reformat to Object Record components). The joins are created
wherever foreign keys have been defined (see the Join to Get Primary
Key component).
AB_ARULE_BOOL_FORMAT
Default value: “true:false”
Type: string
Exported: true
Details: Specifies the string values used to represent boolean annotation
values. For example, you might choose “1:0” for true and false,
respectively. Another example might be “yes:no”. This variable affects
how the boolean values of the built-in annotation rules of the base
schema are displayed in the Web user interface and in the output of such
commands as air annotation dump (page 150) and air category
unload (page 180). For a description of the annotation rules of the base
schema, see Description of Base Categories and Rules on page 226.
AB_ARULE_DATE_FORMAT
Default value: “YYYY/MM/dd hh24:m:ss”
Type: string
Exported: true
Details: Controls the date and time format of annotation values
displayed in the Web user interface and in the output of such commands
as air annotation dump (page 150) and air category unload (page
180). See datetime types in the Data Manipulation Language
Reference for more details. The built-in annotation rules of the base
schema are described in Description of Base Categories and Rules on
page 226.
AB_ARULE_USE_LOCAL_TIME
Default value: false
Type: bool
Exported: true
Details: Sets the display of modification and creation times to either
universal time (default) or server local time. Set the value to true if you
would like modification and creation times to be converted to server
local time.
This section presents three sample Korn shell scripts that you might
peruse or run to become familiar with setting up an EME datastore.
# Create categories
air category create Application graph
air category create "Data Files" dataset
air category create Personnel mimeobj
air end-batch
air end-batch
# Application
air category add-view-element Application details \
-simple Comment "/|Application/.comment/>" \
-simple "Business Area" "/|Application/.business_area/>"\
-simple Steward "/|Application/.steward/>" \
-simple "Stewards Phone" \
"/|Application/.steward/>/|Personnel/.phone/>"
# Data Files
air category add-view-element "Data Files" details \
-simple Comment "/|Data Files/.comment/>" \
-simple Steward "/|Data Files/.steward/>" \
-simple "Steward's Phone" \
"/|Data Files/.steward/>/|Personnel/.phone/>"
# Personnel
air category add-view-element Personnel details \
-simple Comment "/|Personnel/.comment/>" \
-simple Phone "/|Personnel/.phone/>" \
-simple Department "/|Personnel/.department/>" \
-view "Applications this employee is responsible for" \
"/<Application/.steward/|" Application/.list \
-view "Data Files this employee is responsible for" \
"/<Data Files/.steward/|" "Data Files/.list"
air end-batch
parameters log_reject
arule Load Annotation Values component 197
Load Category component 199 Load Category component 200
Unload Category component 219 Load File Dataset component 204
category Load Mimeobj component 207
Load Category component 199 Load Table Dataset component 210
Unload Category component 219 Load Type component 213
commit_interval Remove Objects and Annotations component
Load Annotation Values component 196 216
Load Category component 199 logging
Load File Dataset component 203 Load Annotation Values component 197
Load Mimeobj component 206 Load Category component 200
Load Type component 212 Load File Dataset component 204
Remove Objects and Annotations component Load Mimeobj component 207
215 Load Table Dataset component 210
EME Datastore Load Type component 213
Load Annotation Values component 196 Remove Objects and Annotations component
Load File Dataset component 203 216
Load Mimeobj component 206 no_inherit
Load Table Dataset component 209 Load Category component 199
Load Type component 212 Unload Category component 219
Remove Objects and Annotations component of graphs for loading metadata from prepackaged
215 applications 242
limit of sample unload graph 110
Load Annotation Values component 197 oid_as_path
Load Category component 200 Unload Category component 220
Load File Dataset component 204 path
Load Mimeobj component 207 Unload Category component 219
Load Table Dataset component 210 ramp
Load Type component 213 Load Annotation Values component 197
Remove Objects and Annotations component Load Category component 200
216 Load File Dataset component 204
log_input Load Mimeobj component 207
Load Annotation Values component 197 Load Table Dataset component 209
Load Category component 200 Load Type component 213
Load File Dataset component 204 Remove Objects and Annotations component
Load Mimeobj component 207 216
Load Table Dataset component 210 reject-threshold
Load Type component 213 Load Annotation Values component 196
Remove Objects and Annotations component Load Category component 200
216 Load File Dataset component 203
Load Mimeobj component 206
reject-threshold (continued) R
Load Table Dataset component 209
Load Type component 212 ramp parameter
Remove Objects and Annotations component Load Annotation Values component 197
215 Load Category component 200
root Load File Dataset component 204
Load Category component 199 Load Mimeobj component 207
Unload Category component 219 Load Table Dataset component 209
version Load Type component 213
Unload Category component 219 Remove Objects and Annotations component 216
parent category raw text, controlling display in browser 154
definition 24 record formats
identifying 171 attach to EME file datasets 203
passwords 123 attaching to table datasets in EME 209
changing 124, 188 creating in EME 212
encrypted 124 of unloaded annotation values 103
setting 188 prefix for disambiguating 142
path annotation rule 226 records annotation rule 228
path names, specifying 142 record-type annotation rules 31
path parameter creating 152
Unload Category component 219 Redbrick, connector for 263
period character in view-elements 58 reference-type annotation rules 30
permissions 129 adding values for 40
clearing 170 creating 152
displaying 179 role in allowing inheritance of values 172
setting 177 reformat transformation 44
phase category 224 reject-threshold parameter
annotation rules of 231 Load Annotation Values component 196
phaseOID annotation rule 228, 233 Load Category component 200
Physical Element category 236 Load File Dataset component 203
prefixes for disambiguating object names 142 Load Mimeobj component 206
prepackaged applications, loading metadata with 239 Load Table Dataset component 209
Prepare Column Information subgraph 245 Load Type component 212
Prepare Indexes subgraph 246 Remove Objects and Annotations component 215
Prepare Keys subgraph 245 relational database, unloading categories into 109
project category relational tables
annotation rules of 231 of base schema 19
projectOID annotation rule 226, 228, 229, 230 similarity to categories 20
relationships between categories 30
remarks concept of BrioQuery 272
remote connection to the EME server 141
T unload components
creating your own 107
table datasets where they reside 109
attaching record formats 209 unload connectors 267
creating in EME 209 unloading annotation values 102, 180
TABLE_OWNER parameter 110 creating components for 107
TableOrView annotation rule 237 into relational database 109
tables_to_migrate.dat dataset 260 to third-party reporting tools 267
tables_to_migrate.dat dataset 243, 249, 253, 256, user accounts
258, 262 adding to groups 184
TableView category 237 attributes of 123
target category 152 changing name of 187
displaying 157 changing password of 188
TARGET_EME_DATASTORE parameter 242 creating 124, 188
TARGET_PROJECT parameter 242 disabling 124, 189
technical view hyperlink 90 displaying 124, 190
Teradata, connector for 257 enabling 124, 189
text importing 187
adding to a view 167 migrating to another datastore 124, 184, 187
storing 69, 167 removing from groups 186
text conventions ix user authentication
third-party reporting tools, unloading annotation creating accounts for 188
values to 267 turning on 120
time annotation values, setting format of 280 user ID 123
to_vertexOID annotation rule 228
toggling view-elements 68, 89
transform category
V
annotation rules of 231
Valid Range Item category 237
transformPackagesUsed annotation rule 232
Valid Value Item category 237
type category
Validation Spec category 237
annotation rules of 231
ValidationSpec annotation rule 236
typepackagesUsedOID annotation rule 232
ValidRanges annotation rule 237
ValidValues annotation rule 237
U Value annotation rule 235, 237
_value annotation rule 230
Unload Builtin Categories.mp sample graph 109 veclen annotation rule 227
Unload Category component version annotation rule 229, 232
description 219 version numbers, specifying at command line 140
parameters 219 version parameter
record format 220 Unload Category component 219
versionedFlowOID annotation rule 228
W
Web server
managing 120
starting and stopping 121