Portal Architecture Christopher J. Hogger, Frank R. Kriwaczek and Mohd S. Ahmad Department of Computing, Imperial College London, South Kensington Campus, London SW7 2AZ, U.K. {cjh, frk, msa2}@doc.ic.ac.uk Abstract We describe a portal architecture model that employs plans and constraints to facilitate the performing of user roles. The model is sufficiently abstract to serve as a generic specification for a variety of concrete portal implementations, besides being directly implementable in its own right. A key feature of the model is its treatment of constraints. In particular, its use of a constraint engine to process constraints over finite domains enables us to model many interesting and novel operational schemes for cohering individual and communal working practice. 1. Introduction In broad terms a portal [4, 6, 9, 16] is a computing environment suitably shaped to workplace requirements. Typically it provides ready access to personalised information and it facilitates decisionmaking and the performing of roles. Depending on the context, it may function as a tolerant, useradaptable personal assistant or, at the other extreme, as a prescriptive institutional regime. Our work is concerned with modeling a transparent and general architecture for, primarily, portals of the former kind, and applies to both single and multi-user contexts. This architecture entails a combination of procedural plans and logical constraints expressing key aspects of the roles undertaken by the portal’s users. The plans are programmatic schemes of actions that construct and communicate electronic artefacts residing in the users’ local workspaces. The constraints assist the determination of those artefacts’ attributes and their scheduling and resource demands in the course of executing the plans. The architecture is tolerant of constraint failure, offering mechanisms for failure recovery through appropriate revision of plans and constraints. It also enables roles to be assigned or delegated by users to other users through the handling of particular kinds of artefact. Features of the architecture are illustrated here using concrete formulations of artefacts, but the underlying model is sufficiently abstract to support other formulations appropriate to the context. **** here a motivating sentence, giving our expectations as to how the architecture might be used by others, etc... *** The wonderful congeniality and generality of our representations. *** Brief comment on implementation, case-studies, etc. *** 2. Outline of the Model Figure 1 outlines the model’s core features. The enterprise being modeled is presumed to comprise some set of roles, each assigned to some portal user who is thereby a role-holder. Each role is characterized by two parts. One part is a plan comprising one or more concurrent tasks that jointly constitute the role, each being a simple program of actions. The other part is a set of constraints. The plan and the constraints are viewable in the portal interface. Actions performed in the plan may create, access or modify electronic artefacts residing in the role-holder’s local workspace, or may transact them between that workspace and databases shared with other role-holders. The constraints from the separate roles form a set that applies globally to all role-holders. They may constrain in any manner the various attributes of the artefacts and the various timepoints at which actions are initiated or completed. role-holder other role-holders communal databases plan workspace time axis constraints Figure 1. Outline of the architecture. 2.1 Representing Plans We represent plans in a very simple manner, in order that they may be easily devised, modified and interpreted. A plan is a block-structured presentation of action declarations, each having the basic form action(role_id, block_id, index, action_predicate). which identifies the role to which it belongs, the block that contains it, its position within that block and—most importantly—the specific nature of the action as described by the action-predicate. Figure 2 shows a fragment of a plan for a role r3. One of this role’s tasks, say task4, has a program containing a block b2, part of which is shown in the figure. : action(r3, b2, 5, et4<365, do_block(wantdiary(no), b7, st5, et5)). action(r3, b2, 6, import(db1, template, st6, et6)). action(r3, b2, 7, create([template], appts, st7, et7)). action(r3, b2, 8, create([appts], diary, st8, et8)). action(r3, b2, 9, export(db3, diary, st9, et9)). : Figure 2. Fragment of a plan. Loosely, the actions there express a decision to create a diary for the next year by importing a suitable template from a database, filling this in to produce a set of appointments for that year, arranging them as a diary and exporting this to some other database. Action-predicates take various forms, but always include two arguments st and et denoting the action’s start-time and end-time. The most frequently used types are create(...), import(...) and export(...). Others, however, serve to express simple species of control-flow through the plan, such as branching and iteration. All types may include a precondition inserted before the action-predicate. In Figure 2 the first declaration poses a precondition about a time-point et4 which, if satisfied, causes a branching action do_block(...) to be executed; this in turn tests whether a diary is required, in default of which control is diverted to some other block b7. Space does not allow for the entire grammar of the plan language to be given here, but the examples should give a reasonable indication of its nature. Associated with each task in a role is a unique entry-point declaration identifying the block in which the task’s execution is to begin, and this has the general form entry_point(role_id, task_id, block_id). For the example in Figure 2 the entry point for task4 might be declared thus: entry_point(r3, task4, b2). 2.2 Role Ontologies The arguments db1, template, st6, et6, etc. that appear in Figure 2 are called ontological variables. They name the entities that the role-holder works with. Associated with each role R is a set of declarations declaring particular ontologies whose variables are used by R. An ontology named own declares those variables devised by R; if named public it declares enterprise-wide variables available to all roleholders; if named by the name R2 of some other role-holder it enables R to make use of R2’s variables. Figure 3 sketches some ontology declarations that might be used to formulate a finance-director’s role, augmenting his own variables with some public variables and also some variables local to another roleholder named auditor. ontology(financedir, own, [account1, account2, st1, et1, ... etc.]). ontology(financedir, public, [sales_acc, expenses_acc, ..., etc.]). ontology(financedir, auditor, [annual_report, ..., etc.]). Figure 3. Ontology declarations for a role. Ontological variables are used not only in the plans but also in the constraints. As plans are performed, and constraints evaluated, the variables become progressively instantiated to concrete values for artefact attributes and time-points, in a manner described presently. 2.3 Representing Constraints We represent constraints as atomic calls (predicates) over ontological variables. Each one is either a primitive known to the system or is otherwise defined by some associated constraint program. The constraints contributed by all role-holders must be satisfied, sooner or later, if the latter are to discharge their roles successfully. Each one is declared by a constraint declaration of the form constraint(role_id, task_id, index, call). as in the example constraint(financedir, task4, 3, short_elapse(et1, et2)). Here, the finance director has stipulated some constraint upon the elapse between the end-times of two of his actions. Its precise nature will be set out in some program defining the short_elapse predicate. The two middle arguments record, solely for internal book-keeping, that the constraint is considered relevant to task4 and is the 3rd such constraint. 2.4 Execution of Roles With the plans and constraints in place, together with their associated ontologies and constraintdefining programs, the operational functioning of the model is as follows. The plans of all role-holders are executed concurrently. Each role-holder interacts with his plan through the portal interface. This displays, among many other things, those actions which are ready to start or — if already started — await completion. In particular, as soon as any action is ready to start the interface presents a dialog as a prompt. When the role-holder signals that he has started the action, the latter’s associated start-time st is bound to the current value of the portal clock. Likewise, a signal that the action has been completed binds the action’s associated end-time et. Meanwhile, the interface is also informing the role-holder of what the constraints (if any) are expecting of these time-points and of the attributes of those artefacts being acted upon. The architecture therefore requires two engines, operating concurrently — a plan interpreter for executing the plans, and a constraint evaluator for shaping and regulating their outcomes, both contributing to the determination of values for the ontological variables. This is the operational model in outline. Some finer details are discussed in the sections that follow. 3. Artefact Management The main activities undertaken by a role-holder are the creation and management of electronic artefacts, each characterized by attributes that the system can implement concretely. For example, one such attribute is CrTool denoting the name of the tool (application program) used to create an artefact, whilst another is Owner naming the role-holder who owns the artefact. Presented with an artefact having these attributes, the system applies appropriate mechanisms for managing tool invocation and artefact ownership. A set of compatible attributes inherently defines some artefact type. We have experimented mostly with three types — text document, email and database table — but others may be easily accommodated. They have some primary attributes (e.g. CrTool) in common, besides secondary attributes specific to themselves. The internal representation of any artefact is some instance of the schematic term art(Name, Type, Loc, CrTool, Owner, Rights, Atts) holding the artefact’s name, type, location, creator tool, the owner, the rights of the owner and, finally, a set of secondary attributes whose details depend upon the type. An example of such an instance is art(diary, txt, ‘c:/MyDocs’, notepad, r3, [read, write], null) This represents an artefact named diary which is a text document currently residing in a local ‘c-drive’ directory; it was created using the notepad tool; its owner is role-holder r3 who has both read and write permissions for this artefact. The null reflects that no secondary attributes are required for a text document. Another example of an artefact instance is art(table2, dbtable, ‘c:/accts’, ‘Mini-SQL’, r3, [read, write], atts(view2, schema1)) This represents an artefact named table2 which is a database table whose secondary attributes are a schema named schema1 and a specification in the form of a view-definition named view2. ******************** HERE SO FAR *************************** An artefact comes into existence through some role-holder enacting a particular kind of action in his plan. This is the ‘create’ action whose predicate has the form create(As, A, st, et) in which A identifies the artefact being created and As is a set whose members identify other artefacts upon which the creating of A is stipulated to depend. As usual, st and et denote the action’s start and end times. Examples of two such actions appear in the plan in Figure 2. There, each artefact is identified by a term of the form L(N) where L denotes its location and N—an ontological variable— denotes its name. When the plan interpreter prompts a role-holder R to create an artefact A, R undertakes whatever steps are necessary for creating it. The detailed contents of A are not constrained by the portal and are left to R’s offline decision-making. However, the creation process is constrained by whatever the declared constraints may require of A’s attributes and the action’s start and end times. Moreover, the creation process requires that any artefacts cited in the As argument shall exist and that they likewise shall satisfy any declared constraints upon their attributes. The manner in which constraints refer to and constrain artefact attributes is described in Section 5. The portal imposes no constraint upon the relation between the detailed contents of As and A, leaving this as a matter for R’s off-line deliberations. Each role-holder has a personal local workspace in which the artefacts he is working with reside. The workspace contents are directly visible in the portal interface. It is in this workspace that an artefact is stored when produced by a ‘create’ action. The framework’s support for online collaboration between role-holders has two aspects—the communication of artefacts and the testing of their joint satisfaction of constraints. Communication is achieved whenever plans perform particular actions named ‘import’ and ‘export’, examples of which can be seen in Figure 2. Each kind entails accessing some communal database capable of storing artefacts. An action predicate of the form import(Db, Loc_db(N), Loc_wsp, st, et) accesses an artefact named N at location Loc_db in database Db and imports a copy of it to location Loc_wsp in the role-holder’s local workspace. Conversely, an action predicate of the form export(Db, Loc_wsp(N), Loc_db, st, et) accesses artefact named N at location Loc_wsp in the local workspace and exports a copy of it to location Loc_db in database Db. In general there will exist various such communal databases, whose individual structure and management is suitably adapted to the types of the artefacts stored in them. For text documents the database may be some disk volume offering a file-oriented directory structure; for emails it may be the mailboxes within an email client application; for database tables it may be the storage provisions of a conventional relational database. In our portal model, constraints are logical formulas whose arguments denote various aspects of artefacts and their scheduling. They are evaluated concurrently with the performing of tasks by the role holders. The initial construction of appropriate tasks and constraints is undertaken (currently offline) mainly by the role holders when their roles are first assigned to them, although some details may be imposed a priori by their superiors. It is during this construction phase that role holders must consult and plan as to how best to achieve the goals of the enterprise. The goals consist concretely of the artefacts – and their timescales – intended to arise from the performing of tasks. They will necessarily be solutions both of the actionbased programs defining the tasks and of the constraints. Occasional violation of constraints in inevitable, if only because of slippage in intended timescales or deadlines. When this occurs, role holders may revise or relax appropriate constraints or tasks in order that their work can resume in a compliant fashion. Subject to these provisions, the overall goals of the enterprise should eventually be achieved. Fig. 1 illustrates this concept. 2.2 Alignment of Tasks and Constraints The tasks established by role holders are essentially plans, which they follow with the aim of achieving their goals. In general, these plans are nondeterministic in that they may specify alternative courses of action dependent upon unpredictable aspects of the run-time state, such as availability of artefacts or the passing of time points. Whichever courses of action they do take, however, their observable effect will be the creation of particular workspace artefacts at particular times. These timelabeled artefacts can be viewed as solutions ‘computed’ by task execution. The constraints established by role holders can likewise be viewed as a means of computing solutions also in the form of time-labeled artefacts. The constraints too are nondeterministic in that their solutions may vary according to unpredictable aspects of the run-time state. The model therefore operates concurrently two main processes – task execution and constraint evaluation – whose common solutions represent achievable goals of the enterprise. It is not guaranteed that they will exist. In principle, tasks could be devised such that no possible outcomes from them could satisfy the constraints; similarly, constraints could be devised having no solutions that the tasks could construct. In practice, role holders aim for a symbiotic relationship between tasks and constraints that is analogous to the ‘decision and control’ paradigm of management. The intent is that their solution-sets shall have a non-empty intersection. When this is so, we say that the tasks and constraints are mutually aligned. The constraints are formulated within the finite-domain paradigm of SICStus Prolog. Their effect is to limit the framework's variables to values within specified finite sets. Those variables are typically attributes of the artefacts or time points relating to task actions. The evaluation of such constraints upon variables whose values have been already determined is to check whether those values fall within the specified sets. Evaluation of constraints upon so-far-undetermined variables, by contrast, has the effect of offering (through the portal interface) sets of values that could be assigned to them. The balance between these two kinds of behaviour is determined by how lazily or how eagerly the constraint evaluation is performed relative to task execution. Lazy evaluation permits the tasks, under the control of the role holders, to exercise unfettered initiative in choosing values for the variables – in concrete terms, fixing various attributes of the artefacts and fixing timescales for the actions that manipulate them. In this case there is significant scope for role holders to make choices that will subsequently be rejected by the constraints. Eager evaluation, on the other hand, presents to role holders selections of choices assuredly satisfying the constraints, although such choices are still not obligatory. Thus in both modes there remains the possibility of constraint failure, but with differing degrees of probability. As noted earlier, constraint failure must eventually be eliminated if the goals are to be achieved. An important feature of the framework is therefore the machinery allowing role holders to revise constraints or plans, as they see fit (and as far as they are permitted). Ultimately, all such failures should be eliminable by sufficient revision of beliefs or actions. A key technical issue here is the localisation of responsibility for a failure, in order that such revisions can be conducted efficiently. We are exploring various mechanisms for this, with emphasis upon those not dependent upon specific internal features of the constraint evaluator. 3 The Knowledge Derived by the Portal As tasks are executed, artefacts accumulate within the role holders' workspaces. They are created by particular kinds of action, and are communicated between workspaces by other kinds of action. Each artefact can be regarded as having two components - template and data. The template is essentially an abstraction of the artefact, holding its identity, its type and its type-specific attributes. These are the features, named by appropriate variables, to which constraints may refer. The framework supports defined template types for document-oriented artefacts such as emails, text files and database records. An artefact's data component, by contrast, has no features to which constraints may refer. It comprises material presumed to be established by the role-holder in a manner opaque to the framework. An example might be the message content within an email. The dividing line between template and data is a pragmatic one. Generally, we define the data as comprising those aspects (if any) of the artefact that the constraints are not required to know about. Besides the document-oriented artefacts just exemplified, there exists a special type of artefact called an activation record. Its template holds its type, an action identifier and that action's start and end times. These features are likewise named by variables to which constraints may refer. Its data component is empty. When any action is initiated within some task, a corresponding activation record, appropriately instantiated, is automatically created in the role holder's workspace. When the action is completed, the activation record is further instantiated with the end time. The creating of activation records proceeds independently of what the actions are themselves achieving. The action identifier in an activation record contains sufficient information to locate the originating action at some point on some branch in some task. Each branch in a task has some (possibly null) precondition, and likewise each action in a branch has some (possibly null) precondition. Such preconditions are predicated upon the same class of variables as employed by the constraints. Thus, for any action to have been initiated, some conjunction of preconditions along its branch must have become true. We call this the action's (overall) enabling condition. A concrete example might be that the date be less than 2004 and that an email has arrived from a particular sender. In the long run, after however much revision has proved necessary, every artefact in a portal workspace should satisfy the constraints. In addition, for every activation record in a portal workspace, the enabling condition for its associated action should hold. The functioning of the framework therefore accumulates two species of knowledge, both expressible in logic: first, that the constraints hold for those values of their variables as determined by the current pool of artefacts; second, that the enabling conditions hold for those values of their variables as determined by the actions performed. Together they constitute the Derived Knowledge manifested by the enterprise being modeled. It corresponds to what some refer to as explicit knowledge [11]. Clearly, it evolves with time, and is defined only at those times when tasks and constraints are mutually aligned. The semantics of the framework at any such time can be formulated in terms of the logical models of the currently derived knowledge. The values assigned to the variables determine features of the artefacts representing the enterprise goals achieved so far. 4 Agent Representation: A Brief Illustration Each role holder is implemented as an agent represented by a role script written in Prolog. This defines the agent’s ontology, tasks and constraints. Below we illustrate a role script for an agent pgas (“postgraduate admissions secretary”), restricted here to one task (task1) whose entry point is the start of the action-sequence script1: % The agent's ontology - private (own) and public components. ontology(pgas, own, [session, msc_student, res_student, st1, st2, st3, et1, et2, et3]). ontology(pgas, pub, []). % The agent’s entry point for a task. primary_script(pgas, task1, script1). % The agent's actions in this task. action(pgas, script1, 1, import(mscdb, nxtsess(session), pgs, st1, et1)). action(pgas, script1, 2, create([pgs(session)], pgs(msc_student), st2, et2)). action(pgas, script1, 3, export(mscdb, pgs(msc_student), data, st3, et3)). % The agent’s constraint - here, just one for this task. constrain(pgas, task1, 1, pgasc111(et1, et3)). pgasc111(T1, T3) :- T3 - T1 #=< 5. role_manager(pgas) :- common_role_manager(pgas). The ontology declares the terms used by the agent to refer to the entities (including time points such as st1) that it deals with. They serve as variables within both actions and constraints. They are presented as ground atoms to preserve their identities when propagated through the computation. An action is identified by an agent id (pgas), script id (script1), index number (e.g. 3) and action primitive (e.g. export). The index numbers govern the order in which actions are performed. The role manager defines how the agent coordinates the execution of actions with the evaluation of constraints. In this example the agent simply invokes a standard protocol called the common role manager. Each constraint is declared by an assertion of the form: constrain(Agent_Id, Task_Id, Constraint_Index, Call). whose Call argument accesses the separately-defined logic of the constraint. As with actions, the declaration employs the agent’s ground ontology. In the example, this logic simply constrains the difference between two time points. More generally, the constraints can also constrain the attributes of artefacts manipulated by the actions. In all cases they are evaluated using a finite-domain constraint evaluator. For a more detailed description of the framework’s architecture, including the structure and operation of role scripts, the reader is referred to [1]. 5. Constraints The system’s plan interpreter is responsible for executing autonomous actions and alerting the roleholder of required off-line actions, in accordance with the schedules expressed by the tasks, whilst honouring the satisfaction of any action preconditions and task block related tests. Constraints in the system state those requirements of the tasks and artefacts, not expressed by such preconditions and tests, and provide an extra level of control that is both powerful and flexible. We do not stipulate within our logical formulation the point at which constraints are checked. At one extreme, it would be possible to simulate in advance the complete course of role-holders’ actions, checking constraints eagerly and determining whether, and under what circumstances, the plans could lead to the successful accomplishment of the role-holder’s tasks. At the other extreme, constraint checking could be left to the end, simply testing whether the actions had been carried out according to the temporal constraints and whether the artefacts attributes satisfied their constraints. A middle ground would perform constraint checking in “real time”, notifying the user of the deadlines he needed to meet, with regard to action completion, and providing tools and other facilities for artefact creations, in accordance with attribute constraints. Under this last regime, temporal constraint processing would resemble traditional critical path analysis. A constraint is a relation between one-or-more role-holders’ ontological variables, including start and end times of actions carried out by those persons and artefacts employed or created by them. In a later section, dealing with delegation, we shall explain how constraints involving action times and artefacts of more than one role-holder can be included in the system. In this section, we shall restrict ourselves to constraints involving a single role-holder. As mentioned in the previous section, each such constraint is asserted via a constraint declaration of the form: constraint(role_id, task_id, index, call) The first argument refers to the role, the second to the particular task within that role, index is a positive integer and the last argument is a call to a logic program, most generally in CLP(FD), Constraint Logic Programming over Finite Domains, effectively a superset of Prolog. Here is a fragment of code for role-holder “pgas” (postgraduate admissions secretary) to illustrate the handling of temporal constraints. It deals with the actions of the secretary importing a database “artefact” to determine the dates of the next academic session, the creation of a list of MSc applications and its export to the database on the server: ontology(pgas, own, [session, st1, st2, st3, et1. et2. et3]). ontology(pgas, pub, null). action(pgas, block1, 1, import(mscdb, session, pgs, st1, et1)). action(pgas, block1, 2, create([session], msc_student, st2, et2)). action(pgas, block1, 3, export(mscdb, msc_student, data, st3, et3)). … constraint(pgas, task1, 1, pgasc111(et1, st2)). constraint(pgas, task1, 2, pgasc112(st2, et2)). constraint(pgas, task1, 3, pgasc111(et2, st3)). pgasc111(ET1, ST2) :on_or_after(ET1, ST2), pgasc112(ST, ET) :current_year(CY), ST = D1/M1/Y1, ET = D2/M2/Y2, Duration #> 0, Duration #=< 2, date_diff(ST, Duration, ET), on_or_after(18/6/CY, ST), on_or_after(ET, 1/7/CY), working_day(ST), working_day(ET). Figure 4. Constraint fragment for pgas. pgasc111 simply constrains the consecutive import and create actions (block 1 – actions 1 and 2) so that the second cannot commence before the first has been completed. pgasc112 constrains the start and end times for the create action to be between 18 th June and 1st July of the current year and the non-zero duration of this action to be no more than two days. Furthermore the start and end times must not fall on a weekend or public holiday. The comparison operators #> and #=< are built into CLP(FD) and apply to variables that range over finite domains of integers. The conditions date_diff, on_or_after and working_day are themselves simple CLP(FD) programs that involve translating between dates and serial numbers, the latter also being domain variables. Assuming that the import action was completed on 19 th June, and that the constraints are set to run in real time, the constraint engine will compute the possible times of all remaining actions and, in particular, the possible start and end dates of the following create action. It displays the possible dates on the screen, a fragment of which is displayed below: June July 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 2 3 4 5 S S M T W T F S S M T W T F S S M T W T F S import(mscdb, nxtsess(session), pgs, st1, et1) create([pgs(session)], pgs(msc_student), st2, et2) et1 st2 " et2 Assuming that the role-holder actually commences the create action on 23rd June. By clicking on the appropriate cell in the row marked with the diamond, the start time of the create action will be instantiated to 23rd June in the system, the constraints will be re-run and the display will be updated to indicate the new possible end times for the create action (24 th or 25th June): June 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 import(mscdb, nxtsess(session), pgs, st1, et1) create([pgs(session)], pgs(msc_student), st2, et2) 2 July 3 4 et1 st2 et2 " In fact, it is perfectly possible for the role-holder to employ this portal tool in “what-if?” mode, experimenting with various start times and exploring the repercussions on the times of remaining actions. Constraints are not only concerned with temporal variables but also with the attributes of artefacts that the role-holder is involved in creating. Each artefact dealt with by a role-holder will be amongst her ontology variables. The following fragment of code for role-holder “hods” (the Head of Department’s secretary) illustrates the handling of one of the attribute constraints of a role-holder: ontology(hods, own, [jobadvert, st1, st2, st3, et1. et2. et3]). ontology(hods, pub, null). action(hods, block1, 1, create(null, jobadvert, st1, et1)). action(hods, block1, 2, export(advertsdb, jobadvert, latestad, st2, et2)). constraint(hods, task1, 1, hods123(jobadvert, [type(txt)]). hods123(Artefact, ConstraintList) :Handles = [name(N),type(Ty),tool(Tl),owner(Ow),Rights(R),scndryAtts(Scnd)] establish_handles(Handles, ConstraintList), cross_check(Handles), Artefact = art(N, Ty, Tl, Ow, R, Scnd). 5 establish_handles(Handles, ConstraintList) :onList(Handles, Handles, ConstraintList), infer(Handles, Handles), default(Handles, Handles), infer(Handles, Handles), ask(Handles, Handles). onList([], Handles, ConstraintList). onList([H|Hs], Handles, ConstraintList) :member(H, ConstraintList), onList(Hs, Handles, ConstraintList). onList([H|Hs], Handles, ConstraintList) :onList(Hs, Handles, ConstraintList). infer([], Handles). infer([type(T)|Hs], Handles) :member(tool(Tl), tool(Tl, TypeList, _, _, _, _), member(T, TypeList), infer(Hs, Handles). infer([tool(Tl)|Hs], Handles) :member(type(T), tool(Tl, TypeList, _, _, _, _), member(T, TypeList), infer(Hs, Handles). infer([H|Hs], Handles) :infer(Hs, Handles). ask([], Handles). ask([H|Hs], Handles) :\+ ground(H), write(‘Please enter the attribute for ‘), write(H), write(‘ : ‘), read(H), infer(Handles, Handles), ask(Hs, Handles). The artefact jobadvert is characterised by its attributes, which are accessed via a set of handles. 6 Related Work The development of portals has proceeded in three general directions, which may be classified as the ‘business’ approach, the ‘specialised community’ approach and the ‘web-technology’ approach. Analysts and portal developers including major software developers such as IBM and Sun Microsystems predominantly undertake the business approach to portal development. Portals developed by this approach can be broadly classified as Internet Portals, the Yahoo!-like portals that, in most cases, support general searches and have sets of preorganised categories of information, and Enterprise Information Portals, or Corporate Portals, the corporate version of enterprises’ internet portals. Special interest groups and communities have also embarked on developing dedicated portals to serve the interest of their members. An example is the Java Architectures Special Interest Group (JASIG), an independent organisation promoting the use of Java technologies and architectures within the higher education community. One of the activities of the group is to develop and share a free, open source, open standard portal for higher education, known as uPortal1. The group’s efforts have produced a number of university portals, developed and deployed by its members [8]. An example of a user community portal is the knowledge acquisition community portal [17]. The portal, known as the KA2 2 portal, is developed based on an ontology as a semantic backbone for accessing and contributing information as well as for developing and maintaining the portal. The ontology presents explicit knowledge that structure all information in different formats for the community, at various levels of granularity. Although not directly concerned with the technical development of a portal, there are other community portals that are built merely to serve their intended communities. The BDD Portal [14] is a community portal developed to serve those researching binary decision diagrams. It provides common features of a portal such as links to resources, literature search and a system that allows use and evaluation of decision diagram heuristics. The web-technology approach is by no means an attempt to specifically develop portals, but the technical aspects of this approach are usually consolidated in a portal. The most prominent research area in this approach is search. The problem of finding precise information when using general-purpose search engines such as Google has prompted research on developing new search algorithms [2]. A good example is CiteSeer [7], a web site for seeking papers in all areas of computer science. CiteSeer is an autonomous citation indexing system, which indexes academic literature in electronic formats. Other techniques attempted include agent-based browsers [10], [12], adaptive web sites [15], machine learning [13], declarative specification [5] and the Semantic Web [3]. The latter is an attempt by the W3C to make the Web more intelligent so that trivial tasks could be delegated to intelligent software agents, the key components of the Semantic Web. 1 http://mis105.mis.udel.edu/ja-sig/uportal/ 2 http://ka2portal.aifb.uni-karlsruhe.de 7 Conclusions and Further Work Our Workspace Portal framework is based upon the dual deployment of procedural and declarative elements in the characterisation of a multi-agent enterprise. The agents' plans making up the procedural element can be viewed as the outcomes of compiling and concretizing some portion of the enterprise's internal logic. The residual uncompiled portion of that logic then makes up the declarative constraints attending the plans. The balance between the two elements is not prescribed by the framework, allowing flexibility in its application to different forms of enterprise. Our use of finite-domain constraint evaluation has, we believe, the potential for novel contributions to the modeling of collaboration. In particular, it opens the way for modeling a diversity of mechanisms concerned with the avoidance, detection, localisation or amelioration of dysfunctionality. Dysfunctionality, meaning the failure to achieve enterprise goals, concerns not only the nature of the artefacts produced by the agents but also their scheduling, which is why our framework includes both artefactual and temporal variables in the agents' ontologies, actions and constraints. Space limitations preclude detailed discussion in this paper of other features in our framework dealing with the agent hierarchy through which roles may be assigned, retracted or delegated. These features offer interesting possibilities for the control of agents' responsibilities in their response to constraint failures, which we intend to develop further in future work. We intend also to investigate the sharing of derived knowledge within the organisation – one of the key aims of Knowledge Management. References 1. Ahmad M. S., Hogger C. J., Kriwaczek F. R., Implementing Collaborative Agent System using Prolog, Proceedings of the International Conference on Information Technology and Multimedia at UNITEN, (2001). 2. Arasu A., Cho J., Garcia-Molina H., Paepcke A., Raghavan S.: Searching the Web, ACM Transactions on Internet Technology, Vol 1, No. 1, (2001). 3. Berners-Lee T., Hendler J., Lassila O., The Semantic Web, Scientific American, Vol. 284, No. 5, May 2001. 4. Davydov M. M.: EIP: The Second Wave, Intelligent Enterprise Magazine, Vol. 3 - No. 4, (2000). 5. Fernandez M., Florescu D., Kang J., Levy A., Suciu D., Catching the Boat with Strudel: Experience with a Web Site Management System, Proceedings of the ACM SIGMOD, International Conference on Management of Data, (1998). 6. Firestone J. M.: Defining the Enterprise Information Portal, Executive Information Systems Inc., White Paper No. 13, (1999). 7. Giles C. L., Bollacker K. D., Lawrence S., CiteSeer: An Automatic Citation Indexing System, Third ACM Conference on Digital Libraries, (1998). 8. Gleason B. W., Boston College University-Wide Information Portal - Concepts and Recommended Course of Action, (2000). 9. Grammer J., The Enterprise Knowledge Portal, Stay Informed: Current Issue Article, (2000). 10.Joachim T., Mitchell T., Freitag D., Armstrong R.: WebWatcher: A Tour Guide for the World Wide Web, IJCAI '97, Vol. 2, (1997). 11.Kidwell J. J., Vander Linde K. M., Johnson S. L., Applying Corporate Knowledge Management Practices in Higher Education, EDUCAUSE Quarterly, No. 4, (2000). 12.Lieberman H., Van Dyke N., Vivacqua A., Let's Browse: A Collaborative Web Browsing Agent, (1997). 13.McCallum A. K., Nigam K., Rennie J., Seymore K.: Automating the Construction of Internet Portals with Machine Learning, Information Retrieval, Vol. 3, Issue 2, (2000). 14.Meinel C., Wagner A., WWW.BDD-PORTAL.ORG, Proceedings of the IEEE IWLS 2000, (2000). Available at http://citeseer.nj.nec.com/meinel00wwwbddportalorg.html. 15.Perkowitz M., Etzioni O.: Towards Adaptive Web Sites: Conceptual Framework and Case Study, Artificial Intelligence, Vol. 118, (2000). 16.Shilakes C. C., Tylman J.: Enterprise Information Portals, (1998). Available at http://www.sagemaker.com/Company/WhitePapers/eip_indepth.pdf. 17.Staab S., Angele J., Decker S., Erdmann M., Hotho A., Maedche A., Schnurr H.-P., Studer R., Sure Y., Semantic Community Web Portals, Computer Networks, Vol. 33, (2000). --------- dumped frag -------- Our Workspace Portal is driven by the performance of tasks subject to constraints defining goals. Tasks are programmed sets of actions capable of creating and manipulating artefacts, such as documents and database records. Sets of related tasks make up roles. Role holders work collaboratively by operating upon artefacts in their workspaces and by sharing those artefacts with one another. Collaboration is ensured by their joint compliance with the given constraints. The following sections describe these features in more detail.