473,549 Members | 2,701 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Workflow runtime ignores my (correctly loaded) Custom tracking ser

I've added 2 tracking services to the wf runtime; one is the standard
SqlTrackingServ ice:
trackingService = new
SqlTrackingServ ice(<trackingCo nnectionString> );
<workflow Runtime>.AddSer vice(trackingSe rvice);

trackingService .IsTransactiona l = false;
trackingService .UseDefaultProf ile = true;
This works just fine.

The other provides an "in memory" tracking service/channel which doesn't
save anything to any permanent store.

<workflow Runtime>.AddSer vice(new
NonPersistentTr ackingService(t his));

This specifies it's own in memory tracking profile. It passes on any
workflow/activity tracking events, that it gets from the workflow runtime, to
a client app (by publishing events that the client subscribes to).
This works just fine when I start workflows "from the beginning" - i.e. with
this method:

<Workflow Runtime>.Create Workflow(<workf low Type>).Start();

The GetProfile()/TryGetProfile() , GetTrackingChan nel() and Send() methods
all get called as expected.

However, if a previously passivated workflow (that had been previously
Suspended/Delayed) is loaded into a new workflow runtime, the following
happens:
1. The Workflow runtime events all work as expected (WorkflowLoaded ,
WorkflowResumed , WorkflowSuspend ed etc ...)
2. The SqlTrackingServ ice works as expected - when the Delay Timer
expires/workflow is Resumed, it carries on recording all the subsequent
workflow/activity events.

3. BUT The custom tracking service does nothing! It IS started (I verified
this by invoking the Start() method that it inherits from it's base
WorkflowRuntime Service class - this throws a "service already started"
exception). But the workflow runtime doesn't call it's
GetProfile()/TryGetProfile() , GetTrackingChan nel() or Send() methods.

When passivated workflows are loaded into a new runtime, the "out of the
box" SqlTrackingServ ice presumably does something to force the workflow
runtime to call it's GetProfile()/TryGetProfile() , GetTrackingChan nel() and
Send() methods.
How do I get my custom tracking service to do the same??

Any help would be greatly appreciated.
Apr 30 '07 #1
3 2507
Hello learner,

I would like to get the whole project so that I can reproduce the issue.

You could send the project to my email. To reach my real email, please
remove the ONLINE in my display email.

Sincerely,

Wei Lu
Microsoft Online Community Support

=============== =============== =============== =====

When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.

=============== =============== =============== =====
This posting is provided "AS IS" with no warranties, and confers no rights.

May 1 '07 #2
I have had another look at the problem and found the cause:

This problem occurs if the LoadingInterval parameter on the
SqlWorkflowPers istenceService( ) constructor is changed in any way after a
workflow has started.

This behaviour is easy to replicate:

1. Start a workflow in a runtime that uses SqlWorkflowPers istenceService,
SqlTrackingServ ice and any custom tracking service. Everything will works as
expected.
2. Stop the runtime when the workflow (I’m using a sequential one) is
part way through.
3. Change the LoadingInterval parameter – making it either higher or
lower, it makes no difference.
4. Start the runtime again with the altered SqlWorkflowPers istenceService.
5. When the previously persisted workflow is loaded, it picks up
correctly from where it left of, all the workflow runtime events will work as
expected and the SqlTrackingServ ice will do what it should. However, the
custom tracking service won't get called by the runtime. As I mentioned in my
original post, this service IS started. But the workflow runtime won't call
it's GetProfile()/TryGetProfile() , GetTrackingChan nel() or Send() methods, so
it never starts tracking.
6. If, however, you perform the previous steps but omit step 3, the
custom tracking service WILL get called and it will work as expected.
7. Furthermore, any NEW instances of the workflow will be tracked
correctly by the custom tracking service.
Since changing the LoadingInterval parameter has no effect on the
SqlTrackingServ ice – it gets called as expected, this behaviour is presumably
not “by design”. However, it only effects the custom tracking of workflows
that are partially completed when the LoadingInterval parameter is changed,
so it’s not a serious problem.

"Graham" wrote:
I've added 2 tracking services to the wf runtime; one is the standard
SqlTrackingServ ice:
trackingService = new
SqlTrackingServ ice(<trackingCo nnectionString> );
<workflow Runtime>.AddSer vice(trackingSe rvice);

trackingService .IsTransactiona l = false;
trackingService .UseDefaultProf ile = true;
This works just fine.

The other provides an "in memory" tracking service/channel which doesn't
save anything to any permanent store.

<workflow Runtime>.AddSer vice(new
NonPersistentTr ackingService(t his));

This specifies it's own in memory tracking profile. It passes on any
workflow/activity tracking events, that it gets from the workflow runtime, to
a client app (by publishing events that the client subscribes to).
This works just fine when I start workflows "from the beginning" - i.e. with
this method:

<Workflow Runtime>.Create Workflow(<workf low Type>).Start();

The GetProfile()/TryGetProfile() , GetTrackingChan nel() and Send() methods
all get called as expected.

However, if a previously passivated workflow (that had been previously
Suspended/Delayed) is loaded into a new workflow runtime, the following
happens:
1. The Workflow runtime events all work as expected (WorkflowLoaded ,
WorkflowResumed , WorkflowSuspend ed etc ...)
2. The SqlTrackingServ ice works as expected - when the Delay Timer
expires/workflow is Resumed, it carries on recording all the subsequent
workflow/activity events.

3. BUT The custom tracking service does nothing! It IS started (I verified
this by invoking the Start() method that it inherits from it's base
WorkflowRuntime Service class - this throws a "service already started"
exception). But the workflow runtime doesn't call it's
GetProfile()/TryGetProfile() , GetTrackingChan nel() or Send() methods.

When passivated workflows are loaded into a new runtime, the "out of the
box" SqlTrackingServ ice presumably does something to force the workflow
runtime to call it's GetProfile()/TryGetProfile() , GetTrackingChan nel() and
Send() methods.
How do I get my custom tracking service to do the same??

Any help would be greatly appreciated.
May 9 '07 #3
Hello Graham,

Thank you for your providing. Your solution will benifit other members.

If you have any question, please feel free to let me know.
Sincerely,

Wei Lu
Microsoft Online Community Support

=============== =============== =============== =====

When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.

=============== =============== =============== =====
This posting is provided "AS IS" with no warranties, and confers no rights.

May 10 '07 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

6
4170
by: Paolo Losi | last post by:
Hi all, I'm pretty new to the python language so please excuse me if this is FAQ... I'm very glad to be part of the list! :-) I'm looking into a way to implement a generic workflow framework with python. The basic idea is to use python scripts as the way to specify workflow behavior. The framework should not only use scripts as a...
1
4317
by: Equis Uno | last post by:
Hi there, I downloaded OWB_9.2.0.2.8_linux.tar.gz from here: http://otn.oracle.com/software/products/warehouse/index.html In the above download I found OWB installation documentation. In the OWB installation documentation, I see evidence that Oracle Warehouse Builder (runtime portion) makes use of "Oracle Workflow".
9
1444
by: Jon Rea | last post by:
I hav been looking for the last 2 hours on how to do this without much luck. Im going to give a simplifed model of the problem i have. I want a collection class that can holds a series or objects, for arguments sake, lets make these fruit : apple orange bannana
0
3930
by: Isz | last post by:
PROBLEM: This problem is related to the postback and handling events correctly. BACKGROUND: I have a datalist which acts as a tabbes list with horizontal layout. This datalist is bound to a strogly typed collection I called TabCollection which is a collevtion of items called tab. Each tab is as follows:
4
5806
by: ThunderMusic | last post by:
Hi, I have a custom form that works fine when I debug it or run it in release mode but cannot be loaded in the designer... Actually, it can be loaded in the designer when no control is on it, but the resizing tool (in the designer) is offset both horizontally and vertically and when I put a control on it, as soon as I save, the designer...
6
4269
by: Jon Davis | last post by:
Is it possible to have a custom dialog for setting the properties of a custom WF activity? For example, in the designer, if you drag-and-drop a custom control onto the flow chart, I would like to be able to double-click the flow node and open a pre-built modal dialog box that sets the node's properties, rather than jump into the code-beside...
1
4554
by: =?Utf-8?B?bGludXgyazg=?= | last post by:
Hi, I'm testing Web Approval Starter Kit with Visual Studio 2005 over Windows XP SP2, .NET Framework 3.0 & 3.5 versions installed. When try to complete an activity, the following error araises: System.InvalidOperationException was unhandled by user code Message="Workflow with id \"47773eee-c181-44a9-b045-30f5b7b1de51\" not
0
1697
by: creo | last post by:
OS: Windows XP (32 bit) NET: .Net 2.0 runtime DevEnv: VS 2008 C++ and C# I am attempting to use an unmanaged C++ library to load a managed C# assembly and hand off control. I have the following in my C++ routine: ICLRRuntimeHost* Clr = NULL; HMODULE hMsCorEE = LoadLibraryA("mscoree.dll"); PROC_CorBindToRuntime* ...
4
1861
by: oritne | last post by:
Hi all, I have an application that hosts a state machine workflow runtime. Once the workflow starts running, I want it to send a message to the hosting application each time it finishes a task (but still doesn't complete running). The application will catch that message, just as it catches the events defined on the workflow runtime (as...
0
7451
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
7959
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
0
7810
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
0
6044
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development projectplanning, coding, testing, and deploymentwithout human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
1
5369
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupr who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
3501
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
0
3483
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
1944
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
0
764
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.