Copyright © 2006 Together Teamlösungen EDV-Dienstleistungen GmbH
| |
Q: | Is there any means for suggesting additional Q&As? I'm sure I can think of some - perhaps I'll just send them as suggestions to the mailing list as/when I think of them (... I'll start with, maybe "How do I contribute to this FAQ" should be added ;). |
A: | Usually, a question contains part of the answer :)
|
Q: | Does Shark (both Admin and Client) run under a J2EE appserver? |
A: | Shark is able to work in any environment, and thus in EJB container. You can use already existing EJB wrappers for shark, or you can write your own wrappers around shark. Shark Swing Admin and Shark WEB Client are not the part of engine, but a client applications showing the engine capabilities. These applications can use shark directly as a library, through existing EJB wrappers or even through WEB Service wrappers based on EJBs. |
Q: | Can Reports be generated by using Shark? Our requirement is to query either a table/memory and generate reports based on the status of all activities, whether finalized or in progress, so is there any 'state capturing mechanism' that Shark offers? |
A: | You can perform various queries on shark by using its
standard OMG client interface. I.e. you can search for the process
instances for a definition whose state is closed, you can search
for all activities from a process instance that are in state
You can read OMG spec. It defines possible queries, and we extend the possibilities a little by including queries by definition Ids. |
Q: | While connecting, sometimes I can login ,but sometimes can not! It says Invalid username or password. Why? |
A: | If you are using shark admin application (started by runSA script), and if shark is configured to use DODS's UserGroup plug-in API, by default you can only log-on as username="admin", password="enhydra" (the default value can be set inside SharkClient.conf). After you log-in with administrative username/password, you can create additional users/groups and afterwards use these values to log on.. |
Q: | Regarding the usage of Shark Swing Client. I've taken a look of the source code of SharkSwingClient. It seems only the client side needs a Shark Server to connect to, right? |
A: | The SharkSwingClient can be used in POJO, EJB or WebService mode - when used in POJO mode it does not need server since it is then using shark as a library. In other cases, it needs server to run. |
Q: | What's the difference between Impl class and Wrapper class? There are object implementation classes such as WfProcessImpl, WfResourceImpl, WfProcessMgrImpl, WfActivityImpl, WfAssignmentImpl, WfResourceImpl. Also the seperately Wrapper: WfProcessWrapper, WfResourceWrapper, WfProcessMgrWrapper, WfActivityWrapper, WfAssignmentWrapper, WfResourceWrapper In the persitent layer,there are also pojos. Then what's the consideration when design these three level objects ? For flexibility? |
A: | Yes, thanks to these three-level object design, shark is very flexible and configurable: * Wrapper objects are protecting core shark kernel objects from a client - client never gets the shark memory, just a wrappers around in-memory objects. They will also serve when we define security API to prevent some users of doing unallowed stuff,... * Impl objects are the core of the shark's kernel, and they are actually doing the job * In persistence layer, Activity, Process, ... objects are used for storing runtime information into DB (kernel sets/gets theruntime information to/from DB by the use of these objects)for each type of objects (wrapper, impl and instancepersistenct) there are defined interfaces, and shark can be easily configured touse one or another implementation of wrappers, impl, instpers. ... |
Q: | How can I build a workflow-driven distributed application, with workflow running on a (web-)server somewhere, and worklist clients in a browser somewhere else (local network and/or internet)? |
A: | Usually you need to build the webapp serving the client browser by yourself (or somebody else). When coding this webapp you usually encapsulate the workflow engine with your webapp, meaning that your clients don't see anything that looks like "shark". I bet they will be lucky if you do so, because shark is a workflow ENGINE, not a wonderful presentation layer with golden sparks all over. What you webapp will do is start a shark engine. This engine may share the same database with many other shark instances (e.g. the swing client, or the jsp client). Of course, every toolagent or process will run in the shark instance that's currenlty using this process or toolagent. For us humans it looks like shark "processes" a workflow, but what one instance does is changing a lot of database values and call tool-agents if needed. so a "running" process is just a database entry of a process marked "running". And as a result, all other sharks using the same database can perform any action as long as a user (or application) requested it for this instance. If you want to happen a specific action on a specific server (e.g. because this server is the only one that has connection to a special service) you could write a tool-agent connecting to this server (e.g. using RMI or EJB's,or CORBA). Or you use the corba api and connect to a running shark instance (see the corba client for details). |
Q: | I want to define on a sub-flow some Extended Attributes, but how can I access them? It seems that the Subflow is always entered automatically, independently the Start-Mode is set. I need this do have a "Subflow-Call" with a different number of variables - this should be defined in the extended Attribute-List and in the Subflow itself all given Attributes should be handled, as if they where a Variable Argument List. |
A: | Subflow activities are automatically executed by shark, and client app can't control this. Also, when you define a subflow activity in XPDL, you have to provide the actual parameters for the formal parameters of the underlying process. Recently, we introduced so called "remote" subflow activities, which may be used along with newly defined Wf-XML internal API for the remote process calls. Such subflow activities, won't have formal parameters, but only actual ones, because the actual definition of the underlying process is on some other system. However,this doesn't solve your problem.I think you need to redesign your XPDL, or maybe to make your toolagent(s) that will be used to instantiate processes from other definitions. |
Q: | What's the role of AssingmentManager interface? The documentation of Assignment manager implementation isn't very clear. It is suggested that the standard implementation is not usefull. The History Related implementation is said to use 'extended attributes' in xpdl without some doc on what those extended attribute are. And the straight participant mapping seems less than usefull. Can somebody explain me more clearly the role of this interface. Is it, as i understood, this interface which will map xpdl participant to real user (In this case, does some implementation map a role participant to the list of users taken from the usergroup manager) or is the role of this interface completly different? |
A: | Standard implementation is useful in particular use cases when you use shark's UserGroup API along with ParticipantMapping API.HistoryRelated impl. extends standard implementation, and calculates assignments based on ext. attribs. I.e. you can set that performer that once executed some activity must execute such activity again if it comes again for execution in this particular process instance (if there is a loop in the process definition). Also, you can set that the performer of the activity has to be the one that actually performed some other activity in the process.XPDLStratight .... impl. determines the performer directly by the Id of Participant in XPDL. Also, using this last impl. you can set in XPDL that the performer of activity is some expression that will be evaluated at runtime (depending on process variables).It really depends on people's use cases which assignment manager they will use. Maybe your use case is such that you should writte your own assignment manager impl. that will use the data provided in the assignment manager method call, and determing the assignments based on the info in your own UserGroup Database. |