Service Objects Extended Properties
Hi,
I'm looking for a list of registered keywords and properties
for the Service Objects extended properties.
I found servicetobind and forte_generated, but I'm looking
for the exhaustive set, so that not to interfere with them.
Thanks for any input,
j-paul gabrielli
sema dts
Hi Denis,
it worked now. i had didn't stop SIA completely.
Thanks!!!
-Pavana
Similar Messages
-
Unable to programmatically get content of extended properties in custom control
Hi all
I am facing some problems with a custom control which I applied to the Business Service class form. The goal of this control is to automatically populate the DisplayName property of a Business Service based on two properties which are part of a Business
Service class extension. The control is working fine and gets applied successfully to the Business Service forms.
Also populating DisplayName as well as other OOB Business Service properties works fine, but when it comes to extended properties, it seems as if the instance I am working with in the custom control is not aware of those... However when getting the class
of the given instance and searching propertyCollection, both properties are visible.
It seems so me as if the instance I am working with is just no aware of properties coming from a class extension. I never ran into that when building my own custom forms.
Any thoughts about this?
private void ServicePriceListView_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
//Check if we get an IDataItem
if (this.DataContext is IDataItem)
//Get the IDataItem
inst = (IDataItem)this.DataContext;
IDataItem dataItemClass = inst["$Class$"] as IDataItem;
Dictionary<string, IDataItem> dataItemClassProperties = dataItemClass["PropertyCollection"] as Dictionary<string, IDataItem>;
// dataItemClassProperties contains both extended properties
string displayName = inst["DisplayName"].ToString(); // Works fine
string serviceID = inst["scsmlabid"].ToString(); // Does not find property scsmlabid
string serviceDescription = inst["scsmlabdescription"].ToString(); // Does not find property scsmlabdescription
//Set DisplayName
inst["DisplayName"] = inst["mchserviceid"] + " - " + inst["mchdescription"];
Blog: http://scsmlab.com Twitter:
@scsmlabThe "FormView" object is, for all intents and purposes, your parent form object. You can use FormUtilities.GetFormView() and send pretty much any control from your form as a parameter to that method. It'll send back the top-level FormView object.
(More precisely, the FormView's "Form" property is your parent form object..ie: FormView MyMainForm = FormUtilities.GetFormView(this); MyMainForm.Form;)
With that object you can subscribe to all of the typical FrameworkElement events. If you want to subscribe to the SCSM Console API events, use the FormEvents class and add a handler to MyMainForm.Form using .AddHandler() and .RemoveHandler().
Here's a little primer from Microsoft on the Console form events:
https://technet.microsoft.com/en-us/library/ff461071.aspx -
Hi Andrew...
Service Objects, are, in essence, the central concept of any Forte
application, so I think that every participant in this forum can
probably offer some type of insight on using Forte Service Objects in
their application :).
Any type of shared application functionality is a candidate for
inclusion in a service object. The definition given on page 156 of the
Forte Programming Guide states that "[a] service object is a named
object that represents an existing external resource, a Forte shared
business service that is shared by multiple users, or a service that is
replicated to provide failover or load-balancing. The service object
contains information needed by the service as well as operations that
the service can perform."
Service objects are, imho, the most important concept for building a
successful Forte application, and by far the least well understood. I
suggest spending a good amount of time familiarizing yourself with the
Service Object concept, and then understanding the Service Object
properties (dialog duration, visibility, replication, search paths,
etc.) so that you can build a scalable, robust, and fault-tolerant
system to meet your user requirements. Forte is an incredibly powerful
tool when you understand all of the possibilities you have, especially
those related to Service Objects.
In order to get a better understanding of Forte Service objects and how
they relate to the design and development of your particular system, I
highly suggest participating in the Forte Object-Oriented Analysis and
Design (OOAD) course. You can get more information on the course and
register on-line by visiting the Forte Education website:
http://www.forte.com/Educate/index.htm. Additionally, you can take a
look at the Forte manuals, especially Chapter 8 of the Forte Programming
Guide and throughout the Guide to the Forte Workshops manual.
To answer one of your other questions... You can pass references to
objects from a service object back to a client in Forte (you can also,
for that matter, pass copies of objects - it depends upon your needs).
Again, to get a better understanding of these concepts, I suggest taking
the Forte OOAD class.
I hope this helps! Please let me know if you have any further questions
- I'd be happy to help.
-Katie
Andrew Lowther wrote:
>
We are currently in the process of rearchitecting our software systems
around Forte.
Could anyone tell me what experiences they have had with building a
system using Forte Service objects in a multi-tiered system?
It seems to us that these are intended to be used as high-value
facade-like interfaces which serve as an entry point to the underlying
business object model. Is this correct?
Can we pass a remote object reference back to a client for its
subsequent use? If not, does this mean that we have to build a local,
client-based object model to hold the data returned from the service
object methods?
Any other assistance you can give will be very much appreciated.
Thanks
Andrew Lowther--
Katie Carty
Senior Consultant
Forte Software, Inc.
http://www.forte.com
4801 Woodway Drive, Suite 300E
Houston, Texas 77056
vmail: (510) 986-3802
email: [email protected]
**************************************************Andrew,
We at Per-Se Technologies have developed an approach to alleviate many
"pains" with using service objects. Some things you will soon discover is
that although service objects provide fail-over, load balancing, etc., they
also,
1. Eat up valuable developer time because it takes time to repartition and
start partitions in development mode. In development mode (i.e., running
from the workshops), each developer gets their own copy of all partitions!
2. Limit the use of compiled libraries due to service object references in
TOOL code.
3. Consume valuable server resources because each developer has their own
copy of the partitions.
We have several alternatives to address all of the above problems. I am
currently working on converting a large application so that:
1. All developers share a single set of service objects/partitions. Each
developer doesn't have to wait while their copies of the partitions come
up. Therefore, development time is more fully utilized and server
resources are dramatically freed up.
2. Service objects are completely decoupled from an application.
Therefore, we can compile as much as possible.
You asked some other questions as well: You should always isolate SO
references as much as possible. We do this by using a facade. You can
pass a remote obj. reference to a client for future use.
Take care!
Dustin Breese
Supervising Technical Specialist
Per-Se Technologies
From: Andrew Lowther <[email protected]>
Date: Tue, 24 Feb 1998 16:24:31 -0000
Subject: Service Objects
We are currently in the process of rearchitecting our software systems
around Forte.
Could anyone tell me what experiences they have had with building a
system using Forte Service objects in a multi-tiered system?
It seems to us that these are intended to be used as high-value
facade-like interfaces which serve as an entry point to the underlying
business object model. Is this correct?
Can we pass a remote object reference back to a client for its
subsequent use? If not, does this mean that we have to build a local,
client-based object model to hold the data returned from the service
object methods?
Any other assistance you can give will be very much appreciated.
Thanks
Andrew Lowther -
Folder Extended Properties (EWS+Outlook)
What Im trying to achive is to be able to create a Folder with Extended Properties using EWS and then be able to read these properties from inside Outlook.
Ive verified that it works to add & retrieve extended properties on Folders using EWS, i.e.
var f = new Folder(_svc);
f.DisplayName = "Testing";
f.SetExtendedProperty(EPD.ItqAction, 1);
f.Save(WellKnownFolderName.MsgFolderRoot);
then loading it as following,
PropertySet propset = new PropertySet(PropertySet.IdOnly);
propset.Add(EPD.ItqAction);
f.Load(propset);
or even using SearchFilder.IsEqual()
but these Properties does not appear in OutlookSpy nor MFCAPI, and can't seem to be accessable from Outlook VSTO.
I've tried
myFolder.PropertyAccessor.GetProperty(EPD.ItAction.ToMapiString());
ToMapiString creates a "http://schemas.microsoft.com/mapi/{GUID}/attr-name" string
But this results in a COMException.
Ive heard that named Properties are not supported by Outlook, what is the alternative type definition? And that one should create a Hidden Item in the folder for properties. But haven't been able to find any details on how to create a hidden item (only Hidden
folders w/ attribute 0x10f4).>user defined properties are vanished if they are not defined in the delivery store".
What exactly do you mean? How is that possible?
>I'd recommend asking EWS specific questions on the Exchange dev forums instead
Eugene, I am answering this question in the Outlook dev forum. It is perfectly fine here. If you do not know how to answer it, you do not have to reply. There is no requirement that you answer each and every question asked in the forum.
Dmitry Streblechenko (MVP)
http://www.dimastr.com/redemption
Redemption - what the Outlook
Object Model should have been
Version 5.5 is now available! -
Re: (forte-users) Service Object
what about subclassing it and putting the agent stuff in there
Matthew Middleton Ph: +61 2 9239 4972
Oryx Software Consultant Fax: +61 2 9239 4900
Lawpoint Pty. Ltd. E-mail matthewmwriteme.com
----- Original Message -----
From: Ramarao Pabbaraju <RPabbarajulmimsno.com>
To: <kamranaminyahoo.com>
Sent: Tuesday, February 29, 2000 9:02 AM
Subject: (forte-users) Service Object
Hi,
We have a class X which we would like to use it for service object andalso
to instantiate it locally to call some methods. We would like to have
system agents for the service object, but not for objects instantiated
locally. In other words, if the object is used for service object, only
then we want the agents (customized) to be initialized. How do we find out
whether it is service object in Init method self? Service objectproperties
(like isAnchored) or attributes (given from ServiceObject
properties/initial values window) are set only at the end of init method.
One workaround we could think of is start a task at the end of init method
and also delay the execution of method. Is there any clean way of doing
this?
Thanks in advance,
Ramarao
IonIdea
For the archives, go to: http://lists.xpedior.com/forte-users and use
the login: forte and the password: archive. To unsubscribe, send in a new
email the word: 'Unsubscribe' to: forte-users-requestlists.xpedior.com -
List extended properties on all databases
I need a script that lists/returns all extended properties in all the databases on a SQL Server 2008 Instance.
For example the script below returns the extended property for a single database.
SELECT objtype, objname, name, value
FROM fn_listextendedproperty(default, default, default, default, default, default, default);
However I need a script that returns the extended properties for all databases. Thanks.Hi,
Try PowerShell like below to get the information:
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$s = New-Object ('Microsoft.SqlServer.Management.Smo.Server') "computer\instance"
$dbs = $s.Databases
foreach ($db in $dbs)
$ds=$db.ExecuteWithResults("SELECT objtype, objname, name, value FROM fn_listextendedproperty(default, default, default, default, default, default, default)")
$table = $ds.Tables[0];
foreach ($row in $table)
Write-Host $row.Item("objtype") $row.Item("objname")$row.Item("name")$row.Item("value");
Please check below articles for more information:
http://www.mssqltips.com/sqlservertip/1759/retrieve-a-list-of-sql-server-databases-and-their-properties-using-powershell/
http://social.technet.microsoft.com/Forums/windowsserver/en-US/ff5ae2d3-0923-4240-a532-2d879d9528a6/using-powershell-to-get-data-from-sql-database?forum=winserverpowershell
Hope it helps.
Tracy Cai
TechNet Community Support -
Is it possible to delete extended properties without knowing the id?
Hello,
Can you delete any custom extended properties without knowing their ID?
I took over managing a feature that used EWS to send emails to customers.The current code creates a new GUID, and thus new Extended Property, every time an email is sent.
// Create a custom extended property and add it to the message.
var myExtendedPropertyDefinition = new ExtendedPropertyDefinition(Guid.NewGuid(), "MyGuidId", MapiPropertyType.String);
mail.SetExtendedProperty(myExtendedPropertyDefinition, "MyGuidId");
// Send and save a copy
mail.SendAndSaveCopy();
Is there a way to delete any of the custom extended propeties without knowing the IDs?
Thank youNo you can't do that in EWS you need to know the details of the property you want to Read/Write or delete. EWS has no method of enumerating all extended properties either you would need to use MAPI to do this.
>>The current code creates a new GUID, and thus new Extended Property, every time an email is sent.
I'd question the design of this what where they trying to acheive ? Why not have ths same property with a different Value ? else using an X-header would be better idea at least then it will persist ouside of your Exchange infrastructure and even
inside would be more discoverable.
Cheers
Glen -
Calling a web-service from extended controller
Hello,
We are tying to consume a web-service in extended controller of a page. We created stub files using
*/oracle/d01/oracle/VIS/db/tech_st/11.1.0/jlib/axis.jar* and related jar files found on the E-BS Server.
We are using our stub classes in the extended controller, code gets compiled fine, we have deployed our CO, along with class files
of the stub in
$JAVA_TOP/xxcustom/oarcle/apps/.... folder.
Now when we access the page for which we have extended the controller, we get following error
oracle.apps.fnd.framework.OAException: oracle.jbo.JboException: JBO-29000: Unexpected exception caught: oracle.classloader.util.AnnotatedNoClassDefFoundError, msg=
Missing class: org.apache.axis.client.Service
Seems like server can't find */oracle/d01/oracle/VIS/db/tech_st/11.1.0/jlib/axis.jar* and related jars.
Does anyone know how to fix this issue?
We are using E-BS *12.1.1* instance and JDeveloper version is *10.1.3*
regards, Yoralook in the tutorial the web-client example or the dii interface example... and read all about jaxrpc ...
bye
J -
FIM MA Export errors. There is an error executing a web service object creation.
While checking for the permission, we have figured that the Built-In Synchronization account is being deleted by an Expiration Workflow.
FIM MA Export errors. There is an error executing a web service object creation.
While checking for the permission, we have figured that the Built-in Synchronization account was deleted by an Expiration Workflow
Is there a way to restore. Thanks.I would re-run FIM setup - I think it can re-create this account
If you found my post helpful, please give it a Helpful vote. If it answered your question, remember to mark it as an Answer. -
RE: Re[2]: Service Object events and LockMgr
I think there are a lot to implement a lock manager. If several objects
should be updated in one transaction, the lock manager should be able to
handle rollbacks. Other things like release lock when exception happens,
avoiding dead locks, etc. Most of the features are provided by DBMS, so
I think using a option 2 would be a better solution.
-----Original Message-----
From: Dimitar Gospodinov [mailto:[email protected]]
Sent: Wednesday, July 28, 1999 2:44 PM
To: Peter Sham
Cc: Duncan Kinnear; [email protected]
Subject: Re[2]: Service Object events and LockMgr
Hello Peter,
Wednesday, July 28, 1999, 9:19:10 PM, you wrote:
PS> Hi,
PS> Just wonder exactly how this Lock Manager can be
implemented. Do you mean that you are
PS> going to cache every object that is instantiated from the
database? Or you just cache
PS> the object id, primary key, etc?
PS> Frankly speaking, I won't attempt to due with this kind
of currency coding myself as
PS> the database vendor has spent years in coding just to do this.
PS> Regards.
The second one - you just need some unique value that will identify
the object being locked. You should register with the Lock
Manager only
the objects that you want to lock.
For me, one of the goal of such pattern is to give you some freedom
from the specifics of the database lock mechanism.
Another benefit that I can see is that using such approach you can
always answer to the question: "Can I modify/delete this object?".
Best regards,
Dimitar mailto:[email protected]
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive
<URL:http://pinehurst.sageit.com/listarchive/forte>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>I think there are a lot to implement a lock manager. If several objects
should be updated in one transaction, the lock manager should be able to
handle rollbacks. Other things like release lock when exception happens,
avoiding dead locks, etc. Most of the features are provided by DBMS, so
I think using a option 2 would be a better solution.
-----Original Message-----
From: Dimitar Gospodinov [mailto:[email protected]]
Sent: Wednesday, July 28, 1999 2:44 PM
To: Peter Sham
Cc: Duncan Kinnear; [email protected]
Subject: Re[2]: Service Object events and LockMgr
Hello Peter,
Wednesday, July 28, 1999, 9:19:10 PM, you wrote:
PS> Hi,
PS> Just wonder exactly how this Lock Manager can be
implemented. Do you mean that you are
PS> going to cache every object that is instantiated from the
database? Or you just cache
PS> the object id, primary key, etc?
PS> Frankly speaking, I won't attempt to due with this kind
of currency coding myself as
PS> the database vendor has spent years in coding just to do this.
PS> Regards.
The second one - you just need some unique value that will identify
the object being locked. You should register with the Lock
Manager only
the objects that you want to lock.
For me, one of the goal of such pattern is to give you some freedom
from the specifics of the database lock mechanism.
Another benefit that I can see is that using such approach you can
always answer to the question: "Can I modify/delete this object?".
Best regards,
Dimitar mailto:[email protected]
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive
<URL:http://pinehurst.sageit.com/listarchive/forte>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte> -
Re: Service Object events and LockMgr
On the option that you have considered, I have implemented the same model
in my previous project (using Java/RMI), but I felt that it is more than
what is normally needed for concurrency protection.
I can suggest another option that is worth considering which is in place in
our app for concurrency.
Almost every table in our db has created By, created On, modifed By,
modified On columns. The parent class of all business objects has
attributes that correspond to these four columns. In addition to these
four, there is a fifth attribute (introduced when concurrency was built)
called originalModifiedOn. Upon retrieval from the db, it is set to
modifiedOn value (from the db), during UPDATE, the value in this column is
added part of the WHERE clause. So when the second user tried to do save
the same object, the underlying db update will get a 'zero rows updated'
which is translated into an application error 'possible concurrency
error'. The user re-retreives the now 'stale' object before applying their
edits.
A lot of these things are and can be built into the framework imposing very
little work that each Object needs to do to have concurrency protection.
I am not sure if there is a mention in the Patterns paper of this model,
but it is very easy to implement and supports what is needed.
Kishore Puvvada's Mail
[email protected] on 07/28/99 01:47:00 AM
To: [email protected]@INTERNET
cc: (bcc: Kishore Puvvada/HQ-IS/TAL)
Subject: Service Object events and LockMgr
Hi folks,
We're currently looking at strategies for dealing with the simultaneous
updates to the database from multiple clients (concurrency
management). That is when two (or more) clients load the same object to
edit it, then make different changes and save them to the database.
We have a copy of a Forté document (from the "Patterns" course, I
think) which describes three methods of dealing with this:
1) Lock the database table row as soon as a client select it for editing
and hold the lock until it is saved.
2) Immediately before 'saving' check that the database hasn't changed
(either by reading what's there before updating, or by using a huge
'where' clause that contains all unchanged fields)
3) The Forté "LockMgr" pattern, which uses a service object with notifier
proxies to allow locking and updating notification between the clients.
Option 3 is obviously the most robust method, but it requires a fair
amount of coding and could also be a bottleneck for database reads and
writes.
But I have another option for which I was looking for opinions. What if
we had a "Change Event manager" which broadcast an event every time
a change is made to the database. Each business class would have its
own event. If the event had the object's primary key as a parameter, then
clients editing that particular object type could check to see if the object
currently on screen is the one that changed. That way you could disable
the 'save' until they had refreshed their on-screen data.
It's not particularily elegant, but it's reasonably simple to implement. It
also deals with changes sent across our WAN from other database
servers.
But this option is only worthwhile if you can replicate the "Change Event
manager" SO and still register for an event on the client. Can clients
register for SO events and receive an event generated by any of the SO's
replicates? Or when you register for an SO's event do you register for
only one instance of the SO?
Thanks in advance for any answers.
Cheers,
Duncan Kinnear,
McCarthy and Associates, Email:
[email protected]
PO Box 764, McLean Towers, Phone: +64 6 834 3360
Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
Providing Integrated Software to the Meat Processing Industry for over 10
years
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:
http://pinehurst.sageit.com/listarchive/forte>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>On the option that you have considered, I have implemented the same model
in my previous project (using Java/RMI), but I felt that it is more than
what is normally needed for concurrency protection.
I can suggest another option that is worth considering which is in place in
our app for concurrency.
Almost every table in our db has created By, created On, modifed By,
modified On columns. The parent class of all business objects has
attributes that correspond to these four columns. In addition to these
four, there is a fifth attribute (introduced when concurrency was built)
called originalModifiedOn. Upon retrieval from the db, it is set to
modifiedOn value (from the db), during UPDATE, the value in this column is
added part of the WHERE clause. So when the second user tried to do save
the same object, the underlying db update will get a 'zero rows updated'
which is translated into an application error 'possible concurrency
error'. The user re-retreives the now 'stale' object before applying their
edits.
A lot of these things are and can be built into the framework imposing very
little work that each Object needs to do to have concurrency protection.
I am not sure if there is a mention in the Patterns paper of this model,
but it is very easy to implement and supports what is needed.
Kishore Puvvada's Mail
[email protected] on 07/28/99 01:47:00 AM
To: [email protected]@INTERNET
cc: (bcc: Kishore Puvvada/HQ-IS/TAL)
Subject: Service Object events and LockMgr
Hi folks,
We're currently looking at strategies for dealing with the simultaneous
updates to the database from multiple clients (concurrency
management). That is when two (or more) clients load the same object to
edit it, then make different changes and save them to the database.
We have a copy of a Forté document (from the "Patterns" course, I
think) which describes three methods of dealing with this:
1) Lock the database table row as soon as a client select it for editing
and hold the lock until it is saved.
2) Immediately before 'saving' check that the database hasn't changed
(either by reading what's there before updating, or by using a huge
'where' clause that contains all unchanged fields)
3) The Forté "LockMgr" pattern, which uses a service object with notifier
proxies to allow locking and updating notification between the clients.
Option 3 is obviously the most robust method, but it requires a fair
amount of coding and could also be a bottleneck for database reads and
writes.
But I have another option for which I was looking for opinions. What if
we had a "Change Event manager" which broadcast an event every time
a change is made to the database. Each business class would have its
own event. If the event had the object's primary key as a parameter, then
clients editing that particular object type could check to see if the object
currently on screen is the one that changed. That way you could disable
the 'save' until they had refreshed their on-screen data.
It's not particularily elegant, but it's reasonably simple to implement. It
also deals with changes sent across our WAN from other database
servers.
But this option is only worthwhile if you can replicate the "Change Event
manager" SO and still register for an event on the client. Can clients
register for SO events and receive an event generated by any of the SO's
replicates? Or when you register for an SO's event do you register for
only one instance of the SO?
Thanks in advance for any answers.
Cheers,
Duncan Kinnear,
McCarthy and Associates, Email:
[email protected]
PO Box 764, McLean Towers, Phone: +64 6 834 3360
Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
Providing Integrated Software to the Meat Processing Industry for over 10
years
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:
http://pinehurst.sageit.com/listarchive/forte>
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte> -
Service Object events and LockMgr
Hi folks,
We're currently looking at strategies for dealing with the simultaneous
updates to the database from multiple clients (concurrency
management). That is when two (or more) clients load the same object to
edit it, then make different changes and save them to the database.
We have a copy of a Forté document (from the "Patterns" course, I
think) which describes three methods of dealing with this:
1) Lock the database table row as soon as a client select it for editing
and hold the lock until it is saved.
2) Immediately before 'saving' check that the database hasn't changed
(either by reading what's there before updating, or by using a huge
'where' clause that contains all unchanged fields)
3) The Forté "LockMgr" pattern, which uses a service object with notifier
proxies to allow locking and updating notification between the clients.
Option 3 is obviously the most robust method, but it requires a fair
amount of coding and could also be a bottleneck for database reads and
writes.
But I have another option for which I was looking for opinions. What if
we had a "Change Event manager" which broadcast an event every time
a change is made to the database. Each business class would have its
own event. If the event had the object's primary key as a parameter, then
clients editing that particular object type could check to see if the object
currently on screen is the one that changed. That way you could disable
the 'save' until they had refreshed their on-screen data.
It's not particularily elegant, but it's reasonably simple to implement. It
also deals with changes sent across our WAN from other database
servers.
But this option is only worthwhile if you can replicate the "Change Event
manager" SO and still register for an event on the client. Can clients
register for SO events and receive an event generated by any of the SO's
replicates? Or when you register for an SO's event do you register for
only one instance of the SO?
Thanks in advance for any answers.
Cheers,
Duncan Kinnear,
McCarthy and Associates, Email: [email protected]
PO Box 764, McLean Towers, Phone: +64 6 834 3360
Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
Providing Integrated Software to the Meat Processing Industry for over 10 years
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>Hi,
Just wonder exactly how this Lock Manager can be implemented. Do you mean that you are
going to cache every object that is instantiated from the database? Or you just cache
the object id, primary key, etc?
Frankly speaking, I won't attempt to due with this kind of currency coding myself as
the database vendor has spent years in coding just to do this.
Regards.
Dimitar Gospodinov wrote:
Hello Duncan,
Wednesday, July 28, 1999, 10:31:46 AM, you wrote:
DK> Hi folks,
DK> We're currently looking at strategies for dealing with the simultaneous
DK> updates to the database from multiple clients (concurrency
DK> management). That is when two (or more) clients load the same object to
DK> edit it, then make different changes and save them to the database.
DK> We have a copy of a Forté document (from the "Patterns" course, I
DK> think) which describes three methods of dealing with this:
DK> 1) Lock the database table row as soon as a client select it for editing
DK> and hold the lock until it is saved.
DK> 2) Immediately before 'saving' check that the database hasn't changed
DK> (either by reading what's there before updating, or by using a huge
DK> 'where' clause that contains all unchanged fields)
DK> 3) The Forté "LockMgr" pattern, which uses a service object with notifier
DK> proxies to allow locking and updating notification between the clients.
DK> Option 3 is obviously the most robust method, but it requires a fair
DK> amount of coding and could also be a bottleneck for database reads and
DK> writes.
DK> But I have another option for which I was looking for opinions. What if
DK> we had a "Change Event manager" which broadcast an event every time
DK> a change is made to the database. Each business class would have its
DK> own event. If the event had the object's primary key as a parameter, then
DK> clients editing that particular object type could check to see if the object
DK> currently on screen is the one that changed. That way you could disable
DK> the 'save' until they had refreshed their on-screen data.
DK> It's not particularily elegant, but it's reasonably simple to implement. It
DK> also deals with changes sent across our WAN from other database
DK> servers.
DK> But this option is only worthwhile if you can replicate the "Change Event
DK> manager" SO and still register for an event on the client. Can clients
DK> register for SO events and receive an event generated by any of the SO's
DK> replicates? Or when you register for an SO's event do you register for
DK> only one instance of the SO?
DK> Thanks in advance for any answers.
DK> Cheers,
DK> Duncan Kinnear,
DK> McCarthy and Associates, Email: [email protected]
DK> PO Box 764, McLean Towers, Phone: +64 6 834 3360
DK> Shakespeare Road, Napier, New Zealand. Fax: +64 6 834 3369
DK> -------------------------------------------------------------------------------
DK> Providing Integrated Software to the Meat Processing Industry for over 10 years
DK> -
DK> To unsubscribe, email '[email protected]' with
DK> 'unsubscribe forte-users' as the body of the message.
DK> Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>
I would recommend you to use the following approach (of course if you
do not have some special requirements :) ):
1. You should have a LockManager that will synchronize all clients in
their attempt to modify/delete objects in your application.
2. Each client, when attempts to modify/delete some object, it must
LOCK it using the services provided with the LockManager.
3. The requested operation can be performed only after successful
locking.
4. If a lock can not be obtained (for example if the object is already
locked by some other client) then the operation is aborted.
The details of this pattern depends on your needs. :)
Hope this helps.
Best regards,
Dimitar mailto:[email protected]
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte>-
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/forte> -
Hi,
Is it possible to have a service object checking permanently for events
posted by other service objects? I have not been able to start this type of
object.
Thanks,
Guillermo Turk
To unsubscribe, email '[email protected]' with
'unsubscribe forte-users' as the body of the message.
Searchable thread archive <URL:http://pinehurst.sageit.com/listarchive/>I have something this (please, some patience :-) ):
//Example: handle event (the event is Beep)
interface AlarmListener{
void Beep(String hour); //declare a event handler
//The class that "raise" an event Beep
class Clock{
AlarmListener theAlarmListener; //Referecne to an listener object
//Register an listener object
public addAlarmListener(AlarmListener theAlarmListener){
this.theAlarmListener = theAlarmListener;
private ringAlarm(){
theAlarmListener.Beep("10:00 P.M."); //Raise Beep event
class Guy implements AlarmListener{
public Guy(){
Clock clock = new Clock();
clock.addAlarmListener(this);
//Handle Beep event
void Beep(String hour){
System.out.println("Ohhh, its time of wake up!!!");
//End
But, in this model my source object have only an listener object.
This can be improved by a array, like this:
class Clock{
AlarmListener[] theAlarmListener = new AlarmListener[10];
private int i = 0;
//Register an listener object
public addAlarmListener(AlarmListener theAlarmListener){
this.theAlarmListener[i++] = theAlarmListener;
//More code...
making to a side the limitation of size of an array (although this can be managed somehow if it is necessary), the problem begining to be more and more complex... i.e., it is necessary to create a method for unregister a listener...
And, what about with multi-threads programs??? The addAlarmListener method should be synchronized or something??
It should have an easier way!
PD: I think that I have used the Delegate pattern in conjunction with some other pattern.
PD: Forget my English. It is terrible
Saludos -
Services in extended classic scenarios
Friends,
We have implemented services in extended classic scenario. When we create a shopping cart with two service lines and same product category here is what happens:
The SRM PO has two lines items but in the backend the PO is replicated with one Po line item and the two service lines from the shopping cart. This causes a inconsistency with the SRM PO line item number and R/3 PO line item number.
Please advise. Any help is greatly appreciatedHi Donna,
Is is standard functionnality as the backend PO has item type "D" for service in the first line.
Then for sub item, only limits or services (Id or description) are allowed.
The first line is dedicated to product category.
All sublines belonging to this product category are implemented in the sub item in the service tab.
I have opened an OSS message too but for other services bugs.
Please post SAP answers to update SDN community
Kind regards,
Yann -
Is service object comes default in purchase order
Hi Abapers,
I am a Fucntional consultant. I would like to know whether the service object comes in the Purchase order defauly or any setting is ther behind.
Reg,
AshokHi,
Have you read my question properly. I was asking about Service Object key in Purchase Orders & Purchase Requisitions where we can attach External Documents.
Hope your doubt is clear.
Reg,
Ashok
Maybe you are looking for
-
How do I sync my note from my notepad to iCloud and my other devices
How do I sync my note from my notepad to iCloud and my other devices
-
Do not want attachments embedded - how do I fix this problem?!?!?!
I frequently have to send attachments in my mail messages (jpegs, tiffs, eps). However, every time I send attachments in jpeg, eps and tiff formats the recipient cannot download them. They are either invisible or embedded in the message - which I do
-
How to install Business Content of SAP BW
Hi BW guru's Can anyone tell how to install business content in bw. we have installed central instance , data base instance and bw component then stuck up can any one help where and how to install Business content Thanks in advance Regards Srini--
-
Hello, I have a problem in controlling the relays i developed to two loops for relays one to control solenoid and other to control fans. solenoid loop should be working when fans stops. I am unable to control the loops or may be my developed logic is
-
Minimum Development Landscape for XI
Hello, In most cases the proposed optimum landscape for an XI project is the following: 2 XI servers such that DEV R/3 linked via logical name to XI DEV and PRD R/3 linked via logical name to XI PRD) Asking the customer to buy 2 servers for XI