|
Date: 2011-06-27, Version 1.9
Credits
Installation and Configuration
Processes
Forms
API Programming
GUI Customization
Communication - SSL (Secure Socket Layer)
Reporting
Search
Timers
WebDav / Webfolder
Misc
A: Beginning with version 6.4 there is a experimental support for the free jTDS JDBC driver. The driver can be downloaded from the jTDS Open Source Project at http://jtds.sourceforge.net. Version 1.2 is required at least. The driver comes in the form of a single jar file named jtds-x.y.jar.
The default-behavior of multiple network-interfaces: the HTTP-server runs on all interfaces. With the parameter
http.ip-address
in the file avw.conf you can restrict the interfaces by entering an ip-adress, where the server should run.
While IPv6 is principally supported in @enterprise, there are some issues in nonessential functions (e.g. the URL-Checker). To avoid those problems, the property
-Djava.net.preferIPv4Stack=true
at the startup of JVM of the server forces the use of IPv4 only. The remaining IPv6 issues will be fixed in a future build of @enterprise 8.0.
If the upgrade has changed some essential @enterprise tables, the application loader is not able to load the application anymore. The only way to resolve this problem is to set the default authorization class
com.groiss.org.PasswdAuth
or put the application authorization class into system classpath.
A: The worklist cache structures do not recognize the new application automatically. You have to restart the server or click "Refresh Org. structures" in the Worklist-Cache Admin Page.
A: There is no straightforward solution for this problem, but it would be possible with "subforms". In each iteration an additional subform can be generated (either manually or by preprocessing) where the agent can add his comments. But making the "older" lines read-only and only the current line read-write would require some additional code.
A: Multiple agents for a task are handled as sequence: when the first agent finishes in the task, it is transfered to the next one, etc. The only difference to an explicitely modeled sequence is that the postcondition is executed only after the last agent has finished the task.
A: The first step must be an interactive task where
- the agent is a user or
- the agent is a role, optionally with an org.unit.
You can start the process if you are the specified user, or if you have the specified role. If an org.unit is given, you must have the role in this org.unit. If the role is a global role, you must have a home role assigned. The org.unit of the home role is used as the org.unit of the process instance.
A: First of all, such a situation is impossible if everything works correct. But it can happen, for example if there are errors in the application code (system steps, etc.) combined with commits in this code. To repair, select the last interactive step of this process whereas XX is the process instance id:
select OID from avw_stepinstance where type=20 and id='XX' and started >= (select max(started) from avw_stepinstance where type=20 and id='XX');
Make this step active whereas OID is the result from the previous query:
update avw_stepinstance set status=5, finished=null where oid = OID;
A: There are several points which should be checked:
- The method does not overwrite the default: @enterprise uses two user-classes, com.dec.avw.core.User is required.
- Email-notification of a user is not activated.
- The user has no email address.
- The user must not be the thread-user, i.e. the user will not get a notification, if he sends a activity to himself.
A: This is a known problem of Firefox 3.x. If third party cookies are forbidden, these cookies are not used during communication between applet and server. The getJar request returns the login page which causes in a ClassFormatError. For solving this problem either allow third party cookies or enter an exception at the cookie settings for the server.
Further information can be found on Mozilla's support page.
A ClassFormatError can also occur when Firefox 3.6 in combination with an older Java plugin is used. In this case please update your Java plugin!
A: Some combinations of Java plugin, browser and/or OS version can result in exceptions (e.g. AccessControlException) when using Process Editor with localhost. A solution for this problem is to start the Process Editor with the hostname instead of localhost.
A: First you need a XHTML document. See http://www.w3.org/MarkUp for details. If you load such a file you have enter the position in the classpath of the server. If a parser error occurs (very likely) the parser messages are useful to fix problems. After successful loading of the file you can modify it in the filesystem and changes in layout, etc. should be visible immediately in every reference to the form (processes, DMS-folders). But if you add fields, you still have to use the replace-HTML function.
A: Yes, it's possible. You should:
A: The document management can be conveniently used for this purpose. The formtype must be "Usable in DMS" by activating the checkbox when the formtype is created. Then you are able to add forms of this type to any folder and edit them.
A: You can change the window size in the settings of the form. There are two input fields for Width and Height where you can enter a window size (e.g. W: 300, H: 400).
A: The mode defines how the subforms are edited and is an attribute of the <tablefield> HTML-Tag. Two modes are available:
- subform: The main form contains a table where each line contains a link to a detail mask. An "Add" button is placed under the table. This mode is the default.
- editable: The main form contains the button "Edit Table". It opens a new window, which allows to edit all lines of the table. You can add and delete lines in this window, too. This mode is useful to edit small tables with only a few columns.
A: If you add or modify a form in @enterprise, the header of the column (fieldname) in the table definition must be empty. After saving these settings, the column is not visible anymore in the superordinate form.
A: Yes, it's possible:
- From the user interface: click on the agent Link in the history
- via the API: use WfEngine.setAgent()
A: You have to write a program, for example a FormEventHandler with an onUpdate() method like this:
public void onUpdate(DMSForm product) throws Exception { WfEngine e = ServiceLocator.getWfEngine(); ProcessInstance pi = e.getProcess(product); if (pi != null) { e.setSubjectToString(pi, product.getField("name") + " " + product.getField("displayName")); } }
A: This is one solution:
- Use a specific user or role "waiter" with a specific task "wait":
.... aUser aTask(aForm); waiter wait(); ...
- Put a preprocessing method on task "wait". The method should set the duedate of the activity-instance.
- Define an escalation-object on task "wait". The escalation-object should call a Java method which finishes the step. A sample method:
import com.groiss.org.User; import com.groiss.util.Settings; import com.groiss.wf.*; public class EscalationTest { public void exec() throws Exception { Settings.log("exec escalation",2); WfEngine e = ServiceLocator.getWfEngine(); User sysadm = (User)ServiceLocator.getOrgData().getById(User.class,"sysadm"); e.setUser(sysadm); ActivityInstance ai = e.getContext(); e.setAgent(ai, sysadm); e.finish(ai); } }
A: You have to change the department in a Java method like this:
WfEngine e = ServiceLocator.getWfEngine(); ActivityInstance ai = e.getContext(); ProcessInstance pi = ai.getProcessInstance(); DMSForm f = e.getForm(pi, "formname"); OrgData orgData = ServiceLocator.getOrgData(); OrgUnit ou = orgData.getById(OrgUnit.class,(String)f.getField("deptfield")); e.setOrgUnit(pi, ou); /* the piece of code can be used as preprocessing for a step to set the department.Change the line e.setOrgUnit(pi, ou); e.setOrgUnit(ai, ou); to set only the department of the step, not the whole process. */
A: The form class is only a container of the available fields. A new form class version is created seldomly. Most of the changes in a form class can be done by the addition of fields, then the class is recompiled and the version is not changed.
A: You can define a timer that restarts the logger, for example to get a new log file every day. You can write your own logger class that keeps more or less files than the standard number of 10. See the examples LogTimer and ZipLogger in the Application Development Guide.
A: Write a FormEventHandler or XHTMLFormEventHandler and implement the onInsert() method, for example:
public class MyformHandler extends XHTMLFormEventAdapter { public void onInsert(DMSForm f) throws Exception { f.setField("f1",val1); } }
A: The method getStatus() returns one of the following:
- STARTED = 0;
- SUSPENDED = 1;
- FINISHED = 2;
- ABORTED = 4;
- ACTIVE = 5;
- WAITING = 6;
- COMPENSATED = 7;
The method getType() returns one of the following:
- BEGIN = 1;
- END = 2;
- IF = 3;
- ELSIF = 4;
- LOOP = 5;
- EXIT_WHEN = 6;
- WHILE = 7;
- PAR = 8;
- ANDJOIN = 9;
- ORJOIN = 10;
- CHOICE = 11;
- CHOICE_BRANCH = 12;
- GOTO = 13;
- TASK = 20;
- SYSTEM_TASK = 21;
- PROCESS = 22;
- BRANCH = 23;
- END_BRANCH = 24;
- SYSTEM_INTERN = 25;
- SYSTEM_WAIT = 26;
- PARFOR = 27;
- ENDFOR = 28;
- BATCH = 29;
See the APIdoc for further description of the states and types.
A: The structure of a process instance is as follows:
activityInstance -> [ parfor_1 .. -> [subprocess_1 ...->]] main_process
The relation shown as arrow is a parent relation between activity instances. The getParent() method returns the target of this relation. The method getProcessInstance() returns the next activity instance with type PROCESS (not parfor) that can be found when calling getParent() repeatedly. The method getMainProcess() returns the root of the activity instance tree. For detailed information please refer to chapter Methods for process instances in handbook Application Development Guide.
A: The file classes/style.prop contains all style-values which are substituted by default (if the user has not changed the style via GUI). You can edit these values for changing colors, sizes etc. The corresponding user-dependent values are saved in the database as user properties. Substituting the whole schema (not only colors, sizes etc.) is possible by creating an own css-file "avwlocal.css", stored in APPLICATION-PATH\classes\lang\default\html\local (e.g. C:\enterprise\classes\lang\defautlt\html\local).
A: Copy the two masks /contrib/EscalationMask.html and /contrib/NotificationMask.html from masks.jar in @enterprise versions less than or equal to 7.0 or ep.jar in @enterprise versions greater than or equal to 8.0 to the classes/contrib folder and edit them there.
A: Change the definition of the process start link in the standard.xml file, add the parameter "formTarget":
<attrib key="href" value="../servlet.method/ com.groiss.dms.html.SendDoc.startProcess?formTarget=_self"/>
A: You can remove all headers, then the standard header will appear.
A: Go to "Folder properties" of the folder. Click on "Table Design", add a new column with ID "form.fieldname" where "form." is a fixed string and "fieldname" is the name of a form field. The new column will contain the content of the given form field. If a document in this folder does not contain such a form field, the column is left empty for this document.
A: Copy the file LoginMask.html from the jar file masks.jar in @enterprise versions less than or equal to 7.0 or ep.jar in @enterprise versions greater than or equal to 8.0 (in the lib directory) to a /mask/local folder and edit it there.
A: Well, this is a little tricky problem. We recommend to use the compatibility-mode of IE8 by adding following line into your html-file header: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
A: Following problems are known:
- Internet Explorer 6 does not support this represenation mode
- Internet Explorer 7 supports gradients only, but has problems to display gradients in buttons
- Internet Explorer 8 supports gradients only
- Because of using box-shadows it is possible that the window scrolls e.g. in title-style
A: Yes, @enterprise provides a SSL Implementation for HTTP, POP, IMAP and RMI. Further information can be found in the Installation Guide.
A: To manage your certificates, it is necessary to define a Java key store in the configuration. Passwords for the key store and for the servers private key have to be chosen there. The passwords must have a length of at least 6 characters and are not allowed to include special characters.
A: First of all, you have to generate a key pair. This key pair is a self signed certificate, too. To get a official signed certificate, download the certification request and send it to a certificate authority. As response you will get an official signed certificate. Import this certificate into the @enterprise key store. Ensure that you define the same alias as the key pair has.
A: Maybe the java/bin directory is not in the path so that @enterprise can't find the java keytool to manipulate the key store. If you don't want to append the java/bin to the path, set the avw.java.compiler property in the configuration file to the appropriate java/bin directory. Another possible problem is that the configured passwords are to short, include special characters or are wrong for the specified key store.
A: To import a certificate chain, append the signing certificates at the bottom of your certificate. For an example, if you get a certificate C0 which is signed by Certificate Authority CA1 with its certificate C1 which is signed by CA2 with C2 and so on, you have to import the certificate as a chain like this : C0 C1 C2 C3... Cn
A: @enterprise can be configured to request and check client certificates, which have to be signed by trusted certification authorities. To add the certificate of a trusted organization, use the import function and choose the "Certificate of a trusted organization" option.
A: Be sure that the file obsolete.jar in @enterprise 8.0 or monitoring.jar in @enterprise 7.0 is in your classpath. Log in as sysadm and enter following URL in your browser:
http://'server':'port'/wf/servlet.method/ com.groiss.reporting.MigrateStoredQueries.migrateQueries
A: You need the right "Statistics". You can assign this right to a user or a role.
A: For some fields (Process-Agent and Task Agent) it is possible to select " = Task:Agent at execution" as condition. In your case it would be necessary to add a "user-defined" condition to the query. It looks like: form_vacation_1.employee=&USER
where "vacation" is the id of the form, "1" is the form version, "employee" the name of the form field containing the user. "&USER" is a placeholder for the user executing the query. The table form_vacation_1 is joined to the query if a field of this form is in the field list of the query.
A: An overview of standard-timers is given in the System Administration manual.
A: Timers with loops should contain a try-catch block within the loop-block, e.g. when reading a resultset. Additionally the command BeanManager.commit(); should be written at the end of the try-block and BeanManager.rollback(); at the end of the catch-block.
A: The option Basic-Auth in WebDAV must be activated. Further details can be found in @enterprise User Manual in section Web Folder->WebDrive.
A: This problem happens in IE 8 due to the fact that microsoft has removed the support for webfolders in that browser version (see MS-Blog). Investigations showed that the only known stable solution for webfolder support in IE 8 nowadays is the use of the commericial webdav-client WebDrive. This tool allows you to mount @enterprise as a drive. The webdav-folder-urls in @enterprise are then referencing that drive and therefore work again as used in IE 7. A description about the configuration of WebDrive can be found in @enterprise User Manual. In @enterprise 8.0 we use webdav-urls for the documents in the DMS. Therefore it is possible to edit ms-office-documents directly from the browser (if ms-office is configured accordingly - see Installation- and Configuration-Guide section 3.11 DMS). This will reduce the need of the use of webfolder support, but cannot fully replace it (e.g. if you have documents which must be edited by tools which have no built-in webdav client).
A: First you have to select the command-window of the server. Then press the keys CTRL + BREAK to get the stack trace.
A: The APIdoc can be found in our customer login section (KULI). Here you can download the files docu_en.jar and docu_de.jar. Put the files into the classpath of your @enterprise installation (lib-directory) and restart the server. Now you can access it by clicking on the help-icon in @enterprise. If you want to extract the APIdoc, you have to unzip the file docu_en.jar.
A: The JVM has a bug within the hot-spot compiler when using the server version. The problem can be avoided by replacing the option -server with -client at the java call.
We thank our customers and partners for input to this FAQ, especially Behrad Sadoughian for his many suggestions.
|